<?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>126255</bug_id>
          
          <creation_ts>2013-12-26 23:30:23 -0800</creation_ts>
          <short_desc>Base GOwnPtr on std::unique_ptr</short_desc>
          <delta_ts>2014-01-24 02:33:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>127170</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>963073</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-26 23:30:23 -0800</bug_when>
    <thetext>Introduce std::unique_gptr, a GOwnPtr replacement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963075</commentid>
    <comment_count>1</comment_count>
      <attachid>220050</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-12-26 23:38:40 -0800</bug_when>
    <thetext>Created attachment 220050
Patch

Work in progress, relies on C++11 template aliases so this wouldn&apos;t work yet for ports still building with GCC 4.6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963802</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-02 11:33:03 -0800</bug_when>
    <thetext>This works well if std::unique_gptr&lt;T&gt; is a struct that&apos;s derived from std::unique_ptr&lt;T, gobject_deleter&lt;T&gt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963838</commentid>
    <comment_count>3</comment_count>
      <attachid>220243</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-02 12:35:30 -0800</bug_when>
    <thetext>Created attachment 220243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>963839</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-02 12:37:17 -0800</bug_when>
    <thetext>Attachment 220243 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/GNUmakefile.list.am&apos;, u&apos;Source/WTF/WTF.vcxproj/WTF.vcxproj&apos;, u&apos;Source/WTF/WTF.vcxproj/WTF.vcxproj.filters&apos;, u&apos;Source/WTF/wtf/PlatformEfl.cmake&apos;, u&apos;Source/WTF/wtf/PlatformGTK.cmake&apos;, u&apos;Source/WTF/wtf/PlatformNix.cmake&apos;, u&apos;Source/WTF/wtf/gobject/UniqueGPtr.cpp&apos;, u&apos;Source/WTF/wtf/gobject/UniqueGPtr.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.cpp:27:  gobject_deleter::operator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.cpp:32:  gobject_deleter::operator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.cpp:37:  gobject_deleter::operator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.cpp:42:  gobject_deleter::operator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.cpp:47:  gobject_deleter::operator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.cpp:52:  gobject_deleter::operator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.cpp:57:  gobject_deleter::operator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:34:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:39:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:44:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:49:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:54:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:59:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:64:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:69:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:84:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:102:  _gptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WTF/wtf/gobject/UniqueGPtr.h:103:  _out_gptr is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 18 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964405</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-04 08:48:47 -0800</bug_when>
    <thetext>It doesn&apos;t seem right to put this in the std namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964722</commentid>
    <comment_count>6</comment_count>
      <attachid>220243</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-06 12:45:34 -0800</bug_when>
    <thetext>Comment on attachment 220243
Patch

It&apos;s not OK to add things to the std namespace. Patch looks good otherwise though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>964735</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-06 13:23:07 -0800</bug_when>
    <thetext>The idea was to stay closely tied to std::unique_ptr, but avoiding the std namespace makes sense.

Considering that, the name might as well stay GOwnPtr for now, unless anyone else can propose something better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968243</commentid>
    <comment_count>8</comment_count>
      <attachid>221250</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-15 02:36:58 -0800</bug_when>
    <thetext>Created attachment 221250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968293</commentid>
    <comment_count>9</comment_count>
      <attachid>221250</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2014-01-15 05:47:25 -0800</bug_when>
    <thetext>Comment on attachment 221250
Patch

Attachment 221250 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/5201449134850048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>968317</commentid>
    <comment_count>10</comment_count>
      <attachid>221250</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-15 07:26:22 -0800</bug_when>
    <thetext>Comment on attachment 221250
Patch

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

&gt; Source/WTF/wtf/gobject/GOwnPtr.h:83
&gt; +template &lt;typename T&gt;
&gt; +struct GOwnPtr : public std::unique_ptr&lt;T, GObjectDeleter&lt;T&gt;&gt; {
&gt; +    WTF_MAKE_NONCOPYABLE(GOwnPtr);
&gt; +public:
&gt; +    explicit GOwnPtr(T* ptr = nullptr)
&gt; +        : std::unique_ptr&lt;T, GObjectDeleter&lt;T&gt;&gt;(ptr)
&gt;      {
&gt; -        ASSERT(!ptr || m_ptr != ptr);
&gt; -        freeOwnedGPtr(m_ptr);
&gt; -        m_ptr = ptr;
&gt;      }
&gt; +};

I think this can even be something like

template&lt;typename T&gt;
using GOwnPtr&lt;T&gt; = std::unique_ptr&lt;T, GObjectDeleter&lt;T&gt;&gt;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969113</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-17 05:03:51 -0800</bug_when>
    <thetext>Oh, I didn&apos;t know this bug existed :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969117</commentid>
    <comment_count>12</comment_count>
      <attachid>221250</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-17 05:52:03 -0800</bug_when>
    <thetext>Comment on attachment 221250
Patch

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

I wrote a similar patch in bug #127170, but adding GUniquePtr first, instead of replacing GOwnPtr. I planned to replace it in follow up patches. I have some comments/questions about this approach.

&gt; Source/WTF/wtf/gobject/GOwnPtr.h:36
&gt; +struct GObjectDeleter {

GObjectDeleter sounds confusing to me, because it seems like something to delete GObjects, which are refcounted. I prefer something like GLibPtrDeleter or simply GPtrDeleter.

&gt; Source/WTF/wtf/gobject/GOwnPtr.h:77
&gt; +    WTF_MAKE_NONCOPYABLE(GOwnPtr);

Why making it non copyable? I guess this doesn&apos;t allow to use GOwnPtr as return value of a method, no?. My motivation to write my patch was this andersca&apos;s comment:

https://bugs.webkit.org/show_bug.cgi?id=127104#c4

Being a unique_ptr we can make it &quot;copyable&quot;, and use std::move() to transfer the ownership.

&gt; Source/WTF/wtf/gobject/GOwnPtr.h:102
&gt; +        return m_outPtr;

Where is m_outPtr set?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969122</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-17 06:01:27 -0800</bug_when>
    <thetext>Regarding GOutPtr, I think it could be simpler to use a new name for the smart pointer and rename GOwnPtr as GOutPtr and keep using it only for GError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969134</commentid>
    <comment_count>14</comment_count>
      <attachid>221250</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-17 07:29:24 -0800</bug_when>
    <thetext>Comment on attachment 221250
Patch

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

&gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:36
&gt;&gt; +struct GObjectDeleter {
&gt; 
&gt; GObjectDeleter sounds confusing to me, because it seems like something to delete GObjects, which are refcounted. I prefer something like GLibPtrDeleter or simply GPtrDeleter.

Indeed, such names would fit better.

&gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:77
&gt;&gt; +    WTF_MAKE_NONCOPYABLE(GOwnPtr);
&gt; 
&gt; Why making it non copyable? I guess this doesn&apos;t allow to use GOwnPtr as return value of a method, no?. My motivation to write my patch was this andersca&apos;s comment:
&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=127104#c4
&gt; 
&gt; Being a unique_ptr we can make it &quot;copyable&quot;, and use std::move() to transfer the ownership.

GOwnPtr shouldn&apos;t be copyable, just like std::unique_ptr is not copyable, and for good reasons -- having two GOwnPtrs/std::unique_ptrs managing the same pointer would lead to a double free when the second smart pointer is deallocated.

With C++11 the return values are moved, so there&apos;s no need for copying in that case either.

&gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:83
&gt;&gt; +};
&gt; 
&gt; I think this can even be something like
&gt; 
&gt; template&lt;typename T&gt;
&gt; using GOwnPtr&lt;T&gt; = std::unique_ptr&lt;T, GObjectDeleter&lt;T&gt;&gt;;

Yes, template alias can be used now that GCC 4.6 is not supported anymore.

&gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:102
&gt;&gt; +        return m_outPtr;
&gt; 
&gt; Where is m_outPtr set?

This operator returns the reference to m_outPtr. The user should then pass the address of the returned reference to the API call, which then dereferences that address and assigns memory to it, so basically this is executed:

m_outPtr = g_strdup(some_string);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969137</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-01-17 08:28:18 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 221250 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221250&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:36
&gt; &gt;&gt; +struct GObjectDeleter {
&gt; &gt; 
&gt; &gt; GObjectDeleter sounds confusing to me, because it seems like something to delete GObjects, which are refcounted. I prefer something like GLibPtrDeleter or simply GPtrDeleter.
&gt; 
&gt; Indeed, such names would fit better.
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:77
&gt; &gt;&gt; +    WTF_MAKE_NONCOPYABLE(GOwnPtr);
&gt; &gt; 
&gt; &gt; Why making it non copyable? I guess this doesn&apos;t allow to use GOwnPtr as return value of a method, no?. My motivation to write my patch was this andersca&apos;s comment:
&gt; &gt; 
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=127104#c4
&gt; &gt; 
&gt; &gt; Being a unique_ptr we can make it &quot;copyable&quot;, and use std::move() to transfer the ownership.
&gt; 
&gt; GOwnPtr shouldn&apos;t be copyable, just like std::unique_ptr is not copyable, and for good reasons -- having two GOwnPtrs/std::unique_ptrs managing the same pointer would lead to a double free when the second smart pointer is deallocated.
&gt; 
&gt; With C++11 the return values are moved, so there&apos;s no need for copying in that case either.

Yes, but with this patch using WTF_MAKE_NONCOPYABLE the compiler fails when using a GOwnPtr as return value of a function even using std::move(). Or it done differently and I don&apos;t know how? C++ is hard.

&gt; &gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:83
&gt; &gt;&gt; +};
&gt; &gt; 
&gt; &gt; I think this can even be something like
&gt; &gt; 
&gt; &gt; template&lt;typename T&gt;
&gt; &gt; using GOwnPtr&lt;T&gt; = std::unique_ptr&lt;T, GObjectDeleter&lt;T&gt;&gt;;
&gt; 
&gt; Yes, template alias can be used now that GCC 4.6 is not supported anymore.

Didn&apos;t know what template alias was, I&apos;ll try that way.

&gt; &gt;&gt; Source/WTF/wtf/gobject/GOwnPtr.h:102
&gt; &gt;&gt; +        return m_outPtr;
&gt; &gt; 
&gt; &gt; Where is m_outPtr set?
&gt; 
&gt; This operator returns the reference to m_outPtr. The user should then pass the address of the returned reference to the API call, which then dereferences that address and assigns memory to it, so basically this is executed:
&gt; 
&gt; m_outPtr = g_strdup(some_string);

The current GOwnPtr is a lot easier to understand, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971558</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-01-24 02:33:17 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 127170 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220050</attachid>
            <date>2013-12-26 23:38:40 -0800</date>
            <delta_ts>2014-01-02 12:35:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126255-20131226233839.patch</filename>
            <type>text/plain</type>
            <size>18744</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxMDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZlNDIyODBlMTI0N2E1NTc5OGM3OThj
Yzc4OWFjYWMyZTRkOWU2YjcuLmE5YmU5OTk5Nzg0YjJiNzg1OTliZTczN2E0ZDQ3OGI5ZjAwZGFm
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMTItMjYgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBzdGQ6OnVuaXF1ZV9ncHRyLCBh
IEdPd25QdHIgcmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiB3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmNwcDogQWRkZWQuCisgICAgICAgIChzdGQ6OmdvYmplY3RfZGVsZXRlcjxH
RXJyb3I+OjpvcGVyYXRvcik6CisgICAgICAgIChzdGQ6OmdvYmplY3RfZGVsZXRlcjxHTGlzdD46
Om9wZXJhdG9yKToKKyAgICAgICAgKHN0ZDo6Z29iamVjdF9kZWxldGVyPEdTTGlzdD46Om9wZXJh
dG9yKToKKyAgICAgICAgKHN0ZDo6Z29iamVjdF9kZWxldGVyPEdQYXR0ZXJuU3BlYz46Om9wZXJh
dG9yKToKKyAgICAgICAgKHN0ZDo6Z29iamVjdF9kZWxldGVyPEdEaXI+OjpvcGVyYXRvcik6Cisg
ICAgICAgIChzdGQ6OmdvYmplY3RfZGVsZXRlcjxHVGltZXI+OjpvcGVyYXRvcik6CisgICAgICAg
IChzdGQ6OmdvYmplY3RfZGVsZXRlcjxHS2V5RmlsZT46Om9wZXJhdG9yKToKKyAgICAgICAgKiB3
dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg6IEFkZGVkLgorICAgICAgICAoc3RkOjpnb2JqZWN0X2Rl
bGV0ZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAoc3RkOjpvdXRfZ3B0cjo6b3V0X2dwdHIpOgor
ICAgICAgICAoc3RkOjpvdXRfZ3B0cjo6fm91dF9ncHRyKToKKyAgICAgICAgKHN0ZDo6b3V0X2dw
dHI6Om9wZXJhdG9yKCkpOgorCiAyMDEzLTEyLTI1ICBUaGlhZ28gZGUgQmFycm9zIExhY2VyZGEg
IDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtOaXhdIEJ1aWxkaW5n
IHdpdGggRFJBR19TVVBQT1JUIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiY2ZhYWVlNjQzODVjOTY5
NmFhMmJjYjUzMTIzYjc3N2JhY2U2ZjU0Li42ZTk1NzNjMThhZGEwZDE2YzAzNGJiMGQ3OTU0OWJj
NWM0ZTYzODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTMtMTItMjYgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBzdGQ6
OnVuaXF1ZV9ncHRyLCBhIEdPd25QdHIgcmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjI1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3Bw
OgorICAgICAgICAoZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdCk6CisgICAg
ICAgIChhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3RoKToKKyAgICAgICAgKHRleHRFeHRlbnRzKToK
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0Q2hhcik6CisgICAgICAgIChudW1iZXJP
ZlJlcGxhY2VkRWxlbWVudHNCZWZvcmVPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVHdGs6OnN5c3RlbUZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TaGFy
ZWRCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUpOgorCiAyMDEzLTEyLTI2ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nl
b2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRl
ciByMTU5NTI2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDgyZWEzZDhkMmU4ODc1MWYwYjc1
MWM0MGU1ZDQ2ZDRiMTY4ZGQwYmYuLjA5YTM2MjRmN2RkMTJlZjIwMzFhYjZkMzc3NzVhYWI3YmIz
M2ViYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIxNCw2ICsyMTQsOCBAQCB3dGZfc291
cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmNwcCBcCiAgICAg
U291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR1R5cGVkZWZzLmggXAorICAgIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1VuaXF1ZVB0
ci5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oIFwKICAgICBT
b3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuY3BwIFwKICAgICBTb3VyY2UvV1RG
L3d0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuaCBcCiAgICAgU291cmNlL1dURi93dGYvZ3RrL01h
aW5UaHJlYWRHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmVlMGFmNDM3NDljOTIyMzdlMTgzOTkyY2M0MTIxYTQ3YTE2ZDFhMzYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuY3BwCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhLCBTLkwuCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHVW5pcXVlUHRyLmgiCisKKyNpbmNs
dWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBzdGQgeworCit2b2lkIGdvYmplY3RfZGVsZXRlcjxH
RXJyb3I+OjpvcGVyYXRvcigpKEdFcnJvciogcHRyKSBjb25zdAoreworICAgIGdfZXJyb3JfZnJl
ZShwdHIpOworfQorCit2b2lkIGdvYmplY3RfZGVsZXRlcjxHTGlzdD46Om9wZXJhdG9yKCkoR0xp
c3QqIHB0cikgY29uc3QKK3sKKyAgICBnX2xpc3RfZnJlZShwdHIpOworfQorCit2b2lkIGdvYmpl
Y3RfZGVsZXRlcjxHU0xpc3Q+OjpvcGVyYXRvcigpKEdTTGlzdCogcHRyKSBjb25zdAoreworICAg
IGdfc2xpc3RfZnJlZShwdHIpOworfQorCit2b2lkIGdvYmplY3RfZGVsZXRlcjxHUGF0dGVyblNw
ZWM+OjpvcGVyYXRvcigpKEdQYXR0ZXJuU3BlYyogcHRyKSBjb25zdAoreworICAgIGdfcGF0dGVy
bl9zcGVjX2ZyZWUocHRyKTsKK30KKwordm9pZCBnb2JqZWN0X2RlbGV0ZXI8R0Rpcj46Om9wZXJh
dG9yKCkoR0RpciogcHRyKSBjb25zdAoreworICAgIGdfZGlyX2Nsb3NlKHB0cik7Cit9CisKK3Zv
aWQgZ29iamVjdF9kZWxldGVyPEdUaW1lcj46Om9wZXJhdG9yKCkoR1RpbWVyKiBwdHIpIGNvbnN0
Cit7CisgICAgZ190aW1lcl9kZXN0cm95KHB0cik7Cit9CisKK3ZvaWQgZ29iamVjdF9kZWxldGVy
PEdLZXlGaWxlPjo6b3BlcmF0b3IoKShHS2V5RmlsZSogcHRyKSBjb25zdAoreworICAgIGdfa2V5
X2ZpbGVfZnJlZShwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBzdGQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5oIGIvU291cmNlL1dURi93dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU2ZGI2MzI0YzhjODAyY2MzY2E0YjFkMDJiZjdk
MmU4Y2YwOGQyZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1Vu
aXF1ZVB0ci5oCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEln
YWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEdVbmlxdWVQdHJfaAorI2RlZmluZSBHVW5p
cXVlUHRyX2gKKworI2lmZGVmICBfX2NwbHVzcGx1cworCisjaW5jbHVkZSAiR1R5cGVkZWZzLmgi
CisjaW5jbHVkZSA8bWVtb3J5PgorCitleHRlcm4gIkMiIHZvaWQgZ19mcmVlKHZvaWQqKTsKKwor
bmFtZXNwYWNlIHN0ZCB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgZ29iamVjdF9k
ZWxldGVyCit7CisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHB0cikgY29uc3QgeyBnX2ZyZWUocHRy
KTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgZ29iamVjdF9kZWxldGVyPEdFcnJvcj4KK3sK
KyAgICB2b2lkIG9wZXJhdG9yKCkoR0Vycm9yKikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBnb2JqZWN0X2RlbGV0ZXI8R0xpc3Q+Cit7CisgICAgdm9pZCBvcGVyYXRvcigpKEdMaXN0
KikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBnb2JqZWN0X2RlbGV0ZXI8R1NMaXN0
PgoreworICAgIHZvaWQgb3BlcmF0b3IoKShHU0xpc3QqKSBjb25zdDsKK307CisKK3RlbXBsYXRl
PD4gc3RydWN0IGdvYmplY3RfZGVsZXRlcjxHUGF0dGVyblNwZWM+Cit7CisgICAgdm9pZCBvcGVy
YXRvcigpKEdQYXR0ZXJuU3BlYyopIGNvbnN0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgZ29i
amVjdF9kZWxldGVyPEdEaXI+Cit7CisgICAgdm9pZCBvcGVyYXRvcigpKEdEaXIqKSBjb25zdDsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IGdvYmplY3RfZGVsZXRlcjxHVGltZXI+Cit7CisgICAg
dm9pZCBvcGVyYXRvcigpKEdUaW1lciopIGNvbnN0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
Z29iamVjdF9kZWxldGVyPEdLZXlGaWxlPgoreworICAgIHZvaWQgb3BlcmF0b3IoKShHS2V5Rmls
ZSopIGNvbnN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIHVuaXF1ZV9ncHRy
ID0gdW5pcXVlX3B0cjxULCBnb2JqZWN0X2RlbGV0ZXI8VD4+OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorc3RydWN0IG91dF9ncHRyCit7CisgICAgb3V0X2dwdHIodW5pcXVlX2dwdHI8VD4mIGdw
dHIpCisgICAgICAgIDogX2dwdHIoZ3B0cikKKyAgICAgICAgLCBfb3V0X2dwdHIobnVsbHB0cikK
KyAgICB7IH0KKworICAgIH5vdXRfZ3B0cigpCisgICAgeworICAgICAgICBBU1NFUlQoIV9ncHRy
LmdldCgpKTsKKyAgICAgICAgX2dwdHIgPSBzdGQ6Om1vdmUoc3RkOjp1bmlxdWVfZ3B0cjxUPihf
b3V0X2dwdHIpKTsKKyAgICB9CisKKyAgICBUKiYgb3BlcmF0b3IoKSgpCisgICAgeworICAgICAg
ICByZXR1cm4gX291dF9ncHRyOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OnVuaXF1ZV9n
cHRyPFQ+JiBfZ3B0cjsKKyAgICBUKiBfb3V0X2dwdHI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBz
dGQKKworI2VuZGlmIC8vIF9fY3BsdXNwbHVzCisKKyNlbmRpZiAvLyBHVW5pcXVlUHRyRGVsZXRl
cnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0
QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4IDQ4ZjZhMjQxZjc1
MjNhYzlkZTI0ODYzMWI5MGI5YjUyMjQxZDMzYzQuLmIzMmQ3Y2RiMGFiYzYzMTkyYzBlYThiODgz
ZjBkYmRlM2E0NmUxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKQEAg
LTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5oIgogI2luY2x1
ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcu
aCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04NywxOCArODcsMTggQEAgc3RhdGljIEF0a0F0dHJpYnV0
ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nlc3Np
YmlsaXQKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSAmcmVuZGVyZXItPnN0eWxlKCk7CiAKICAg
ICBBdGtBdHRyaWJ1dGVTZXQqIHJlc3VsdCA9IDA7Ci0gICAgR093blB0cjxnY2hhcj4gYnVmZmVy
KGdfc3RyZHVwX3ByaW50ZigiJWkiLCBzdHlsZS0+Zm9udFNpemUoKSkpOworICAgIHN0ZDo6dW5p
cXVlX2dwdHI8Z2NoYXI+IGJ1ZmZlcihnX3N0cmR1cF9wcmludGYoIiVpIiwgc3R5bGUtPmZvbnRT
aXplKCkpKTsKICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190
ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1NJWkUpLCBidWZmZXIuZ2V0KCkp
OwogCiAgICAgQ29sb3IgYmdDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIGlmIChiZ0NvbG9yLmlzVmFsaWQoKSkgewot
ICAgICAgICBidWZmZXIuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBiZ0NvbG9yLnJl
ZCgpLCBiZ0NvbG9yLmdyZWVuKCksIGJnQ29sb3IuYmx1ZSgpKSk7CisgICAgICAgIGJ1ZmZlci5y
ZXNldChnX3N0cmR1cF9wcmludGYoIiVpLCVpLCVpIiwgYmdDb2xvci5yZWQoKSwgYmdDb2xvci5n
cmVlbigpLCBiZ0NvbG9yLmJsdWUoKSkpOwogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJp
YnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRS
X0JHX0NPTE9SKSwgYnVmZmVyLmdldCgpKTsKICAgICB9CiAKICAgICBDb2xvciBmZ0NvbG9yID0g
c3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBpZiAo
ZmdDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9wcmludGYo
IiVpLCVpLCVpIiwgZmdDb2xvci5yZWQoKSwgZmdDb2xvci5ncmVlbigpLCBmZ0NvbG9yLmJsdWUo
KSkpOworICAgICAgICBidWZmZXIucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSwlaSwlaSIsIGZn
Q29sb3IucmVkKCksIGZnQ29sb3IuZ3JlZW4oKSwgZmdDb2xvci5ibHVlKCkpKTsKICAgICAgICAg
cmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVf
Z2V0X25hbWUoQVRLX1RFWFRfQVRUUl9GR19DT0xPUiksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQog
CkBAIC0xMjAsMTMgKzEyMCwxMyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1
dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdAogICAgIH0KIAog
ICAgIGlmIChpbmNsdWRlUmlzZSkgewotICAgICAgICBidWZmZXIuc2V0KGdfc3RyZHVwX3ByaW50
ZigiJWkiLCBiYXNlbGluZVBvc2l0aW9uKSk7CisgICAgICAgIGJ1ZmZlci5yZXNldChnX3N0cmR1
cF9wcmludGYoIiVpIiwgYmFzZWxpbmVQb3NpdGlvbikpOwogICAgICAgICByZXN1bHQgPSBhZGRU
b0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtf
VEVYVF9BVFRSX1JJU0UpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmICghc3R5bGUt
PnRleHRJbmRlbnQoKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIGludCBpbmRlbnRhdGlvbiA9
IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5kZW50KCksIG9iamVjdC0+c2l6ZSgpLndpZHRo
KCksICZyZW5kZXJlci0+dmlldygpKTsKLSAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9wcmlu
dGYoIiVpIiwgaW5kZW50YXRpb24pKTsKKyAgICAgICAgYnVmZmVyLnJlc2V0KGdfc3RyZHVwX3By
aW50ZigiJWkiLCBpbmRlbnRhdGlvbikpOwogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJp
YnV0ZVNldChyZXN1bHQsIGF0a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRS
X0lOREVOVCksIGJ1ZmZlci5nZXQoKSk7CiAgICAgfQogCkBAIC0xNjYsNyArMTY2LDcgQEAgc3Rh
dGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVj
dChjb25zdCBBY2Nlc3NpYmlsaXQKICAgICAgICAgZm9udFdlaWdodCA9IDkwMDsKICAgICB9CiAg
ICAgaWYgKGZvbnRXZWlnaHQgPiAwKSB7Ci0gICAgICAgIGJ1ZmZlci5zZXQoZ19zdHJkdXBfcHJp
bnRmKCIlaSIsIGZvbnRXZWlnaHQpKTsKKyAgICAgICAgYnVmZmVyLnJlc2V0KGdfc3RyZHVwX3By
aW50ZigiJWkiLCBmb250V2VpZ2h0KSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmli
dXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJf
V0VJR0hUKSwgYnVmZmVyLmdldCgpKTsKICAgICB9CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0
aWMgZ3VpbnQgYWNjZXNzaWJpbGl0eU9iamVjdExlbmd0aChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmplY3QpCiAgICAgLy8gd2VsbCBrbm93biBBUEkgdG8gYWx3YXlzIGdldCB0aGUgdGV4
dCBpbiBhIGNvbnNpc3RlbnQgd2F5CiAgICAgQXRrT2JqZWN0KiBhdGtPYmogPSBBVEtfT0JKRUNU
KG9iamVjdC0+d3JhcHBlcigpKTsKICAgICBpZiAoQVRLX0lTX1RFWFQoYXRrT2JqKSkgewotICAg
ICAgICBHT3duUHRyPGdjaGFyPiB0ZXh0KHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dChBVEtf
VEVYVChhdGtPYmopLCAwLCAtMSkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9ncHRyPGdjaGFyPiB0
ZXh0KHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dChBVEtfVEVYVChhdGtPYmopLCAwLCAtMSkp
OwogICAgICAgICByZXR1cm4gZ191dGY4X3N0cmxlbih0ZXh0LmdldCgpLCAtMSk7CiAgICAgfQog
CkBAIC0zMzUsNyArMzM1LDcgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0UnVuQXR0cmli
dXRlc0Zyb21BY2Nlc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJpbGkKIAogc3RhdGljIElu
dFJlY3QgdGV4dEV4dGVudHMoQXRrVGV4dCogdGV4dCwgZ2ludCBzdGFydE9mZnNldCwgZ2ludCBs
ZW5ndGgsIEF0a0Nvb3JkVHlwZSBjb29yZHMpCiB7Ci0gICAgR093blB0cjxjaGFyPiB0ZXh0Q29u
dGVudCh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQodGV4dCwgc3RhcnRPZmZzZXQsIC0xKSk7
CisgICAgc3RkOjp1bmlxdWVfZ3B0cjxjaGFyPiB0ZXh0Q29udGVudCh3ZWJraXRBY2Nlc3NpYmxl
VGV4dEdldFRleHQodGV4dCwgc3RhcnRPZmZzZXQsIC0xKSk7CiAgICAgZ2ludCB0ZXh0TGVuZ3Ro
ID0gZ191dGY4X3N0cmxlbih0ZXh0Q29udGVudC5nZXQoKSwgLTEpOwogCiAgICAgLy8gVGhlIGZp
cnN0IGNhc2UgKGVuZE9mZnNldCBvZiAtMSkgc2hvdWxkIHdvcmssIGJ1dCBzZWVtcyBicm9rZW4g
Zm9yIGFsbCBHdGsrIGFwcHMuCkBAIC01MjksNyArNTI5LDcgQEAgc3RhdGljIGNoYXIqIHdlYmtp
dEFjY2Vzc2libGVUZXh0R2V0Q2hhcihBdGtUZXh0KiB0ZXh0LCBpbnQgb2Zmc2V0LCBHZXRUZXh0
UmVsYXQKICAgICBlbHNlIGlmICh0ZXh0UG9zaXRpb24gPT0gR2V0VGV4dFBvc2l0aW9uQWZ0ZXIp
CiAgICAgICAgIGFjdHVhbE9mZnNldCsrOwogCi0gICAgR093blB0cjxjaGFyPiB0ZXh0RGF0YSh3
ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQodGV4dCwgMCwgLTEpKTsKKyAgICBzdGQ6OnVuaXF1
ZV9ncHRyPGNoYXI+IHRleHREYXRhKHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0VGV4dCh0ZXh0LCAw
LCAtMSkpOwogICAgIGludCB0ZXh0TGVuZ3RoID0gZ191dGY4X3N0cmxlbih0ZXh0RGF0YS5nZXQo
KSwgLTEpOwogCiAgICAgKnN0YXJ0T2Zmc2V0ID0gc3RkOjptYXgoMCwgYWN0dWFsT2Zmc2V0KTsK
QEAgLTYzNyw3ICs2MzcsNyBAQCBzdGF0aWMgVmlzaWJsZVNlbGVjdGlvbiB3b3JkQXRQb3NpdGlv
bkZvckF0a0JvdW5kYXJ5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqCiAKIHN0YXRpYyBpbnQg
bnVtYmVyT2ZSZXBsYWNlZEVsZW1lbnRzQmVmb3JlT2Zmc2V0KEF0a1RleHQqIHRleHQsIHVuc2ln
bmVkIG9mZnNldCkKIHsKLSAgICBHT3duUHRyPGNoYXI+IHRleHRGb3JPYmplY3Qod2Via2l0QWNj
ZXNzaWJsZVRleHRHZXRUZXh0KHRleHQsIDAsIG9mZnNldCkpOworICAgIHN0ZDo6dW5pcXVlX2dw
dHI8Y2hhcj4gdGV4dEZvck9iamVjdCh3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleHQodGV4dCwg
MCwgb2Zmc2V0KSk7CiAgICAgU3RyaW5nIHRleHRCZWZvcmVPZmZzZXQgPSBTdHJpbmc6OmZyb21V
VEY4KHRleHRGb3JPYmplY3QuZ2V0KCkpOwogCiAgICAgaW50IGNvdW50ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBkZDI0NGJhMTY5MWUxNmQ3YzQ0
MTZhOTE3NTE5NjM4YTJmYWZiNDM2Li45Y2MzOTE1YzY2YTI0NjRjYzkxNDk3NTFlYjdkOGVlZjIx
YTQwYzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0y
NCwxMiArMjQsMTIgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkF1
ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CiAj
aW5jbHVkZSAiR1JlZlB0ckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJXZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIgogI2luY2x1ZGUgPGdzdC9nc3Qu
aD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CisjaW5jbHVkZSA8d3RmL2dvYmpl
Y3QvR1VuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1MCwxNiArMTUw
LDE2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6ZmluaXNoQnVpbGRpbmdQaXBl
bGluZUFmdGVyV2F2UGFyc2VyUGFkUmVhZHkoR3N0CiAKIGdib29sZWFuIEF1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKLSAgICBH
T3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR093blB0cjxnY2hhcj4gZGVidWc7CisgICAgc3Rk
Ojp1bmlxdWVfZ3B0cjxHRXJyb3I+IGVycm9yOworICAgIHN0ZDo6dW5pcXVlX2dwdHI8Z2NoYXI+
IGRlYnVnOwogCiAgICAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpKSB7CiAgICAg
Y2FzZSBHU1RfTUVTU0FHRV9XQVJOSU5HOgotICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV93YXJu
aW5nKG1lc3NhZ2UsICZlcnJvci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKKyAgICAgICAg
Z3N0X21lc3NhZ2VfcGFyc2Vfd2FybmluZyhtZXNzYWdlLCAmc3RkOjpvdXRfZ3B0cjxHRXJyb3I+
KGVycm9yKSgpLCAmc3RkOjpvdXRfZ3B0cjxnY2hhcj4oZGVidWcpKCkpOwogICAgICAgICBnX3dh
cm5pbmcoIldhcm5pbmc6ICVkLCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCAg
ZXJyb3ItPm1lc3NhZ2UsIGRlYnVnLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBH
U1RfTUVTU0FHRV9FUlJPUjoKLSAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2Fn
ZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOworICAgICAgICBnc3RfbWVzc2Fn
ZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmc3RkOjpvdXRfZ3B0cjxHRXJyb3I+KGVycm9yKSgpLCAm
c3RkOjpvdXRfZ3B0cjxnY2hhcj4oZGVidWcpKCkpOwogICAgICAgICBnX3dhcm5pbmcoIkVycm9y
OiAlZCwgJXMuIERlYnVnIG91dHB1dDogJXMiLCBlcnJvci0+Y29kZSwgIGVycm9yLT5tZXNzYWdl
LCBkZWJ1Zy5nZXQoKSk7CiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5l
LCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgICAgIG1faXNQbGF5aW5nID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVh
ZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmluZGV4IDY3MmFlYzFhZTA5ZDdiYTg1M2Fh
NTI0NWE4OTgyMDEyMmMxYzlmZmYuLmMzYTUyZGI0YjBiMWNjY2RkYjUxYWM3N2E0ODBiNTY4ZDhi
NGYwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCkBAIC0zMSw4
ICszMSw4IEBACiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8
d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVW5pcXVlUHRyLmg+CiAKICNpbmNsdWRlIDxnc3QvYXVk
aW8vYXVkaW8uaD4KIApAQCAtMjA0LDE5ICsyMDQsMTkgQEAgR3N0Rmxvd1JldHVybiBBdWRpb0Zp
bGVSZWFkZXI6OmhhbmRsZVNhbXBsZShHc3RBcHBTaW5rKiBzaW5rKQogCiBnYm9vbGVhbiBBdWRp
b0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKLSAgICBH
T3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgR093blB0cjxnY2hhcj4gZGVidWc7CisgICAgc3Rk
Ojp1bmlxdWVfZ3B0cjxHRXJyb3I+IGVycm9yOworICAgIHN0ZDo6dW5pcXVlX2dwdHI8Z2NoYXI+
IGRlYnVnOwogCiAgICAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpKSB7CiAgICAg
Y2FzZSBHU1RfTUVTU0FHRV9FT1M6CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9sb29wLmdl
dCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9XQVJOSU5HOgotICAg
ICAgICBnc3RfbWVzc2FnZV9wYXJzZV93YXJuaW5nKG1lc3NhZ2UsICZlcnJvci5vdXRQdHIoKSwg
JmRlYnVnLm91dFB0cigpKTsKKyAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vfd2FybmluZyhtZXNz
YWdlLCAmc3RkOjpvdXRfZ3B0cjxHRXJyb3I+KGVycm9yKSgpLCAmc3RkOjpvdXRfZ3B0cjxnY2hh
cj4oZGVidWcpKCkpOwogICAgICAgICBnX3dhcm5pbmcoIldhcm5pbmc6ICVkLCAlcy4gRGVidWcg
b3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCAgZXJyb3ItPm1lc3NhZ2UsIGRlYnVnLmdldCgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FUlJPUjoKLSAgICAgICAgZ3N0
X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0
UHRyKCkpOworICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmc3RkOjpv
dXRfZ3B0cjxHRXJyb3I+KGVycm9yKSgpLCAmc3RkOjpvdXRfZ3B0cjxnY2hhcj4oZGVidWcpKCkp
OwogICAgICAgICBnX3dhcm5pbmcoIkVycm9yOiAlZCwgJXMuIERlYnVnIG91dHB1dDogJXMiLCBl
cnJvci0+Y29kZSwgIGVycm9yLT5tZXNzYWdlLCBkZWJ1Zy5nZXQoKSk7CiAgICAgICAgIG1fZXJy
b3JPY2N1cnJlZCA9IHRydWU7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9sb29wLmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmlu
ZGV4IDYyOWU4ZDZiZTE5NTE4MzM5MDNmNTZmNTBkMGY5MDE5MjgzNjkwZDAuLmE3MWM0MzVjMzkw
ZTNhNDU0OTMwYmViZWUwZjM5ZGZhZWVhYzZkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkZpbGVMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZvbnREZXNj
cmlwdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlICJH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkd0a1Zl
cnNpb25pbmcuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5j
bHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVj
dC9HVW5pcXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaWYgRU5B
QkxFKFBST0dSRVNTX0VMRU1FTlQpCkBAIC00NDQsOCArNDQ0LDggQEAgdm9pZCBSZW5kZXJUaGVt
ZUd0azo6c3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbikgY28KICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyB3aWxsIGJlIGEgZm9udCBz
ZWxlY3Rpb24gc3RyaW5nIGxpa2UgIlNhbnMgMTAiIHNvIHdlIGNhbm5vdCB1c2UgaXQgYXMgdGhl
IGZhbWlseSBuYW1lLgotICAgIEdPd25QdHI8Z2NoYXI+IGZvbnROYW1lOwotICAgIGdfb2JqZWN0
X2dldChzZXR0aW5ncywgImd0ay1mb250LW5hbWUiLCAmZm9udE5hbWUub3V0UHRyKCksIE5VTEwp
OworICAgIHN0ZDo6dW5pcXVlX2dwdHI8Z2NoYXI+IGZvbnROYW1lOworICAgIGdfb2JqZWN0X2dl
dChzZXR0aW5ncywgImd0ay1mb250LW5hbWUiLCAmc3RkOjpvdXRfZ3B0cjxnY2hhcj4oZm9udE5h
bWUpKCksIE5VTEwpOwogCiAgICAgUGFuZ29Gb250RGVzY3JpcHRpb24qIHBhbmdvRGVzY3JpcHRp
b24gPSBwYW5nb19mb250X2Rlc2NyaXB0aW9uX2Zyb21fc3RyaW5nKGZvbnROYW1lLmdldCgpKTsK
ICAgICBpZiAoIXBhbmdvRGVzY3JpcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2hhcmVkQnVmZmVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwCmluZGV4IGM3YjRmMjdiMGRhZWZjOGU4ODhkMzMwNDA1
NDRlNTc2Mzg0ZTY3ZjYuLmIxYWE4Yjc1NzA4YTZmZDMxZTFhNzE3YTZkZmZmMDdiNWRmNzZjNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3Bw
CkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zNCwxMCArMzQsMTAgQEAgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKGNvbnN0
IFN0cmluZyYgZmkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDU3RyaW5nIGZpbGVuYW1lID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKLSAgICBHT3duUHRyPGdjaGFyPiBj
b250ZW50czsKKyAgICBzdGQ6OnVuaXF1ZV9ncHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6
ZSBzaXplOwotICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdfZmlsZV9nZXRf
Y29udGVudHMoZmlsZW5hbWUuZGF0YSgpLCAmY29udGVudHMub3V0UHRyKCksICZzaXplLCAmZXJy
b3Iub3V0UHRyKCkpKSB7CisgICAgc3RkOjp1bmlxdWVfZ3B0cjxHRXJyb3I+IGVycm9yOworICAg
IGlmICghZ19maWxlX2dldF9jb250ZW50cyhmaWxlbmFtZS5kYXRhKCksICZzdGQ6Om91dF9ncHRy
PGdjaGFyPihjb250ZW50cykoKSwgJnNpemUsICZzdGQ6Om91dF9ncHRyPEdFcnJvcj4oZXJyb3Ip
KCkpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMg
b2YgZmlsZSAlcyAtICVzIiwgZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51dGY4KCkuZGF0
YSgpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220243</attachid>
            <date>2014-01-02 12:35:30 -0800</date>
            <delta_ts>2014-01-15 02:36:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126255-20140102213528.patch</filename>
            <type>text/plain</type>
            <size>12521</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxMjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcxMmRhMTM0NDk1OWY5ZjYwYWM0M2Zk
OTgzNzgxZGY5MzZiZTY0Y2UuLmM5YzllMzE0Y2E4Mzg2OTZiZGZjYTg2NjFkYzIxMjc2ZDcxYjcw
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTQtMDEtMDIgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBzdGQ6OnVuaXF1ZV9ncHRyLCBh
IEdPd25QdHIgcmVwbGFjZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEludHJvZHVjZSBzdGQ6OnVuaXF1ZV9ncHRyIHdoaWNoIGlzIGJhc2VkIG9u
IHN0ZDo6dW5pcXVlX3B0ciBidXQgc2hvdWxkIGJlIHVzZWQKKyAgICAgICAgZm9yIG1hbmFnaW5n
IG1lbW9yeSB0aGF0IHdhcyBhbGxvY2F0ZWQgdGhyb3VnaCBHTGliLgorCisgICAgICAgIHN0ZDo6
dW5pcXVlX2dwdHI8VD4gaW5oZXJpdHMgZnJvbSBzdGQ6OnVuaXF1ZV9wdHI8VCwgc3RkOjpnb2Jq
ZWN0X2RlbGV0ZXI8VD4+LAorICAgICAgICB3aXRoIHN0ZDo6Z29iamVjdF9kZWxldGVyIGJlaW5n
IGEgdGVtcGxhdGUgc3RydWN0IHRoYXQgYnkgZGVmYXVsdCB1c2VzIGdfZnJlZQorICAgICAgICB0
byBmcmVlIHRoZSBtZW1vcnkgcG9pbnRlZCB0byBieSB0aGUgZ2l2ZW4gcG9pbnRlciwgd2l0aCBh
ZGRpdGlvbmFsIHRlbXBsYXRlCisgICAgICAgIHNwZWNpYWxpemF0aW9ucyBwcm92aWRlZCBmb3Ig
dHlwZXMgdGhhdCBzaG91bGQgdXNlIG1vcmUgc3BlY2lmaWMgbWVtb3J5LWZyZWVpbmcKKyAgICAg
ICAgZnVuY3Rpb25zLgorCisgICAgICAgIHN0ZDo6b3V0X2dwdHIgc3RydWN0IGlzIHRvIGJlIHVz
ZWQgaW4gR0xpYi1iYXNlZCBBUEkgY2FsbHMgdGhhdCBleHBlY3QgdG8gYmUgcGFzc2VkCisgICAg
ICAgIGEgcG9pbnRlciB0byB0aGUgcG9pbnRlciB0aGF0J3MgdG8gYmUgbWFuYWdlZCB0aHJvdWdo
IHN0ZDo6dW5pcXVlX2dwdHIuIHN0ZDo6b3V0X2dwdHI8VD4KKyAgICAgICAgY29uc3RydWN0b3Ig
aW52b2NhdGlvbiBtdXN0IGJlIGlubGluZWQgaW4gdGhlIEFQSSBjYWxsLCB3aXRoIHRoZSBjb25z
dHJ1Y3RvciB0YWtpbmcgaW4KKyAgICAgICAgYSByZWZlcmVuY2UgdG8gdGhlIHN0ZDo6dW5pcXVl
X2dwdHI8VD4gdGhhdCB3aWxsIGJlIHVzZWQgdG8gbWFuYWdlIHRoZSBuZXdseS1hbGxvY2F0ZWQK
KyAgICAgICAgbWVtb3J5LgorCisgICAgICAgIFRoZSBzdGQ6Om91dF9ncHRyPFQ+IHN0cnVjdCBh
bHNvIGhhcyBhIHBvaW50ZXIgbWVtYmVyLiBBIHJlZmVyZW5jZSB0byB0aGF0IG1lbWJlciBjYW4g
YmUKKyAgICAgICAgYWNjZXNzZWQgYnkgdXNpbmcgdGhlICgpIG9wZXJhdG9yIG9uIHRoZSBzdGQ6
Om91dF9ncHRyPFQ+IG9iamVjdCwgc28gdGFraW5nIHRoZSBhZGRyZXNzCisgICAgICAgIG9mIHRo
YXQgcmVmZXJlbmNlIHByb3ZpZGVzIGEgcG9pbnRlciB0byB0aGUgVCBwb2ludGVyIHRoYXQncyBy
ZXF1aXJlZCBieSB0aGUgQVBJIGNhbGwuCisgICAgICAgIFdoZW4gdGhlIEFQSSBjYWxsIGludm9j
YXRpb24gaXMgZmluaXNoZWQsIHRoZSBzdGQ6Om91dF9ncHRyPFQ+IGRlY29uc3RydWN0b3IgaXMg
aW52b2tlZCBhbmQKKyAgICAgICAgdGhlIHN0ZDo6dW5pcXVlX2dwdHI8VD4gcmVmZXJlbmNlIHJl
Y2VpdmVzIHRoZSBjb250cm9sIG9mIHRoZSBUIHBvaW50ZXIgbWVtYmVyIHRoYXQgcG9pbnRzCisg
ICAgICAgIHRvIHRoZSBuZXdseS1hbGxvY2F0ZWQgbWVtb3J5LgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAg
ICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAg
ICogd3RmL1BsYXRmb3JtTml4LmNtYWtlOgorICAgICAgICAqIHd0Zi9nb2JqZWN0L1VuaXF1ZUdQ
dHIuY3BwOiBBZGRlZC4KKyAgICAgICAgKHN0ZDo6Z29iamVjdF9kZWxldGVyPEdFcnJvcj46Om9w
ZXJhdG9yKToKKyAgICAgICAgKHN0ZDo6Z29iamVjdF9kZWxldGVyPEdMaXN0Pjo6b3BlcmF0b3Ip
OgorICAgICAgICAoc3RkOjpnb2JqZWN0X2RlbGV0ZXI8R1NMaXN0Pjo6b3BlcmF0b3IpOgorICAg
ICAgICAoc3RkOjpnb2JqZWN0X2RlbGV0ZXI8R1BhdHRlcm5TcGVjPjo6b3BlcmF0b3IpOgorICAg
ICAgICAoc3RkOjpnb2JqZWN0X2RlbGV0ZXI8R0Rpcj46Om9wZXJhdG9yKToKKyAgICAgICAgKHN0
ZDo6Z29iamVjdF9kZWxldGVyPEdUaW1lcj46Om9wZXJhdG9yKToKKyAgICAgICAgKHN0ZDo6Z29i
amVjdF9kZWxldGVyPEdLZXlGaWxlPjo6b3BlcmF0b3IpOgorICAgICAgICAqIHd0Zi9nb2JqZWN0
L1VuaXF1ZUdQdHIuaDogQWRkZWQuCisgICAgICAgIChzdGQ6OmdvYmplY3RfZGVsZXRlcjo6b3Bl
cmF0b3IoKSk6CisgICAgICAgIChzdGQ6OnVuaXF1ZV9ncHRyOjp1bmlxdWVfZ3B0cik6CisgICAg
ICAgIChzdGQ6Om91dF9ncHRyOjpvdXRfZ3B0cik6CisgICAgICAgIChzdGQ6Om91dF9ncHRyOjp+
b3V0X2dwdHIpOgorICAgICAgICAoc3RkOjpvdXRfZ3B0cjo6b3BlcmF0b3IoKSk6CisKIDIwMTMt
MTItMzAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjExNTcsIHIxNjExNTgsIHIxNjExNjAsIHIxNjEx
NjEsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggNzY3ZTI5MWVhMWZlMGNjYmY4OGVlMDIzMDZh
NjQ1YWJlYzk4NjljMy4uZjZlYjJlNzVmZTRkYmM2OGUzMmViYzZlNzliYmQwMDVlNGJjNTljMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
VEYvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjE3LDYgKzIxNyw4IEBAIHd0Zl9zb3VyY2VzICs9
IFwKICAgICBTb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oIFwKICAgICBTb3VyY2Uv
V1RGL3d0Zi9nb2JqZWN0L0dsaWJVdGlsaXRpZXMuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dsaWJVdGlsaXRpZXMuaCBcCisgICAgU291cmNlL1dURi93dGYvZ29iamVjdC9Vbmlx
dWVHUHRyLmNwcCBcCisgICAgU291cmNlL1dURi93dGYvZ29iamVjdC9VbmlxdWVHUHRyLmggXAog
ICAgIFNvdXJjZS9XVEYvd3RmL2d0ay9NYWluVGhyZWFkR3RrLmNwcCBcCiAgICAgU291cmNlL1dU
Ri93dGYvZ3RrL1J1bkxvb3BHdGsuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJ
RmFzdFBhdGguaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hw
cm9qIGIvU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvagppbmRleCA2OTllNzc0ODhj
ODUyMmU2Y2E1Y2NiZTc1MTIxODg4NDNiOWU4Yjk5Li5iZjY0NDIxNjMyMmVhNjA4YjJjMDZkMDc5
MGFmMzAwNmRhZDAxM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52
Y3hwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKQEAgLTEwNCw2
ICsxMDQsMTYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3
dGZcZ29iamVjdFxVbmlxdWVHUHRyLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxH
cmVnb3JpYW5EYXRlVGltZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZc
SGFzaFRhYmxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxNYWluVGhy
ZWFkLmNwcCIgLz4KQEAgLTIwOCw2ICsyMTgsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cd3RmXGdvYmplY3RcR093blB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXGdvYmplY3RcR1JlZlB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3Rm
XGdvYmplY3RcR1R5cGVkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
Z29iamVjdFxVbmlxdWVHUHRyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZc
R3JlZ29yaWFuRGF0ZVRpbWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxI
YXNoQ291bnRlZFNldC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEhhc2hG
dW5jdGlvbnMuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZj
eHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ouZmlsdGVy
cwppbmRleCA3YjdmMWQ0N2E5ZjU0MjkwODdmYzRkODEzNjA0YWMxMjcwNjc3ZGQwLi4wOWEwMmM5
YmNjZGEwY2VmNjgxNGE0YzI3YzU0ZjU4MmFhYWEwNTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dURi9XVEYudmN4
cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC0yMzEsNiArMjMxLDkgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHd0Zlxnb2JqZWN0XEdSZWZQdHIuY3BwIj4KICAgICAgIDxGaWx0ZXI+
d3RmXGdvYmplY3Q8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHd0Zlxnb2JqZWN0XFVuaXF1ZUdQdHIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+d3Rm
XGdvYmplY3Q8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHd0ZlxSdW5Mb29wLmNwcCI+CiAgICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtNzA2LDYgKzcwOSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlx3dGZcZ29iamVjdFxHVHlwZWRlZnMuaCI+CiAgICAgICA8RmlsdGVyPnd0Zlxnb2JqZWN0
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3
dGZcZ29iamVjdFxVbmlxdWVHUHRyLmgiPgorICAgICAgPEZpbHRlcj53dGZcZ29iamVjdDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEJh
Zy5oIj4KICAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGUxMGE0NDIzOGM5NTI5ZDlkMDUxOGI0YTFmMDljNDdh
YzE0NDJmNTcuLjZiNWEzZDYxZjU3Y2E4YzEyNzg4MzFmZmE0MDc3YjIyODFlYTc0ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogCiAgICAgZ29iamVjdC9HT3duUHRyLmNwcAogICAgIGdvYmplY3QvR1JlZlB0ci5jcHAK
KyAgICBnb2JqZWN0L1VuaXF1ZUdQdHIuY3BwCiApCiAKIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJ
RVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMzJlMWZlYjk3OTJkZjRhOTUxOGViZDlh
NDE2NTIwYWQ0NTk3MDMzOC4uMmFiOWJlZmYzM2Y1M2I4N2Y5NTE3ZDljNzE0MmEyNGYzMmZhMWRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTIsNiArMiw3IEBAIGxpc3QoQVBQRU5E
IFdURl9TT1VSQ0VTCiAgICAgZ29iamVjdC9HT3duUHRyLmNwcAogICAgIGdvYmplY3QvR1JlZlB0
ci5jcHAKICAgICBnb2JqZWN0L0dsaWJVdGlsaXRpZXMuY3BwCisgICAgZ29iamVjdC9VbmlxdWVH
UHRyLmNwcAogCiAgICAgZ3RrL01haW5UaHJlYWRHdGsuY3BwCiAgICAgZ3RrL1J1bkxvb3BHdGsu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU5peC5jbWFrZSBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtTml4LmNtYWtlCmluZGV4IDFmMzEzYTBhMGI1MmY5NWFkMzgyZWFi
ZDM4NzNkYWE2YWU2OGY0MzMuLmU4YzliODIyZWIwOWNjOTVlZTkzMDI5ZTZkNjJkZDdhMWVkYTRm
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTml4LmNtYWtlCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtTml4LmNtYWtlCkBAIC0yLDYgKzIsNyBAQCBsaXN0KEFQUEVO
RCBXVEZfU09VUkNFUwogICAgIGdvYmplY3QvR093blB0ci5jcHAKICAgICBnb2JqZWN0L0dSZWZQ
dHIuY3BwCiAgICAgZ29iamVjdC9HbGliVXRpbGl0aWVzLmNwcAorICAgIGdvYmplY3QvVW5pcXVl
R1B0ci5jcHAKIAogICAgIGd0ay9NYWluVGhyZWFkR3RrLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9nb2JqZWN0L1VuaXF1ZUdQdHIuY3BwIGIvU291cmNlL1dURi93dGYvZ29iamVj
dC9VbmlxdWVHUHRyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWRkZjhlY2Q2M2UwMDFhYmYzOGZjODZmM2Zl
YTM2YTA5MTAzNjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9V
bmlxdWVHUHRyLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VW5pcXVlR1B0ci5oIgorCisjaW5jbHVkZSA8Z2xpYi5oPgorCituYW1lc3BhY2Ugc3RkIHsKKwor
dm9pZCBnb2JqZWN0X2RlbGV0ZXI8R0Vycm9yPjo6b3BlcmF0b3IoKShHRXJyb3IqIHB0cikgY29u
c3QKK3sKKyAgICBnX2Vycm9yX2ZyZWUocHRyKTsKK30KKwordm9pZCBnb2JqZWN0X2RlbGV0ZXI8
R0xpc3Q+OjpvcGVyYXRvcigpKEdMaXN0KiBwdHIpIGNvbnN0Cit7CisgICAgZ19saXN0X2ZyZWUo
cHRyKTsKK30KKwordm9pZCBnb2JqZWN0X2RlbGV0ZXI8R1NMaXN0Pjo6b3BlcmF0b3IoKShHU0xp
c3QqIHB0cikgY29uc3QKK3sKKyAgICBnX3NsaXN0X2ZyZWUocHRyKTsKK30KKwordm9pZCBnb2Jq
ZWN0X2RlbGV0ZXI8R1BhdHRlcm5TcGVjPjo6b3BlcmF0b3IoKShHUGF0dGVyblNwZWMqIHB0cikg
Y29uc3QKK3sKKyAgICBnX3BhdHRlcm5fc3BlY19mcmVlKHB0cik7Cit9CisKK3ZvaWQgZ29iamVj
dF9kZWxldGVyPEdEaXI+OjpvcGVyYXRvcigpKEdEaXIqIHB0cikgY29uc3QKK3sKKyAgICBnX2Rp
cl9jbG9zZShwdHIpOworfQorCit2b2lkIGdvYmplY3RfZGVsZXRlcjxHVGltZXI+OjpvcGVyYXRv
cigpKEdUaW1lciogcHRyKSBjb25zdAoreworICAgIGdfdGltZXJfZGVzdHJveShwdHIpOworfQor
Cit2b2lkIGdvYmplY3RfZGVsZXRlcjxHS2V5RmlsZT46Om9wZXJhdG9yKCkoR0tleUZpbGUqIHB0
cikgY29uc3QKK3sKKyAgICBnX2tleV9maWxlX2ZyZWUocHRyKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2Ugc3RkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L1VuaXF1ZUdQdHIuaCBi
L1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvVW5pcXVlR1B0ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3M2I0NzEz
YWUzZjk4MWE5MzRkMmUyZDY4ZDI0YTViMzg0YTIyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nb2JqZWN0L1VuaXF1ZUdQdHIuaApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBVbmlx
dWVHUHRyX2gKKyNkZWZpbmUgVW5pcXVlR1B0cl9oCisKKyNpZmRlZiAgX19jcGx1c3BsdXMKKwor
I2luY2x1ZGUgIkdUeXBlZGVmcy5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKworZXh0ZXJuICJDIiB2
b2lkIGdfZnJlZSh2b2lkKik7CisKK25hbWVzcGFjZSBzdGQgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorc3RydWN0IGdvYmplY3RfZGVsZXRlcgoreworICAgIHZvaWQgb3BlcmF0b3IoKShUKiBw
dHIpIGNvbnN0IHsgZ19mcmVlKHB0cik7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IGdvYmpl
Y3RfZGVsZXRlcjxHRXJyb3I+Cit7CisgICAgdm9pZCBvcGVyYXRvcigpKEdFcnJvciopIGNvbnN0
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgZ29iamVjdF9kZWxldGVyPEdMaXN0PgoreworICAg
IHZvaWQgb3BlcmF0b3IoKShHTGlzdCopIGNvbnN0OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
Z29iamVjdF9kZWxldGVyPEdTTGlzdD4KK3sKKyAgICB2b2lkIG9wZXJhdG9yKCkoR1NMaXN0Kikg
Y29uc3Q7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBnb2JqZWN0X2RlbGV0ZXI8R1BhdHRlcm5T
cGVjPgoreworICAgIHZvaWQgb3BlcmF0b3IoKShHUGF0dGVyblNwZWMqKSBjb25zdDsKK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IGdvYmplY3RfZGVsZXRlcjxHRGlyPgoreworICAgIHZvaWQgb3Bl
cmF0b3IoKShHRGlyKikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBnb2JqZWN0X2Rl
bGV0ZXI8R1RpbWVyPgoreworICAgIHZvaWQgb3BlcmF0b3IoKShHVGltZXIqKSBjb25zdDsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IGdvYmplY3RfZGVsZXRlcjxHS2V5RmlsZT4KK3sKKyAgICB2
b2lkIG9wZXJhdG9yKCkoR0tleUZpbGUqKSBjb25zdDsKK307CisKKy8vIEZJWE1FOiBSZXBsYWNl
IHdpdGggYSBzaW1wbGUgdGVtcGxhdGUgYWxpYXMgd2hlbiBzdXBwb3J0IGZvciBHQ0MgNC42IGlz
IGRyb3BwZWQuCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IHVuaXF1ZV9ncHRyIDogdW5p
cXVlX3B0cjxULCBnb2JqZWN0X2RlbGV0ZXI8VD4+IHsKKyAgICB1bmlxdWVfZ3B0cihUKiBwdHIg
PSBudWxscHRyKQorICAgICAgICA6IHVuaXF1ZV9wdHI8VCwgZ29iamVjdF9kZWxldGVyPFQ+Pihw
dHIpCisgICAgeworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qgb3V0
X2dwdHIKK3sKKyAgICBvdXRfZ3B0cih1bmlxdWVfZ3B0cjxUPiYgZ3B0cikKKyAgICAgICAgOiBf
Z3B0cihncHRyKQorICAgICAgICAsIF9vdXRfZ3B0cihudWxscHRyKQorICAgIHsgfQorCisgICAg
fm91dF9ncHRyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghX2dwdHIuZ2V0KCkpOworICAgICAg
ICBfZ3B0ciA9IHN0ZDo6bW92ZShzdGQ6OnVuaXF1ZV9ncHRyPFQ+KF9vdXRfZ3B0cikpOworICAg
IH0KKworICAgIFQqJiBvcGVyYXRvcigpKCkKKyAgICB7CisgICAgICAgIHJldHVybiBfb3V0X2dw
dHI7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX2dwdHI8VD4mIF9ncHRyOwor
ICAgIFQqIF9vdXRfZ3B0cjsKK307CisKK30gLy8gbmFtZXNwYWNlIHN0ZAorCisjZW5kaWYgLy8g
X19jcGx1c3BsdXMKKworI2VuZGlmIC8vIFVuaXF1ZUdQdHJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221250</attachid>
            <date>2014-01-15 02:36:58 -0800</date>
            <delta_ts>2014-01-24 02:33:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126255-20140115113655.patch</filename>
            <type>text/plain</type>
            <size>132173</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYyMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNiOTMwOWVjYjZjODVmODkyN2Q3NDNj
MDgwNWU1MGM0YTZmNTIxY2QuLjA1ZDE1MzgwMThjMjU1MTNhOGQzMDY0ODBkNDYwMzg2OWMxZTNj
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTQtMDEtMTUgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIEJhc2UgR093blB0ciBvbiBzdGQ6OnVuaXF1ZV9w
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjI1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdPd25Q
dHIgc2hvdWxkIGluaGVyaXQgZnJvbSBzdGQ6OnVuaXF1ZV9wdHIsIG9ubHkgcHJvdmlkaW5nIGFu
IGV4cGxpY2l0IGNvbnN0cnVjdG9yCisgICAgICAgIHRoYXQgdGFrZXMgaW4gYW4gb3B0aW9uYWwg
cG9pbnRlciB0aGF0IHNob3VsZCBiZSBtYW5hZ2VkLiBHT2JqZWN0RGVsZXRlciB0ZW1wbGF0ZSBz
dHJ1Y3QKKyAgICAgICAgaXMgdXNlZCBhcyB0aGUgc3RkOjpkZWZhdWx0X2RlbGV0ZSBzdGFuZC1p
biB0byBmcmVlIHRoZSBtZW1vcnkgdGhyb3VnaCBnX2ZyZWUsIGFuZAorICAgICAgICBhZGRpdGlv
bmFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB0eXBlcyB0aGF0
IHJlcXVpcmUgc3BlY2lhbCBtZW1vcnkKKyAgICAgICAgcmVsZWFzZSBmdW5jdGlvbnMuCisKKyAg
ICAgICAgR091dFB0ciBzdHJ1Y3QgaXMgdG8gYmUgdXNlZCBpbiBHTGliLWJhc2VkIEFQSSBjYWxs
cyB0aGF0IGV4cGVjdCB0byBiZSBwYXNzZWQgYSBwb2ludGVyCisgICAgICAgIHRvIHRoZSBwb2lu
dGVyIHRoYXQncyB0byBiZSBtYW5hZ2VkIHRocm91Z2ggR093blB0ci4gR091dFB0cjxUPiBjb25z
dHJ1Y3RvciBpbnZvY2F0aW9uCisgICAgICAgIG11c3QgYmUgaW5saW5lZCBpbiB0aGUgQVBJIGNh
bGwsIHdpdGggdGhlIGNvbnN0cnVjdG9yIHRha2luZyBpbiBhIHJlZmVyZW5jZSB0byB0aGUgR093
blB0cjxUPgorICAgICAgICB0aGF0IHdpbGwgYmUgdXNlZCB0byBtYW5hZ2UgdGhlIG5ld2x5LWFs
bG9jYXRlZCBtZW1vcnkuCisKKyAgICAgICAgVGhlIEdPdXRQdHI8VD4gc3RydWN0IGFsc28gaGFz
IGEgcG9pbnRlciBtZW1iZXIuIEEgcmVmZXJlbmNlIHRvIHRoYXQgbWVtYmVyIGNhbiBiZSBhY2Nl
c3NlZAorICAgICAgICBieSB1c2luZyB0aGUgKCkgb3BlcmF0b3Igb24gdGhlIEdPdXRQdHI8VD4g
b2JqZWN0LCBzbyB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgdGhhdCByZWZlcmVuY2UKKyAgICAgICAg
cHJvdmlkZXMgYSBwb2ludGVyIHRvIHRoZSBUIHBvaW50ZXIgdGhhdCdzIHJlcXVpcmVkIGJ5IHRo
ZSBBUEkgY2FsbC4gV2hlbiB0aGUgQVBJIGNhbGwKKyAgICAgICAgaW52b2NhdGlvbiBpcyBmaW5p
c2hlZCwgdGhlIEdPdXRQdHI8VD4gZGVjb25zdHJ1Y3RvciBpcyBpbnZva2VkIGFuZCB0aGUgR093
blB0cjxUPiByZWZlcmVuY2UKKyAgICAgICAgcmVjZWl2ZXMgdGhlIGNvbnRyb2wgb2YgdGhlIFQg
cG9pbnRlciBtZW1iZXIgdGhhdCBwb2ludHMgdG8gdGhlIG5ld2x5LWFsbG9jYXRlZCBtZW1vcnku
CisKKyAgICAgICAgKiB3dGYvZ29iamVjdC9HT3duUHRyLmNwcDoKKyAgICAgICAgKFdURjo6R09i
amVjdERlbGV0ZXI8R0Vycm9yPjo6b3BlcmF0b3IpOgorICAgICAgICAoV1RGOjpHT2JqZWN0RGVs
ZXRlcjxHTGlzdD46Om9wZXJhdG9yKToKKyAgICAgICAgKFdURjo6R09iamVjdERlbGV0ZXI8R1NM
aXN0Pjo6b3BlcmF0b3IpOgorICAgICAgICAoV1RGOjpHT2JqZWN0RGVsZXRlcjxHUGF0dGVyblNw
ZWM+OjpvcGVyYXRvcik6CisgICAgICAgIChXVEY6OkdPYmplY3REZWxldGVyPEdEaXI+OjpvcGVy
YXRvcik6CisgICAgICAgIChXVEY6OkdPYmplY3REZWxldGVyPEdUaW1lcj46Om9wZXJhdG9yKToK
KyAgICAgICAgKFdURjo6R09iamVjdERlbGV0ZXI8R0tleUZpbGU+OjpvcGVyYXRvcik6CisgICAg
ICAgICogd3RmL2dvYmplY3QvR093blB0ci5oOgorICAgICAgICAoV1RGOjpHT2JqZWN0RGVsZXRl
cjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6OkdPd25QdHI6OkdPd25QdHIpOgorICAgICAg
ICAoV1RGOjpHT3V0UHRyOjpHT3V0UHRyKToKKyAgICAgICAgKFdURjo6R091dFB0cjo6fkdPdXRQ
dHIpOgorICAgICAgICAoV1RGOjpHT3V0UHRyOjpvcGVyYXRvcigpKToKKwogMjAxNC0wMS0xNCAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFuZCB5ZXQg
YW5vdGhlciBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RjZjNmMGU3MTJhMDFjMmE0ZTA0OTYx
NGZjNjFhZWEwYmY3ZTZmZC4uOGQwMjhlOTBlZGU2YjRhMWM3NDJlODUzZmU4MGM1NzRiYjRhY2Jl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE0LTAxLTE1ICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBCYXNlIEdPd25QdHIgb24gc3RkOjp1
bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjYyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBHT3duUHRyIGlzIG5vdyBpbmhlcml0aW5nIGZyb20gc3RkOjp1bmlxdWVfcHRyLCBzbyB0aGUg
Zm9sbG93aW5nIHVzZXMgYXJlIGNoYW5nZWQ6CisgICAgICAgIC0gR093blB0cjxUPjo6c2V0KFQq
KSBpcyBub3cgR093blB0cjxUPjo6cmVzZXQoVCopLAorICAgICAgICAtIEdPd25QdHI8VD46OmNs
ZWFyKCkgaXMgbm93IEdPd25QdHI8VD46OnJlc2V0KCksCisgICAgICAgIC0gR093blB0cjxUPjo6
b3V0UHRyKCkgaXMgcmVwbGFjZWQgYnkgR091dFB0cjxUPi4KKworICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcDoKKyAgICAgICAgKGdl
dEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVNZXNzYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHA6CisgICAgICAgIChCYXR0ZXJ5UHJv
dmlkZXJVUG93ZXI6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5p
dGlhbGl6ZUdTdHJlYW1lcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldFRhZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcDoKKyAgICAgICAgKHdlYktpdE1lZGlhU3JjQWRkU3JjKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKHdlYktpdFdlYlNyY1N0YXJ0KToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFt
aW5nQ2xpZW50Ojp3YXNCbG9ja2VkKToKKyAgICAgICAgKFJlc291cmNlSGFuZGxlU3RyZWFtaW5n
Q2xpZW50OjpjYW5ub3RTaG93VVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEZyb21GaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR093blB0ckd0ay5jcHA6Cisg
ICAgICAgIChXVEY6OkdPYmplY3REZWxldGVyPEdka0V2ZW50Pjo6b3BlcmF0b3IpOgorICAgICAg
ICAoV1RGOjpHT2JqZWN0RGVsZXRlcjxHdGtJY29uSW5mbz46Om9wZXJhdG9yKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvR093blB0ckd0ay5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HYW1l
cGFkc0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkRGV2aWNlR3RrOjpyZWFkQ2Fs
bGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHdGtJbnB1dE1ldGhvZEZpbHRlcjo6aGFuZGxlUHJlZWRpdENo
YW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmZpbGxEYXRhT2JqZWN0RnJvbURyb3BE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnN5c3RlbUZvbnQpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9TaGFyZWRCdWZmZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvZ3RrL0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
ZGVudGlhbEZvckNoYWxsZW5nZUFzeW5jUmVhZHlDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNwcDoKKyAgICAgICAgKFdURjo6R09iamVjdERl
bGV0ZXI8U291cEJ1ZmZlcj46Om9wZXJhdG9yKToKKyAgICAgICAgKFdURjo6R09iamVjdERlbGV0
ZXI8U291cENvb2tpZT46Om9wZXJhdG9yKToKKyAgICAgICAgKFdURjo6R09iamVjdERlbGV0ZXI8
U291cE1lc3NhZ2VIZWFkZXJzPjo6b3BlcmF0b3IpOgorICAgICAgICAoV1RGOjpHT2JqZWN0RGVs
ZXRlcjxTb3VwVVJJPjo6b3BlcmF0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291
cC9HT3duUHRyU291cC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmVuc3Vy
ZVJlYWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVkaXJlY3RTa2lwQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRNdWx0aXBhcnRSZXNwb25zZVBhcnRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpzZW5kUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEZpbGVU
b1NvdXBNZXNzYWdlQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTb3VwUmVxdWVzdEFu
ZE1lc3NhZ2VGb3JIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29ubmVjdGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6cmVh
ZFJlYWR5Q2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNzaW9uOjpo
dHRwUHJveHkpOgorICAgICAgICAqIHBsYXRmb3JtL25peC9GaWxlU3lzdGVtTml4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlYWRGcm9tRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vc291cC9T
aGFyZWRCdWZmZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y2xlYXJQbGF0Zm9y
bURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpoYXNQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsdWdpbnMvZ3RrL1BsdWdpblBhY2thZ2VHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6bG9hZCk6CisKIDIwMTQtMDEtMTQgIENoYW5nU2VvayBP
aCAgPGNoYW5nc2Vvay5vaEBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQgZml4IGFmdGVyIHIxNjE5ODAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMjEyNThkYmViYTNlYWJh
ZDZjYmZmYmVmMTlkNGYyOTE3YmFjYTM1OS4uNmU5NjUyM2NlMDQyNGQxYjU1ZTZkZTkzNjY3YzUx
MmRjMmY1ZmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE0LTAxLTE1
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBCYXNlIEdP
d25QdHIgb24gc3RkOjp1bmlxdWVfcHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjYyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBHT3duUHRyIGlzIG5vdyBpbmhlcml0aW5nIGZyb20gc3RkOjp1bmlx
dWVfcHRyLCBzbyB0aGUgZm9sbG93aW5nIHVzZXMgYXJlIGNoYW5nZWQ6CisgICAgICAgIC0gR093
blB0cjxUPjo6c2V0KFQqKSBpcyBub3cgR093blB0cjxUPjo6cmVzZXQoVCopLAorICAgICAgICAt
IEdPd25QdHI8VD46OmNsZWFyKCkgaXMgbm93IEdPd25QdHI8VD46OnJlc2V0KCksCisgICAgICAg
IC0gR093blB0cjxUPjo6b3V0UHRyKCkgaXMgcmVwbGFjZWQgYnkgR091dFB0cjxUPi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQpOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXRkb3dubG9hZC5jcHA6CisgICAgICAgICh3ZWJraXRfZG93bmxvYWRf
b3Blbl9zdHJlYW1fZm9yX3VyaSk6CisgICAgICAgICh3ZWJraXRfZG93bmxvYWRfc2V0X2Rlc3Rp
bmF0aW9uX3VyaSk6CisgICAgICAgICh3ZWJraXRfZG93bmxvYWRfcmVjZWl2ZWRfZGF0YSk6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHA6CisgICAgICAgICh3ZWJr
aXRfZmF2aWNvbl9kYXRhYmFzZV9zZXRfcGF0aCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdGhp
dHRlc3RyZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAqIHdlYmtp
dC93ZWJraXRpY29uZGF0YWJhc2UuY3BwOgorICAgICAgICAod2Via2l0X2ljb25fZGF0YWJhc2Vf
c2V0X3BhdGgpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwOgorICAgICAg
ICAod2Via2l0X3dlYl9wbHVnaW5fZ2V0X3BhdGgpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19leHBvc2VfZXZlbnQpOgorCiAy
MDE0LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU09VUF0gQWRkIFNvdXBOZXR3b3JrU2Vzc2lvbiBjbGFzcyB0byB3cmFwIGEgU291
cFNlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMmFlMDgyZTgyYmJlNDdjNGI4NTI4ZTYyNDE5MDNmOGI3
MTAxYWYzLi5lY2ZlOTI5OTQyOWFmNWQ5YjVkZmQ2M2RjNWNlOWQ5M2M5Njc2NDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTQtMDEtMTUgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgorCisgICAgICAgIEJhc2UgR093blB0ciBvbiBzdGQ6OnVuaXF1ZV9wdHIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjI1NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdPd25QdHIg
aXMgbm93IGluaGVyaXRpbmcgZnJvbSBzdGQ6OnVuaXF1ZV9wdHIsIHNvIHRoZSBmb2xsb3dpbmcg
dXNlcyBhcmUgY2hhbmdlZDoKKyAgICAgICAgLSBHT3duUHRyPFQ+OjpzZXQoVCopIGlzIG5vdyBH
T3duUHRyPFQ+OjpyZXNldChUKiksCisgICAgICAgIC0gR093blB0cjxUPjo6Y2xlYXIoKSBpcyBu
b3cgR093blB0cjxUPjo6cmVzZXQoKSwKKyAgICAgICAgLSBHT3duUHRyPFQ+OjpvdXRQdHIoKSBp
cyByZXBsYWNlZCBieSBHT3V0UHRyPFQ+LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZXRDYWNoZURpc2tG
cmVlU2l6ZSk6CisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
ICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OmRlY29k
ZUdLZXlGaWxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5j
cHA6CisgICAgICAgICh3ZWJraXREb3dubG9hZE5vdGlmeVByb2dyZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAocHJv
Y2Vzc1BlbmRpbmdJY29uc0ZvclBhZ2VVUkwpOgorICAgICAgICAod2Via2l0X2Zhdmljb25fZGF0
YWJhc2VfZ2V0X2Zhdmljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVJlcXVlc3QuY3BwOgorICAgICAgICAod2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRl
cnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3Qu
Y3BwOgorICAgICAgICAod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKToKKyAg
ICAgICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3BhdGgpOgorICAgICAgICAod2Vi
a2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChnb3RGYXZpY29uQ2FsbGJhY2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUHJlc3NFdmVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpwbGF0Zm9ybVJlc291cmNlRm9yUGF0aCk6
CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBsdWdpbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6Z2V0Q2FjaGVEaXNrRnJlZVNpemUpOgorCiAyMDE0LTAxLTE0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVSSBwcm9jZXNz
IGNyYXNoZXMgd2hlbiBjbG9zaW5nIHRoZSB3aW5kb3cgcmlnaHQgYWZ0ZXIgcHJpbnRpbmcgd2l0
aCBqYXZhc2NyaXB0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25QdHIu
Y3BwIGIvU291cmNlL1dURi93dGYvZ29iamVjdC9HT3duUHRyLmNwcAppbmRleCA1OTM1NmQ2MjFj
NDY1NWNiYWM1MTViNjEyZGFmNWRhZTk3NzAyYzQwLi4zNWU4MGY0Y2U3YWU0MmVhMWNkODA2M2Qw
MmYwODk1MzkxYzJhZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dPd25Q
dHIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0ci5jcHAKQEAgLTI2LDQ0
ICsyNiwzOSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGUgPD4gV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZnJlZU93bmVkR1B0cjxHRXJyb3I+KEdFcnJvciogcHRyKQordm9pZCBHT2Jq
ZWN0RGVsZXRlcjxHRXJyb3I+OjpvcGVyYXRvcigpKEdFcnJvciogcHRyKSBjb25zdAogewotICAg
IGlmIChwdHIpCi0gICAgICAgIGdfZXJyb3JfZnJlZShwdHIpOworICAgIGdfZXJyb3JfZnJlZShw
dHIpOwogfQogCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0xpc3Q+KEdMaXN0KiBw
dHIpCit2b2lkIEdPYmplY3REZWxldGVyPEdMaXN0Pjo6b3BlcmF0b3IoKShHTGlzdCogcHRyKSBj
b25zdAogewogICAgIGdfbGlzdF9mcmVlKHB0cik7CiB9CiAKLXRlbXBsYXRlIDw+IHZvaWQgZnJl
ZU93bmVkR1B0cjxHU0xpc3Q+KEdTTGlzdCogcHRyKQordm9pZCBHT2JqZWN0RGVsZXRlcjxHU0xp
c3Q+OjpvcGVyYXRvcigpKEdTTGlzdCogcHRyKSBjb25zdAogewogICAgIGdfc2xpc3RfZnJlZShw
dHIpOwogfQogCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1BhdHRlcm5TcGVjPihH
UGF0dGVyblNwZWMqIHB0cikKK3ZvaWQgR09iamVjdERlbGV0ZXI8R1BhdHRlcm5TcGVjPjo6b3Bl
cmF0b3IoKShHUGF0dGVyblNwZWMqIHB0cikgY29uc3QKIHsKLSAgICBpZiAocHRyKQotICAgICAg
ICBnX3BhdHRlcm5fc3BlY19mcmVlKHB0cik7CisgICAgZ19wYXR0ZXJuX3NwZWNfZnJlZShwdHIp
OwogfQogCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0Rpcj4oR0RpciogcHRyKQor
dm9pZCBHT2JqZWN0RGVsZXRlcjxHRGlyPjo6b3BlcmF0b3IoKShHRGlyKiBwdHIpIGNvbnN0CiB7
Ci0gICAgaWYgKHB0cikKLSAgICAgICAgZ19kaXJfY2xvc2UocHRyKTsKKyAgICBnX2Rpcl9jbG9z
ZShwdHIpOwogfQogCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1RpbWVyPihHVGlt
ZXIqIHB0cikKK3ZvaWQgR09iamVjdERlbGV0ZXI8R1RpbWVyPjo6b3BlcmF0b3IoKShHVGltZXIq
IHB0cikgY29uc3QKIHsKLSAgICBpZiAocHRyKQotICAgICAgICBnX3RpbWVyX2Rlc3Ryb3kocHRy
KTsKKyAgICBnX3RpbWVyX2Rlc3Ryb3kocHRyKTsKIH0KIAotdGVtcGxhdGUgPD4gdm9pZCBmcmVl
T3duZWRHUHRyPEdLZXlGaWxlPihHS2V5RmlsZSogcHRyKQordm9pZCBHT2JqZWN0RGVsZXRlcjxH
S2V5RmlsZT46Om9wZXJhdG9yKCkoR0tleUZpbGUqIHB0cikgY29uc3QKIHsKLSAgICBpZiAocHRy
KQotICAgICAgICBnX2tleV9maWxlX2ZyZWUocHRyKTsKKyAgICBnX2tleV9maWxlX2ZyZWUocHRy
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dPd25QdHIuaCBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0ci5oCmluZGV4
IGNkMjYyM2I4MGJjZjRhMTAzNzg5MjgyYjAxMjA0ZmMxZjMzYTlkZWIuLjNjYzA3OGYzZjdiN2Ji
OTE3ODlkMmMxMjA3OTRkMmRjODUxNmY5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR093blB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR093blB0ci5oCkBA
IC0yNCwxMTkgKzI0LDkzIEBACiAKICNpZiBVU0UoR0xJQikKIAotI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HVHlwZWRlZnMu
aD4KIAogZXh0ZXJuICJDIiB2b2lkIGdfZnJlZSh2b2lkKik7CiAKIG5hbWVzcGFjZSBXVEYgewog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgZnJlZU93bmVkR1B0cihUKiBwdHIp
OwotdGVtcGxhdGU8PiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBmcmVlT3duZWRHUHRyPEdFcnJv
cj4oR0Vycm9yKik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHTGlzdD4oR0xpc3Qq
KTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdTTGlzdD4oR1NMaXN0Kik7Ci10ZW1w
bGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHUGF0dGVyblNwZWM+KEdQYXR0ZXJuU3BlYyopOwot
dGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0Rpcj4oR0RpciopOwotdGVtcGxhdGU8PiB2
b2lkIGZyZWVPd25lZEdQdHI8R1RpbWVyPihHVGltZXIqKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVl
T3duZWRHUHRyPEdLZXlGaWxlPihHS2V5RmlsZSopOwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0
cnVjdCBHT2JqZWN0RGVsZXRlciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHB0cikgY29uc3Qg
eyBnX2ZyZWUocHRyKTsgfQorfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdPd25Q
dHIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdPd25QdHIpOwotcHVibGljOgotICAgIGV4
cGxpY2l0IEdPd25QdHIoVCogcHRyID0gMCkgOiBtX3B0cihwdHIpIHsgfQotICAgIH5HT3duUHRy
KCkgeyBmcmVlT3duZWRHUHRyKG1fcHRyKTsgfQordGVtcGxhdGU8Pgorc3RydWN0IEdPYmplY3RE
ZWxldGVyPEdFcnJvcj4geworICAgIHZvaWQgb3BlcmF0b3IoKShHRXJyb3IqKSBjb25zdDsKK307
CiAKLSAgICBUKiBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgIFQqIHJlbGVhc2Uo
KQotICAgIHsKLSAgICAgICAgVCogcHRyID0gbV9wdHI7Ci0gICAgICAgIG1fcHRyID0gMDsKLSAg
ICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Cit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR09iamVjdERlbGV0
ZXI8R0xpc3Q+IHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoR0xpc3QqKSBjb25zdDsKK307CiAKLSAg
ICBUKiYgb3V0UHRyKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9wdHIpOwotICAgICAgICBy
ZXR1cm4gbV9wdHI7Ci0gICAgfQordGVtcGxhdGU8Pgorc3RydWN0IEdPYmplY3REZWxldGVyPEdT
TGlzdD4geworICAgIHZvaWQgb3BlcmF0b3IoKShHU0xpc3QqKSBjb25zdDsKK307CisKK3RlbXBs
YXRlPD4KK3N0cnVjdCBHT2JqZWN0RGVsZXRlcjxHUGF0dGVyblNwZWM+IHsKKyAgICB2b2lkIG9w
ZXJhdG9yKCkoR1BhdHRlcm5TcGVjKikgY29uc3Q7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3Qg
R09iamVjdERlbGV0ZXI8R0Rpcj4geworICAgIHZvaWQgb3BlcmF0b3IoKShHRGlyKikgY29uc3Q7
Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgR09iamVjdERlbGV0ZXI8R1RpbWVyPiB7CisgICAg
dm9pZCBvcGVyYXRvcigpKEdUaW1lciopIGNvbnN0OworfTsKIAotICAgIHZvaWQgc2V0KFQqIHB0
cikKK3RlbXBsYXRlPD4KK3N0cnVjdCBHT2JqZWN0RGVsZXRlcjxHS2V5RmlsZT4geworICAgIHZv
aWQgb3BlcmF0b3IoKShHS2V5RmlsZSopIGNvbnN0OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgR093blB0ciA6IHB1YmxpYyBzdGQ6OnVuaXF1ZV9wdHI8VCwgR09iamVjdERl
bGV0ZXI8VD4+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHT3duUHRyKTsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBHT3duUHRyKFQqIHB0ciA9IG51bGxwdHIpCisgICAgICAgIDogc3RkOjp1
bmlxdWVfcHRyPFQsIEdPYmplY3REZWxldGVyPFQ+PihwdHIpCiAgICAgewotICAgICAgICBBU1NF
UlQoIXB0ciB8fCBtX3B0ciAhPSBwdHIpOwotICAgICAgICBmcmVlT3duZWRHUHRyKG1fcHRyKTsK
LSAgICAgICAgbV9wdHIgPSBwdHI7CiAgICAgfQorfTsKIAotICAgIHZvaWQgY2xlYXIoKQordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEdPdXRQdHIgeworcHVibGljOgorICAgIEdPdXRQdHIo
R093blB0cjxUPiYgb3duZWRQdHIpCisgICAgICAgIDogbV9vd25lZFB0cihvd25lZFB0cikKKyAg
ICAgICAgLCBtX291dFB0cihudWxscHRyKQogICAgIHsKLSAgICAgICAgVCogcHRyID0gbV9wdHI7
Ci0gICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgZnJlZU93bmVkR1B0cihwdHIpOwogICAgIH0K
IAotICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0CisgICAgfkdPdXRQdHIoKQogICAgIHsKLSAgICAg
ICAgQVNTRVJUKG1fcHRyKTsKLSAgICAgICAgcmV0dXJuICptX3B0cjsKKyAgICAgICAgQVNTRVJU
KCFtX293bmVkUHRyLmdldCgpKTsKKyAgICAgICAgbV9vd25lZFB0ci5yZXNldChtX291dFB0cik7
CiAgICAgfQogCi0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0CisgICAgVComIG9wZXJhdG9yKCko
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcHRyKTsKLSAgICAgICAgcmV0dXJuIG1fcHRyOwor
ICAgICAgICByZXR1cm4gbV9vdXRQdHI7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdCB7IHJldHVybiAhbV9wdHI7IH0KLQotICAgIC8vIFRoaXMgY29udmVyc2lvbiBvcGVyYXRv
ciBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbiB0byBib29sIGJ1dCBub3QgdG8gb3RoZXIgaW50
ZWdlciB0eXBlcy4KLSAgICB0eXBlZGVmIFQqIEdPd25QdHI6OipVbnNwZWNpZmllZEJvb2xUeXBl
OwotICAgIG9wZXJhdG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0
ciA/ICZHT3duUHRyOjptX3B0ciA6IDA7IH0KLQotICAgIHZvaWQgc3dhcChHT3duUHRyJiBvKSB7
IHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7IH0KLQogcHJpdmF0ZToKLSAgICBUKiBtX3B0cjsK
KyAgICBHT3duUHRyPFQ+JiBtX293bmVkUHRyOworICAgIFQqIG1fb3V0UHRyOwogfTsKIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoR093blB0cjxUPiYgYSwgR093blB0
cjxUPiYgYikKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdPd25QdHI8VD4mIGEsIFUq
IGIpCi17IAotICAgIHJldHVybiBhLmdldCgpID09IGI7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBHT3du
UHRyPFU+JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgR093
blB0cjxUPiYgYSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0KLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oVCog
YSwgY29uc3QgR093blB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCi19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdHlwZW5hbWUgR093blB0cjxUPjo6UHRy
VHlwZSBnZXRQdHIoY29uc3QgR093blB0cjxUPiYgcCkKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsK
LX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGZyZWVPd25lZEdQdHIoVCog
cHRyKQotewotICAgIGdfZnJlZShwdHIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNp
bmcgV1RGOjpHT3duUHRyOwordXNpbmcgV1RGOjpHT3V0UHRyOwogCiAjZW5kaWYgLy8gVVNFKEdM
SUIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAppbmRleCA0OGY2YTI0MWY3
NTIzYWM5ZGUyNDg2MzFiOTBiOWI1MjI0MWQzM2M0Li4zOTY5NjE0MTAzNDUxMTUwNTU5MWRlZWZh
OGI1ZjAxM2NkYTEzZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCkBA
IC05MiwxMyArOTIsMTMgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0
Rm9yQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXQKIAogICAgIENvbG9yIGJn
Q29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKICAgICBpZiAoYmdDb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgYnVmZmVyLnNl
dChnX3N0cmR1cF9wcmludGYoIiVpLCVpLCVpIiwgYmdDb2xvci5yZWQoKSwgYmdDb2xvci5ncmVl
bigpLCBiZ0NvbG9yLmJsdWUoKSkpOworICAgICAgICBidWZmZXIucmVzZXQoZ19zdHJkdXBfcHJp
bnRmKCIlaSwlaSwlaSIsIGJnQ29sb3IucmVkKCksIGJnQ29sb3IuZ3JlZW4oKSwgYmdDb2xvci5i
bHVlKCkpKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBh
dGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9CR19DT0xPUiksIGJ1ZmZl
ci5nZXQoKSk7CiAgICAgfQogCiAgICAgQ29sb3IgZmdDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgaWYgKGZnQ29sb3IuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIGJ1ZmZlci5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSwlaSwlaSIsIGZnQ29s
b3IucmVkKCksIGZnQ29sb3IuZ3JlZW4oKSwgZmdDb2xvci5ibHVlKCkpKTsKKyAgICAgICAgYnVm
ZmVyLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWksJWksJWkiLCBmZ0NvbG9yLnJlZCgpLCBmZ0Nv
bG9yLmdyZWVuKCksIGZnQ29sb3IuYmx1ZSgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRr
QXR0cmlidXRlU2V0KHJlc3VsdCwgYXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhU
X0FUVFJfRkdfQ09MT1IpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KIApAQCAtMTIwLDEzICsxMjAs
MTMgQEAgc3RhdGljIEF0a0F0dHJpYnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJp
bGl0eU9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXQKICAgICB9CiAKICAgICBpZiAoaW5jbHVkZVJp
c2UpIHsKLSAgICAgICAgYnVmZmVyLnNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgYmFzZWxpbmVQ
b3NpdGlvbikpOworICAgICAgICBidWZmZXIucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSIsIGJh
c2VsaW5lUG9zaXRpb24pKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQo
cmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9SSVNFKSwg
YnVmZmVyLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoIXN0eWxlLT50ZXh0SW5kZW50KCkuaXNV
bmRlZmluZWQoKSkgewogICAgICAgICBpbnQgaW5kZW50YXRpb24gPSB2YWx1ZUZvckxlbmd0aChz
dHlsZS0+dGV4dEluZGVudCgpLCBvYmplY3QtPnNpemUoKS53aWR0aCgpLCAmcmVuZGVyZXItPnZp
ZXcoKSk7Ci0gICAgICAgIGJ1ZmZlci5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSIsIGluZGVudGF0
aW9uKSk7CisgICAgICAgIGJ1ZmZlci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgaW5kZW50
YXRpb24pKTsKICAgICAgICAgcmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBh
dGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRUUl9JTkRFTlQpLCBidWZmZXIu
Z2V0KCkpOwogICAgIH0KIApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBBdGtBdHRyaWJ1dGVT
ZXQqIGdldEF0dHJpYnV0ZVNldEZvckFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgQWNjZXNzaWJp
bGl0CiAgICAgICAgIGZvbnRXZWlnaHQgPSA5MDA7CiAgICAgfQogICAgIGlmIChmb250V2VpZ2h0
ID4gMCkgewotICAgICAgICBidWZmZXIuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWkiLCBmb250V2Vp
Z2h0KSk7CisgICAgICAgIGJ1ZmZlci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgZm9udFdl
aWdodCkpOwogICAgICAgICByZXN1bHQgPSBhZGRUb0F0a0F0dHJpYnV0ZVNldChyZXN1bHQsIGF0
a190ZXh0X2F0dHJpYnV0ZV9nZXRfbmFtZShBVEtfVEVYVF9BVFRSX1dFSUdIVCksIGJ1ZmZlci5n
ZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAK
aW5kZXggZGQyNDRiYTE2OTFlMTZkN2M0NDE2YTkxNzUxOTYzOGEyZmFmYjQzNi4uNWQxNGQ4OGZk
MWFhOGFiMDJhZjkwOWFkYzhjNjkzNjllYjg3MWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTU1LDExICsxNTUsMTEgQEAgZ2Jvb2xlYW4gQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQog
CiAgICAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpKSB7CiAgICAgY2FzZSBHU1Rf
TUVTU0FHRV9XQVJOSU5HOgotICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV93YXJuaW5nKG1lc3Nh
Z2UsICZlcnJvci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKKyAgICAgICAgZ3N0X21lc3Nh
Z2VfcGFyc2Vfd2FybmluZyhtZXNzYWdlLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpLCAmR091
dFB0cjxnY2hhcj4oZGVidWcpKCkpOwogICAgICAgICBnX3dhcm5pbmcoIldhcm5pbmc6ICVkLCAl
cy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9yLT5jb2RlLCAgZXJyb3ItPm1lc3NhZ2UsIGRlYnVn
LmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9FUlJPUjoKLSAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAm
ZGVidWcub3V0UHRyKCkpOworICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdl
LCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpLCAmR091dFB0cjxnY2hhcj4oZGVidWcpKCkpOwog
ICAgICAgICBnX3dhcm5pbmcoIkVycm9yOiAlZCwgJXMuIERlYnVnIG91dHB1dDogJXMiLCBlcnJv
ci0+Y29kZSwgIGVycm9yLT5tZXNzYWdlLCBkZWJ1Zy5nZXQoKSk7CiAgICAgICAgIGdzdF9lbGVt
ZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CiAgICAgICAgIG1faXNQ
bGF5aW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDY3MmFlYzFhZTA5ZDdiYTg1M2FhNTI0NWE4OTgyMDEyMmMxYzlmZmYuLmNlNzY3NDNlOTFj
NDFjYzg2ZjljMTExZTUxNmVhMjJmYWI1MzA0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwCkBAIC0yMTIsMTEgKzIxMiwxMSBAQCBnYm9vbGVhbiBBdWRpb0ZpbGVS
ZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdChtX2xvb3AuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9N
RVNTQUdFX1dBUk5JTkc6Ci0gICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcobWVzc2Fn
ZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOworICAgICAgICBnc3RfbWVzc2Fn
ZV9wYXJzZV93YXJuaW5nKG1lc3NhZ2UsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCksICZHT3V0
UHRyPGdjaGFyPihkZWJ1ZykoKSk7CiAgICAgICAgIGdfd2FybmluZygiV2FybmluZzogJWQsICVz
LiBEZWJ1ZyBvdXRwdXQ6ICVzIiwgZXJyb3ItPmNvZGUsICBlcnJvci0+bWVzc2FnZSwgZGVidWcu
Z2V0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9SOgotICAg
ICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyb3Iub3V0UHRyKCksICZk
ZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKG1lc3NhZ2Us
ICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCksICZHT3V0UHRyPGdjaGFyPihkZWJ1ZykoKSk7CiAg
ICAgICAgIGdfd2FybmluZygiRXJyb3I6ICVkLCAlcy4gRGVidWcgb3V0cHV0OiAlcyIsIGVycm9y
LT5jb2RlLCAgZXJyb3ItPm1lc3NhZ2UsIGRlYnVnLmdldCgpKTsKICAgICAgICAgbV9lcnJvck9j
Y3VycmVkID0gdHJ1ZTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX2xvb3AuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAK
aW5kZXggOTZiMjc1MzgzMTY4YzYzMGQ1NzI3MWUxNTA5NTdlZjg0ODViNWQxNS4uNTZiN2ViNmMx
YjZkNzQ1MzgxOTgxNmMyNjNlNjMyZTFkODUxYjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCkBAIC0zOCw5ICszOCw5IEBAIFBh
c3NSZWZQdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBj
aGFyKiBuYW1lLCBmbG9hdCBzYW1wCiAgICAgY29uc3QgY2hhciogZW52aXJvbm1lbnRQYXRoID0g
Z2V0ZW52KCJBVURJT19SRVNPVVJDRVNfUEFUSCIpOwogICAgIEdPd25QdHI8Z2NoYXI+IGFic29s
dXRlRmlsZW5hbWU7CiAgICAgaWYgKGVudmlyb25tZW50UGF0aCkKLSAgICAgICAgYWJzb2x1dGVG
aWxlbmFtZS5zZXQoZ19idWlsZF9maWxlbmFtZShlbnZpcm9ubWVudFBhdGgsIGZpbGVuYW1lLmdl
dCgpLCBOVUxMKSk7CisgICAgICAgIGFic29sdXRlRmlsZW5hbWUucmVzZXQoZ19idWlsZF9maWxl
bmFtZShlbnZpcm9ubWVudFBhdGgsIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CiAgICAgZWxzZQot
ICAgICAgICBhYnNvbHV0ZUZpbGVuYW1lLnNldChnX2J1aWxkX2ZpbGVuYW1lKHNoYXJlZFJlc291
cmNlc1BhdGgoKS5kYXRhKCksICJyZXNvdXJjZXMiLCAiYXVkaW8iLCBmaWxlbmFtZS5nZXQoKSwg
TlVMTCkpOworICAgICAgICBhYnNvbHV0ZUZpbGVuYW1lLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUo
c2hhcmVkUmVzb3VyY2VzUGF0aCgpLmRhdGEoKSwgInJlc291cmNlcyIsICJhdWRpbyIsIGZpbGVu
YW1lLmdldCgpLCBOVUxMKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoYWJz
b2x1dGVGaWxlbmFtZS5nZXQoKSwgZmFsc2UsIHNhbXBsZVJhdGUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0JhdHRlcnlQcm92aWRlclVQb3dlci5jcHAK
aW5kZXggNmE5ZjFiZjViNWY3ZDg5MmZlZjVmNGZjZDE0M2I0ZjllZmY0YWRmNC4uNGVkNzAxMDk1
YWYzYzgwMWUzZjRhNWNiMGU2OTgyNzJhNjkzYjA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9CYXR0ZXJ5UHJvdmlkZXJVUG93ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dsaWIvQmF0dGVyeVByb3ZpZGVyVVBvd2VyLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCB2b2lkIEJhdHRlcnlQcm92aWRlclVQb3dlcjo6c3RhcnRVcGRhdGluZygpCiAgICAg
bV91cG93ZXJDbGllbnQgPSBhZG9wdEdSZWYodXBfY2xpZW50X25ldygpKTsKIAogICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIXVwX2NsaWVudF9lbnVtZXJhdGVfZGV2aWNlc19z
eW5jKG1fdXBvd2VyQ2xpZW50LmdldCgpLCAwLCAmZXJyb3Iub3V0UHRyKCkpKSB7CisgICAgaWYg
KCF1cF9jbGllbnRfZW51bWVyYXRlX2RldmljZXNfc3luYyhtX3Vwb3dlckNsaWVudC5nZXQoKSwg
MCwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSkpIHsKICAgICAgICAgbV9jbGllbnQtPnVwZGF0
ZUJhdHRlcnlTdGF0dXMoTm90QXZhaWxhYmxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKaW5kZXggYzk2MzMwYzNhM2UyOTVmMmJjYTE0
OWFmMWQxYzg3YjJjNDlmNzM3NS4uNjFlMzcwNmUwZDY5YTA0NjNhYjlhODg3MDY3ZWUwMWQ2NGY2
OTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclV0aWxpdGllcy5jcHAKQEAgLTEyOCw3ICsxMjgs
NyBAQCBib29sIGluaXRpYWxpemVHU3RyZWFtZXIoKQogCiAgICAgR093blB0cjxHRXJyb3I+IGVy
cm9yOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgcGFzcyB0aGUgYXJndW1lbnRz
IGZyb20gdGhlIGNvbW1hbmQgbGluZS4KLSAgICBib29sIGdzdEluaXRpYWxpemVkID0gZ3N0X2lu
aXRfY2hlY2soMCwgMCwgJmVycm9yLm91dFB0cigpKTsKKyAgICBib29sIGdzdEluaXRpYWxpemVk
ID0gZ3N0X2luaXRfY2hlY2soMCwgMCwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShnc3RJbml0aWFsaXplZCwgIkdTdHJlYW1lciBpbml0aWFsaXph
dGlvbiBmYWlsZWQ6ICVzIiwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJ1bmtub3duIGVycm9y
IG9jY3VycmVkIik7CiAgICAgcmV0dXJuIGdzdEluaXRpYWxpemVkOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3ZDVjM2Y5YmY0ZDZh
NDE1YWMwMWJmYzU2YjU3NjMzN2I1MGRmZTRiLi45MDlkZTMxZjk1ZGIyMjI5MTdhNDVjZDUzNWY1
NmY2MjQ4YjRjYTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtOTc1LDcgKzk3NSw3IEBAIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGlmIChtX21pc3NpbmdQbHVnaW5zKQogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKG1lc3NhZ2UsICZlcnIub3V0UHRy
KCksICZkZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKG1l
c3NhZ2UsICZHT3V0UHRyPEdFcnJvcj4oZXJyKSgpLCAmR091dFB0cjxnY2hhcj4oZGVidWcpKCkp
OwogICAgICAgICBFUlJPUl9NRURJQV9NRVNTQUdFKCJFcnJvciAlZDogJXMgKHVybD0lcykiLCBl
cnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
ICAgICAgICAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RTKEdTVF9CSU4obV9wbGF5
QmluLmdldCgpKSwgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCAid2Via2l0LXZpZGVvLmVycm9y
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXgg
YTZmOTI3Zjc2ZWRhNDU0MmQzZTI2OGRiZDBjNGU4ZmRjOWM3ZDA5OC4uNzQ0MGJkODdmZDMyM2I1
YmU2OThiYjNjYWY3YjNjN2NiMTQ4ZjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZh
dGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZkFjdGl2ZUNoYW5nZWQoKQogYm9vbCBUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIq
IHRhZ05hbWUsIFN0cmluZyYgdmFsdWUpCiB7CiAgICAgR093blB0cjxnY2hhcj4gdGFnVmFsdWU7
Ci0gICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1
ZS5vdXRQdHIoKSkpIHsKKyAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgdGFn
TmFtZSwgJkdPdXRQdHI8Z2NoYXI+KHRhZ1ZhbHVlKSgpKSkgewogICAgICAgICBJTkZPX01FRElB
X01FU1NBR0UoIlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1
ZS5nZXQoKSk7CiAgICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAK
aW5kZXggNTVkY2U5NTRhMTYyOTBjNTE5NTQxMTYwNzJmYzU4YzhlOTcwZWM0My4uMTMwMDJiMTRj
M2ZlMDhmZjJlZWNhNTlkMTc0NTJkMWEwMmM0NDRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIHZv
aWQgd2ViS2l0TWVkaWFTcmNBZGRTcmMoV2ViS2l0TWVkaWFTcmMqIHNyYywgR3N0RWxlbWVudCog
ZWxlbWVudCkKICAgICB9CiAKICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50
KGVsZW1lbnQpOwotICAgIG5hbWUuc2V0KGdfc3RyZHVwX3ByaW50Zigic3JjXyV1IiwgcHJpdi0+
bmJTb3VyY2UpKTsKKyAgICBuYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigic3JjXyV1IiwgcHJp
di0+bmJTb3VyY2UpKTsKICAgICBnaG9zdFBhZCA9IFdlYkNvcmU6OndlYmtpdEdzdEdob3N0UGFk
RnJvbVN0YXRpY1RlbXBsYXRlKCZzcmNUZW1wbGF0ZSwgbmFtZS5nZXQoKSwgdGFyZ2V0c3JjLmdl
dCgpKTsKICAgICBnc3RfcGFkX3NldF9hY3RpdmUoZ2hvc3RQYWQsIFRSVUUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDNhZWU0OGM0OWRkM2E0
OGY4OTQ5MDI3ZDM5YzEzOGYwODQ4ODkwZDEuLjgyYTQ1MGNiYjM1NGU4NWQ5YWYxZTUzOTQ5NjI1
NDg5NGZmODM5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCkBAIC01MDIsOSArNTAyLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0
KFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoIlF1
aWNrdGltZS83LjYuNiIpOwogCiAgICAgaWYgKHByaXYtPnJlcXVlc3RlZE9mZnNldCkgewotICAg
ICAgICBHT3duUHRyPGdjaGFyPiB2YWw7Ci0KLSAgICAgICAgdmFsLnNldChnX3N0cmR1cF9wcmlu
dGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0iLCBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQp
KTsKKyAgICAgICAgR093blB0cjxnY2hhcj4gdmFsKGdfc3RyZHVwX3ByaW50ZigiYnl0ZXM9JSIg
R19HVUlOVDY0X0ZPUk1BVCAiLSIsIHByaXYtPnJlcXVlc3RlZE9mZnNldCkpOwogICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUmFuZ2UiLCB2YWwuZ2V0KCkpOwogICAgIH0KICAg
ICBwcml2LT5vZmZzZXQgPSBwcml2LT5yZXF1ZXN0ZWRPZmZzZXQ7CkBAIC0xMTUwLDEyICsxMTQ4
LDExIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yCiB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFt
aW5nQ2xpZW50Ojp3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikKIHsKICAgICBXZWJLaXRXZWJT
cmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKLSAgICBHT3duUHRyPGdjaGFy
PiB1cmk7CiAKICAgICBHU1RfRVJST1JfT0JKRUNUKHNyYywgIlJlcXVlc3Qgd2FzIGJsb2NrZWQi
KTsKIAogICAgIEdNdXRleExvY2tlciBsb2NrZXIoR1NUX09CSkVDVF9HRVRfTE9DSyhzcmMpKTsK
LSAgICB1cmkuc2V0KGdfc3RyZHVwKHNyYy0+cHJpdi0+dXJpKSk7CisgICAgR093blB0cjxnY2hh
cj4gdXJpKGdfc3RyZHVwKHNyYy0+cHJpdi0+dXJpKSk7CiAgICAgbG9ja2VyLnVubG9jaygpOwog
CiAgICAgR1NUX0VMRU1FTlRfRVJST1Ioc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELCAoIkFjY2Vz
cyB0byBcIiVzXCIgd2FzIGJsb2NrZWQiLCB1cmkuZ2V0KCkpLCAoMCkpOwpAQCAtMTE2NCwxMiAr
MTE2MSwxMSBAQCB2b2lkIFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50Ojp3YXNCbG9ja2Vk
KFJlc291cmNlSGFuZGxlKikKIHZvaWQgUmVzb3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQ6OmNh
bm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0g
V0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwotICAgIEdPd25QdHI8Z2NoYXI+IHVyaTsKIAog
ICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiQ2Fubm90IHNob3cgVVJMIik7CiAKICAgICBHTXV0
ZXhMb2NrZXIgbG9ja2VyKEdTVF9PQkpFQ1RfR0VUX0xPQ0soc3JjKSk7Ci0gICAgdXJpLnNldChn
X3N0cmR1cChzcmMtPnByaXYtPnVyaSkpOworICAgIEdPd25QdHI8Z2NoYXI+IHVyaShnX3N0cmR1
cChzcmMtPnByaXYtPnVyaSkpOwogICAgIGxvY2tlci51bmxvY2soKTsKIAogICAgIEdTVF9FTEVN
RU5UX0VSUk9SKHNyYywgUkVTT1VSQ0UsIE9QRU5fUkVBRCwgKCJDYW4ndCBzaG93IFwiJXNcIiIs
IHVyaS5nZXQoKSksICgwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvSW1hZ2VCdWZmZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcAppbmRleCA5YjY5M2UzZjJjNjE0M2I2M2Vi
M2VjOTRjOTdlM2QzOTFhZDkxY2VhLi5iN2Q5NzBhMWFhM2Y5ODNjZGYxOTMyYmY3OTIzMGU3ZTM4
ZDgxYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
SW1hZ2VCdWZmZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUJ1ZmZlckd0ay5jcHAKQEAgLTIxLDExICsyMSwxMSBAQAogCiAjaW5jbHVkZSAi
Q2Fpcm9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJHZGtDYWlyb1V0aWxpdGllcy5oIgotI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCiAjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgPGNhaXJvLmg+CiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC02OCw5ICs2OCw5IEBAIHN0YXRpYyBib29sIGVu
Y29kZUltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QKICAgICBHRXJyb3IqIGVycm9yID0gMDsKICAgICBpZiAodHlwZSA9PSAianBlZyIg
JiYgcXVhbGl0eSAmJiAqcXVhbGl0eSA+PSAwLjAgJiYgKnF1YWxpdHkgPD0gMS4wKSB7CiAgICAg
ICAgIFN0cmluZyBxdWFsaXR5U3RyaW5nID0gU3RyaW5nOjpmb3JtYXQoIiVkIiwgc3RhdGljX2Nh
c3Q8aW50PigqcXVhbGl0eSAqIDEwMC4wICsgMC41KSk7Ci0gICAgICAgIGdka19waXhidWZfc2F2
ZV90b19idWZmZXIocGl4YnVmLmdldCgpLCAmYnVmZmVyLm91dFB0cigpLCAmYnVmZmVyU2l6ZSwg
dHlwZS51dGY4KCkuZGF0YSgpLCAmZXJyb3IsICJxdWFsaXR5IiwgcXVhbGl0eVN0cmluZy51dGY4
KCkuZGF0YSgpLCBOVUxMKTsKKyAgICAgICAgZ2RrX3BpeGJ1Zl9zYXZlX3RvX2J1ZmZlcihwaXhi
dWYuZ2V0KCksICZHT3V0UHRyPGdjaGFyPihidWZmZXIpKCksICZidWZmZXJTaXplLCB0eXBlLnV0
ZjgoKS5kYXRhKCksICZlcnJvciwgInF1YWxpdHkiLCBxdWFsaXR5U3RyaW5nLnV0ZjgoKS5kYXRh
KCksIE5VTEwpOwogICAgIH0gZWxzZQotICAgICAgICBnZGtfcGl4YnVmX3NhdmVfdG9fYnVmZmVy
KHBpeGJ1Zi5nZXQoKSwgJmJ1ZmZlci5vdXRQdHIoKSwgJmJ1ZmZlclNpemUsIHR5cGUudXRmOCgp
LmRhdGEoKSwgJmVycm9yLCBOVUxMKTsKKyAgICAgICAgZ2RrX3BpeGJ1Zl9zYXZlX3RvX2J1ZmZl
cihwaXhidWYuZ2V0KCksICZHT3V0UHRyPGdjaGFyPihidWZmZXIpKCksICZidWZmZXJTaXplLCB0
eXBlLnV0ZjgoKS5kYXRhKCksICZlcnJvciwgTlVMTCk7CiAKICAgICByZXR1cm4gIWVycm9yOwog
fQpAQCAtNzksNyArNzksNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqIHF1YWxpdHksIENvbwogewogICAgIEFTU0VS
VChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyht
aW1lVHlwZSkpOwogCi0gICAgR093blB0cjxnY2hhcj4gYnVmZmVyKDApOworICAgIEdPd25QdHI8
Z2NoYXI+IGJ1ZmZlcjsKICAgICBnc2l6ZSBidWZmZXJTaXplOwogICAgIGlmICghZW5jb2RlSW1h
Z2UobV9kYXRhLm1fc3VyZmFjZS5nZXQoKSwgbWltZVR5cGUsIHF1YWxpdHksIGJ1ZmZlciwgYnVm
ZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiAiZGF0YTosIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCmluZGV4IDgwYWI2NmZhMjYyZmQ3
ODVhZWQ0YzZkODE3MTliZmNhOWRjNjE3N2IuLmQ0Nzg5YzdhNzYyZWYxNDhmNmZiOGFiY2QzMGVj
MzFhYmJlZDljY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9JbWFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ltYWdlR3RrLmNwcApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGxvYWRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihDU3RyaW5nIG5hbWUpCiB7CiAgICAg
R093blB0cjxnY2hhcj4gY29udGVudDsKICAgICBnc2l6ZSBsZW5ndGg7Ci0gICAgaWYgKCFnX2Zp
bGVfZ2V0X2NvbnRlbnRzKG5hbWUuZGF0YSgpLCAmY29udGVudC5vdXRQdHIoKSwgJmxlbmd0aCwg
MCkpCisgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKG5hbWUuZGF0YSgpLCAmR091dFB0cjxn
Y2hhcj4oY29udGVudCkoKSwgJmxlbmd0aCwgMCkpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogCiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnQu
Z2V0KCksIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVj
dEd0ay5jcHAKaW5kZXggMTc3OWQ1Mjk3YTQ5YTAzNThmNjRiMDY1MjhjMzg5NTJlNmZhMTBhYS4u
ODNhMGM1ZTNiZWYyNGY3ZDQ3ZmQzMzE1NjQ0MWU3YTQyNTZmZDk0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBA
IHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJp
bmcpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsK
LSAgICAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfZmlsZW5hbWVfZnJvbV91cmko
bGluZS51dGY4KCkuZGF0YSgpLCAwLCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICAgICAgICAgIEdP
d25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfZmlsZW5hbWVfZnJvbV91cmkobGluZS51dGY4KCkuZGF0
YSgpLCAwLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKSk7CiAgICAgICAgICAgICBpZiAoIWVy
cm9yICYmIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIG1fZmlsZW5hbWVzLmFwcGVuZChTdHJp
bmc6OmZyb21VVEY4KGZpbGVuYW1lLmdldCgpKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAppbmRleCAyN2M0YWIwNDU4ZWQ3N2I0
NWVlYjYzMGI5ZjY4MjExMzExYmVhMDE2Li5jOGI3OTRlNWRkNDE1N2Q3YjJkNzhlZjg1Mjk2NzY2
NjkzNGVjNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5
c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1H
dGsuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKICAgICBkbyB7CiAgICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0
cmVhbV9yZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxl
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEs
IGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgICAgIGRhdGEsIGxlbmd0aCwg
MCwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgICAgIGlmIChieXRlc1JlYWQgPj0g
MCkKICAgICAgICAgICAgIHJldHVybiBieXRlc1JlYWQ7CiAgICAgfSB3aGlsZSAoZXJyb3IgJiYg
ZXJyb3ItPmNvZGUgPT0gR19GSUxFX0VSUk9SX0lOVFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0dPd25QdHJHdGsuY3BwCmluZGV4IDliNjkzZjQxNWU5NzgyNDdmZDNjOTM4NGQ0ZWQy
NTFlZTA0OWI4ZjAuLjczOTc2YmFhYzM1MzgwNmUxNmYzZGM2NzAwMGNjNmYyOTBkNzZiYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0ay5jcHAKQEAgLTIzLDE2ICsy
MywxNCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGUgPD4gdm9pZCBmcmVlT3duZWRH
UHRyPEdka0V2ZW50PihHZGtFdmVudCogcHRyKQordm9pZCBHT2JqZWN0RGVsZXRlcjxHZGtFdmVu
dD46Om9wZXJhdG9yKCkoR2RrRXZlbnQqIHB0cikgY29uc3QKIHsKLSAgICBpZiAocHRyKQotICAg
ICAgICBnZGtfZXZlbnRfZnJlZShwdHIpOworICAgIGdka19ldmVudF9mcmVlKHB0cik7CiB9CiAK
LXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHdGtJY29uSW5mbz4oR3RrSWNvbkluZm8q
IGluZm8pCit2b2lkIEdPYmplY3REZWxldGVyPEd0a0ljb25JbmZvPjo6b3BlcmF0b3IoKShHdGtJ
Y29uSW5mbyogcHRyKSBjb25zdAogewotICAgIGlmIChpbmZvKQotICAgICAgICBndGtfaWNvbl9p
bmZvX2ZyZWUoaW5mbyk7CisgICAgZ3RrX2ljb25faW5mb19mcmVlKHB0cik7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3duUHRyR3RrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR093blB0ckd0ay5oCmluZGV4IGJkNWU4MzcxZWQzNjhm
NDE1ZDg5NzQzMjRlZTYyZDcxZmViN2EyZDcuLjVmMzZjOTVkYzY2Y2Y4MjM0MzFmNDE1ZjNmNTVh
YzFhMGEzMjk5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HT3du
UHRyR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0dPd25QdHJHdGsuaApA
QCAtMjQsOCArMjQsMTUgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlIDw+IHZvaWQg
ZnJlZU93bmVkR1B0cjxHZGtFdmVudD4oR2RrRXZlbnQqKTsKLXRlbXBsYXRlIDw+IHZvaWQgZnJl
ZU93bmVkR1B0cjxHdGtJY29uSW5mbz4oR3RrSWNvbkluZm8qKTsKK3RlbXBsYXRlPD4KK3N0cnVj
dCBHT2JqZWN0RGVsZXRlcjxHZGtFdmVudD4geworICAgIHZvaWQgb3BlcmF0b3IoKShHZGtFdmVu
dCopIGNvbnN0OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEdPYmplY3REZWxldGVyPEd0a0lj
b25JbmZvPiB7CisgICAgdm9pZCBvcGVyYXRvcigpKEd0a0ljb25JbmZvKikgY29uc3Q7Cit9Owog
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsuY3BwCmluZGV4
IGFmOTYwOWRkMDg3MTJkMTI4NTIzNjRiZjIwZTZkYmMzZjRhZmZhZjMuLjM4NTA4YTgzOWUwMTE0
MzY2YWMwNDcwMzcxNTI3NGFlYzU4ODQzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtODMsNyArODMsNyBAQCBnYm9vbGVhbiBHYW1lcGFkRGV2
aWNlR3RrOjpyZWFkQ2FsbGJhY2soR09iamVjdCogcG9sbGFibGVTdHJlYW0sIGdwb2ludGVyIGRh
dGEpCiAgICAgc3RydWN0IGpzX2V2ZW50IGV2ZW50OwogCiAgICAgZ3NzaXplIGxlbiA9IGdfcG9s
bGFibGVfaW5wdXRfc3RyZWFtX3JlYWRfbm9uYmxvY2tpbmcoR19QT0xMQUJMRV9JTlBVVF9TVFJF
QU0ocG9sbGFibGVTdHJlYW0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZldmVudCwgc2l6ZW9mKGV2ZW50KSwgMCwgJmVycm9yLm91
dFB0cigpKTsKKyAgICAgICAgJmV2ZW50LCBzaXplb2YoZXZlbnQpLCAwLCAmR091dFB0cjxHRXJy
b3I+KGVycm9yKSgpKTsKIAogICAgIC8vIEZJWE1FOiBQcm9wZXJseSBsb2cgdGhlIGVycm9yLgog
ICAgIC8vIEluIHRoZSBjYXNlIG9mIEdfSU9fRVJST1JfV09VTERfQkxPQ0sgZXJyb3IgcmV0dXJu
IFRSVUUgdG8gd2FpdCB1bnRpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a0lucHV0TWV0aG9kRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5kZXggYjk5ODBiNTQ2YTJhNDljNjQ2MDU0NTEx
NWUwNDZhMTM2NWJjNDIzZi4uMmMyNjYwZTlkOWVjNDMyMTI4YjcxZGI3Y2EzMTlkNzlkOTYyYzg5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0lucHV0TWV0aG9k
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrSW5wdXRNZXRo
b2RGaWx0ZXIuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBHdGtJbnB1dE1ldGhvZEZpbHRl
cjo6aGFuZGxlUHJlZWRpdENoYW5nZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBHT3duUHRy
PGdjaGFyPiBuZXdQcmVlZGl0OwotICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmlu
ZyhtX2NvbnRleHQuZ2V0KCksICZuZXdQcmVlZGl0Lm91dFB0cigpLCAwLCAmbV9jdXJzb3JPZmZz
ZXQpOworICAgIGd0a19pbV9jb250ZXh0X2dldF9wcmVlZGl0X3N0cmluZyhtX2NvbnRleHQuZ2V0
KCksICZHT3V0UHRyPGdjaGFyPihuZXdQcmVlZGl0KSgpLCAwLCAmbV9jdXJzb3JPZmZzZXQpOwog
CiAgICAgaWYgKG1fcHJldmVudE5leHRDb21taXQpIHsKICAgICAgICAgaWYgKHN0cmxlbihuZXdQ
cmVlZGl0LmdldCgpKSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5jcHAKaW5kZXggYTMzNWE3ZGViYmNlMzExNzMxMDQ3MWNlMjIzZGQwNmQ0
ZGY5ZGZlMS4uNGViZWZiNzlmNGI5ZGI2YWZjYTg4MWFlOTBlOGM4ZjIxNTRiMmI4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAt
MjU4LDE4ICsyNTgsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpmaWxsRGF0YU9iamVjdEZy
b21Ecm9wRGF0YShHdGtTZWxlY3Rpb25EYXRhKiBkYXRhLCBndWludAogICAgIH0gZWxzZSBpZiAo
dGFyZ2V0ID09IHVua25vd25BdG9tKSB7CiAgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlh
bnQgPSBhZG9wdEdSZWYoZ192YXJpYW50X25ld19wYXJzZWQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhKGRhdGEpKSkpOwogCi0gICAgICAg
IEdPd25QdHI8Z2NoYXI+IGtleTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gdmFsdWU7CiAgICAg
ICAgIEdWYXJpYW50SXRlciBpdGVyOwotCiAgICAgICAgIGdfdmFyaWFudF9pdGVyX2luaXQoJml0
ZXIsIHZhcmlhbnQuZ2V0KCkpOwotICAgICAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4dCgm
aXRlciwgIntzc30iLCAma2V5Lm91dFB0cigpLCAmdmFsdWUub3V0UHRyKCkpKSB7Ci0gICAgICAg
ICAgICBkYXRhT2JqZWN0LT5zZXRVbmtub3duVHlwZURhdGEoa2V5LmdldCgpLCB2YWx1ZS5nZXQo
KSk7CiAKLSAgICAgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgR093blB0ciBiZSBzbWFydGVyIGFi
b3V0IHRoaXMgYW5kIHJlcGxhY2UgdGhlIGV4aXN0aW5nIHB0ciB3aGVuIG91dFB0cigpIGlzIHVz
ZWQ/Ci0gICAgICAgICAgICBrZXkuY2xlYXIoKTsKLSAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7
Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChHT3duUHRyPGdjaGFyPiBrZXksIHZhbHVlOyBnX3Zh
cmlhbnRfaXRlcl9uZXh0KCZpdGVyLCAie3NzfSIsICZHT3V0UHRyPGdjaGFyPihrZXkpKCksICZH
T3V0UHRyPGdjaGFyPih2YWx1ZSkoKSk7CisgICAgICAgICAgICBrZXkucmVzZXQoKSwgdmFsdWUu
cmVzZXQoKSkKKyAgICAgICAgICAgIGRhdGFPYmplY3QtPnNldFVua25vd25UeXBlRGF0YShrZXku
Z2V0KCksIHZhbHVlLmdldCgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDYyOWU4ZDZiZTE5NTE4MzM5MDNmNTZm
NTBkMGY5MDE5MjgzNjkwZDAuLjM3MTNmMjJkMDRjOWJiZDE5MTE4YjY1YzM2YTliMmRkZTQyMGE5
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNw
cApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OnN5c3RlbUZvbnQoQ1NT
VmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvCiAKICAgICAvLyBU
aGlzIHdpbGwgYmUgYSBmb250IHNlbGVjdGlvbiBzdHJpbmcgbGlrZSAiU2FucyAxMCIgc28gd2Ug
Y2Fubm90IHVzZSBpdCBhcyB0aGUgZmFtaWx5IG5hbWUuCiAgICAgR093blB0cjxnY2hhcj4gZm9u
dE5hbWU7Ci0gICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZ3RrLWZvbnQtbmFtZSIsICZmb250
TmFtZS5vdXRQdHIoKSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLCAiZ3RrLWZv
bnQtbmFtZSIsICZHT3V0UHRyPGdjaGFyPihmb250TmFtZSkoKSwgTlVMTCk7CiAKICAgICBQYW5n
b0ZvbnREZXNjcmlwdGlvbiogcGFuZ29EZXNjcmlwdGlvbiA9IHBhbmdvX2ZvbnRfZGVzY3JpcHRp
b25fZnJvbV9zdHJpbmcoZm9udE5hbWUuZ2V0KCkpOwogICAgIGlmICghcGFuZ29EZXNjcmlwdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TaGFyZWRCdWZmZXJH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAK
aW5kZXggYzdiNGYyN2IwZGFlZmM4ZTg4OGQzMzA0MDU0NGU1NzYzODRlNjdmNi4uODMwZmM5MGU0
NDNhOTI2NjU5OWYwNjQ1MGI4ZDBjYzAwMjIxZDcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1NoYXJlZEJ1ZmZlckd0ay5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGNvbnN0IFN0cmluZyYgZmkKICAgICBHT3duUHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6
ZSBzaXplOwogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdfZmlsZV9nZXRf
Y29udGVudHMoZmlsZW5hbWUuZGF0YSgpLCAmY29udGVudHMub3V0UHRyKCksICZzaXplLCAmZXJy
b3Iub3V0UHRyKCkpKSB7CisgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRh
dGEoKSwgJkdPdXRQdHI8Z2NoYXI+KGNvbnRlbnRzKSgpLCAmc2l6ZSwgJkdPdXRQdHI8R0Vycm9y
PihlcnJvcikoKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZnVsbHkgcmVhZCBj
b250ZW50cyBvZiBmaWxlICVzIC0gJXMiLCBmaWxlbmFtZUZvckRpc3BsYXkoZmlsZVBhdGgpLnV0
ZjgoKS5kYXRhKCksIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ndGsvQ3JlZGVudGlh
bEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ay9D
cmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAppbmRleCA1ZjFlNGM1MDAxMjM0MzcyN2EyNjIxMDgx
YWFiZjE0YWU0NjNmMzU1Li40MmE0ZDMwOTE3OTYzMzhiZDQ5ZWMzMWI1YWY0ZGYwNzE1ZGI2MGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2d0ay9DcmVkZW50
aWFsQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2d0ay9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMg
dm9pZCBjcmVkZW50aWFsRm9yQ2hhbGxlbmdlQXN5bmNSZWFkeUNhbGxiYWNrKFNlY3JldFNlcnZp
Y2UqIHNlcnZpY2UsIEdBcwogICAgIGRlbGV0ZSBjYWxsYmFja0RhdGE7CiAKICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7Ci0gICAgR093blB0cjxHTGlzdD4gZWxlbWVudHMoc2VjcmV0X3NlcnZp
Y2Vfc2VhcmNoX2ZpbmlzaChzZXJ2aWNlLCBhc3luY1Jlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7
CisgICAgR093blB0cjxHTGlzdD4gZWxlbWVudHMoc2VjcmV0X3NlcnZpY2Vfc2VhcmNoX2Zpbmlz
aChzZXJ2aWNlLCBhc3luY1Jlc3VsdCwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSkpOwogICAg
IGlmIChlcnJvciB8fCAhZWxlbWVudHMgfHwgIWVsZW1lbnRzLT5kYXRhKSB7CiAgICAgICAgIGNh
bGxiYWNrKENyZWRlbnRpYWwoKSwgZGF0YSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR093blB0clNvdXAuY3BwCmluZGV4
IDliYjQ0YjNkM2ExZDNkMzc0ZWM3MDRlY2MzM2IyM2JiN2JhMjU3MGUuLjQ1YTY1Y2I2MTY2MTg1
ZmNmOWU3ZGFiODZkNGUwM2IzNDJiN2YyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9HT3duUHRyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmNwcApAQCAtMjQsMjggKzI0LDI0IEBA
CiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZSA8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291
cFVSST4oU291cFVSSSogcHRyKQordm9pZCBHT2JqZWN0RGVsZXRlcjxTb3VwQnVmZmVyPjo6b3Bl
cmF0b3IoKShTb3VwQnVmZmVyKiBwdHIpIGNvbnN0CiB7Ci0gICAgaWYgKHB0cikKLSAgICAgICAg
c291cF91cmlfZnJlZShwdHIpOworICAgIHNvdXBfYnVmZmVyX2ZyZWUocHRyKTsKIH0KIAotdGVt
cGxhdGUgPD4gdm9pZCBmcmVlT3duZWRHUHRyPFNvdXBDb29raWU+KFNvdXBDb29raWUqIHB0cikK
K3ZvaWQgR09iamVjdERlbGV0ZXI8U291cENvb2tpZT46Om9wZXJhdG9yKCkoU291cENvb2tpZSog
cHRyKSBjb25zdAogewotICAgIGlmIChwdHIpCi0gICAgICAgIHNvdXBfY29va2llX2ZyZWUocHRy
KTsKKyAgICBzb3VwX2Nvb2tpZV9mcmVlKHB0cik7CiB9CiAKLXRlbXBsYXRlIDw+IHZvaWQgZnJl
ZU93bmVkR1B0cjxTb3VwTWVzc2FnZUhlYWRlcnM+KFNvdXBNZXNzYWdlSGVhZGVycyogcHRyKQor
dm9pZCBHT2JqZWN0RGVsZXRlcjxTb3VwTWVzc2FnZUhlYWRlcnM+OjpvcGVyYXRvcigpKFNvdXBN
ZXNzYWdlSGVhZGVycyogcHRyKSBjb25zdAogewotICAgIGlmIChwdHIpCi0gICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2ZyZWUocHRyKTsKKyAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVl
KHB0cik7CiB9CiAKLXRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxTb3VwQnVmZmVyPihT
b3VwQnVmZmVyKiBwdHIpCit2b2lkIEdPYmplY3REZWxldGVyPFNvdXBVUkk+OjpvcGVyYXRvcigp
KFNvdXBVUkkqIHB0cikgY29uc3QKIHsKLSAgICBpZiAocHRyKQotICAgICAgICBzb3VwX2J1ZmZl
cl9mcmVlKHB0cik7CisgICAgc291cF91cmlfZnJlZShwdHIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9H
T3duUHRyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25Q
dHJTb3VwLmgKaW5kZXggZGUyNTNiZGJkN2MzYmIwMjAwMTU3NGZhY2FjMzhiNTFiMGZhYWYyOS4u
YThlYTQxY2VjOWFmYjFlYThlMWY4ZGMyZDUyNTQ4ZWM1Y2M4ZTlmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dPd25QdHJTb3VwLmgKQEAgLTI3LDEw
ICsyNywyNSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8PiB2b2lkIGZyZWVPd25l
ZEdQdHI8U291cFVSST4oU291cFVSSSogcHRyKTsKLXRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRH
UHRyPFNvdXBDb29raWU+KFNvdXBDb29raWUqIHB0cik7Ci10ZW1wbGF0ZTw+IHZvaWQgZnJlZU93
bmVkR1B0cjxTb3VwTWVzc2FnZUhlYWRlcnM+KFNvdXBNZXNzYWdlSGVhZGVycyopOwotdGVtcGxh
dGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8U291cEJ1ZmZlcj4oU291cEJ1ZmZlciopOwordGVtcGxh
dGU8Pgorc3RydWN0IEdPYmplY3REZWxldGVyPFNvdXBCdWZmZXI+IHsKKyAgICB2b2lkIG9wZXJh
dG9yKCkoU291cEJ1ZmZlciopIGNvbnN0OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEdPYmpl
Y3REZWxldGVyPFNvdXBDb29raWU+IHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoU291cENvb2tpZSop
IGNvbnN0OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IEdPYmplY3REZWxldGVyPFNvdXBNZXNz
YWdlSGVhZGVycz4geworICAgIHZvaWQgb3BlcmF0b3IoKShTb3VwTWVzc2FnZUhlYWRlcnMqKSBj
b25zdDsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBHT2JqZWN0RGVsZXRlcjxTb3VwVVJJPiB7
CisgICAgdm9pZCBvcGVyYXRvcigpKFNvdXBVUkkqKSBjb25zdDsKK307CiAKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcAppbmRleCA0YzcwNzQ5MmViYWU1MzQxNTljZmRiYTBlNmE4MjNlNmE2NjIy
ODhiLi5hOGFhNmQ0MTc2MDc1YThlYThhODBhM2ViODkxYzM2NGI5MTk5MmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcApAQCAtMjg2LDkgKzI4Niw5IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmVu
c3VyZVJlYWRCdWZmZXIoKQogICAgIHNpemVfdCBidWZmZXJTaXplOwogICAgIGNoYXIqIGJ1ZmZl
ckZyb21DbGllbnQgPSBjbGllbnQoKS0+Z2V0T3JDcmVhdGVSZWFkQnVmZmVyKGdEZWZhdWx0UmVh
ZEJ1ZmZlclNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmIChidWZmZXJGcm9tQ2xpZW50KQotICAg
ICAgICBkLT5tX3NvdXBCdWZmZXIuc2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9URU1Q
T1JBUlksIGJ1ZmZlckZyb21DbGllbnQsIGJ1ZmZlclNpemUpKTsKKyAgICAgICAgZC0+bV9zb3Vw
QnVmZmVyLnJlc2V0KHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9URU1QT1JBUlksIGJ1ZmZl
ckZyb21DbGllbnQsIGJ1ZmZlclNpemUpKTsKICAgICBlbHNlCi0gICAgICAgIGQtPm1fc291cEJ1
ZmZlci5zZXQoc291cF9idWZmZXJfbmV3KFNPVVBfTUVNT1JZX1RBS0UsIHN0YXRpY19jYXN0PGNo
YXIqPihnX21hbGxvYyhnRGVmYXVsdFJlYWRCdWZmZXJTaXplKSksIGdEZWZhdWx0UmVhZEJ1ZmZl
clNpemUpKTsKKyAgICAgICAgZC0+bV9zb3VwQnVmZmVyLnJlc2V0KHNvdXBfYnVmZmVyX25ldyhT
T1VQX01FTU9SWV9UQUtFLCBzdGF0aWNfY2FzdDxjaGFyKj4oZ19tYWxsb2MoZ0RlZmF1bHRSZWFk
QnVmZmVyU2l6ZSkpLCBnRGVmYXVsdFJlYWRCdWZmZXJTaXplKSk7CiAKICAgICBBU1NFUlQoZC0+
bV9zb3VwQnVmZmVyKTsKIH0KQEAgLTUwNiw3ICs1MDYsNyBAQCBzdGF0aWMgdm9pZCByZWRpcmVj
dFNraXBDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiBhc3luY1Jlc3VsdCwgZ3BvaW50
ZXIgZAogCiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogICAgIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7Ci0gICAgZ3NzaXplIGJ5dGVzU2tpcHBl
ZCA9IGdfaW5wdXRfc3RyZWFtX3NraXBfZmluaXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFz
eW5jUmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdzc2l6ZSBieXRlc1NraXBwZWQgPSBn
X2lucHV0X3N0cmVhbV9za2lwX2ZpbmlzaChkLT5tX2lucHV0U3RyZWFtLmdldCgpLCBhc3luY1Jl
c3VsdCwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwoaGFuZGxlLmdldCgpLCBSZXNvdXJjZUVycm9y
OjpnZW5lcmljR0Vycm9yKGVycm9yLmdldCgpLCBkLT5tX3NvdXBSZXF1ZXN0LmdldCgpKSk7CiAg
ICAgICAgIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihoYW5kbGUuZ2V0KCkpOwpAQCAtNTQ3
LDcgKzU0Nyw3IEBAIHN0YXRpYyB2b2lkIGNsZWFudXBTb3VwUmVxdWVzdE9wZXJhdGlvbihSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBib29sIGlzRGVzdHJveWluCiAgICAgZC0+bV9pbnB1dFN0cmVh
bS5jbGVhcigpOwogICAgIGQtPm1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uY2xlYXIoKTsKICAgICBk
LT5tX2NhbmNlbGxhYmxlLmNsZWFyKCk7Ci0gICAgZC0+bV9zb3VwQnVmZmVyLmNsZWFyKCk7Cisg
ICAgZC0+bV9zb3VwQnVmZmVyLnJlc2V0KCk7CiAKICAgICBpZiAoZC0+bV9zb3VwTWVzc2FnZSkg
ewogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQoZC0+bV9zb3Vw
TWVzc2FnZS5nZXQoKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwKQEAgLTYxMSw3ICs2MTEsNyBAQCBz
dGF0aWMgdm9pZCBuZXh0TXVsdGlwYXJ0UmVzcG9uc2VQYXJ0Q2FsbGJhY2soR09iamVjdCogLypz
b3VyY2UqLywgR0FzeW5jUmVzdWx0KgogICAgIEFTU0VSVCghZC0+bV9pbnB1dFN0cmVhbSk7CiAK
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgZC0+bV9pbnB1dFN0cmVhbSA9IGFkb3B0
R1JlZihzb3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV4dF9wYXJ0X2ZpbmlzaChkLT5tX211
bHRpcGFydElucHV0U3RyZWFtLmdldCgpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAg
IGQtPm1faW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoc291cF9tdWx0aXBhcnRfaW5wdXRfc3RyZWFt
X25leHRfcGFydF9maW5pc2goZC0+bV9tdWx0aXBhcnRJbnB1dFN0cmVhbS5nZXQoKSwgcmVzdWx0
LCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKSk7CiAKICAgICBpZiAoZXJyb3IpIHsKICAgICAg
ICAgaGFuZGxlLT5jbGllbnQoKS0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihkLT5tX3NvdXBNZXNzYWdlLmdldCgpLCBlcnJvci5nZXQoKSwgZC0+bV9zb3Vw
UmVxdWVzdC5nZXQoKSkpOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRSZXF1
ZXN0Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciBkYXRh
KQogICAgIH0KIAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBHUmVmUHRyPEdJbnB1
dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoc291cF9yZXF1ZXN0X3NlbmRfZmluaXNo
KGQtPm1fc291cFJlcXVlc3QuZ2V0KCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAg
R1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKHNvdXBfcmVxdWVz
dF9zZW5kX2ZpbmlzaChkLT5tX3NvdXBSZXF1ZXN0LmdldCgpLCByZXN1bHQsICZHT3V0UHRyPEdF
cnJvcj4oZXJyb3IpKCkpKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgaGFuZGxlLT5jbGll
bnQoKS0+ZGlkRmFpbChoYW5kbGUuZ2V0KCksIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihzb3Vw
TWVzc2FnZSwgZXJyb3IuZ2V0KCksIGQtPm1fc291cFJlcXVlc3QuZ2V0KCkpKTsKICAgICAgICAg
Y2xlYW51cFNvdXBSZXF1ZXN0T3BlcmF0aW9uKGhhbmRsZS5nZXQoKSk7CkBAIC03MjksNyArNzI5
LDcgQEAgc3RhdGljIGJvb2wgYWRkRmlsZVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGZpbGVOYW0KIHsKICAgICBHT3duUHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgQ1N0cmluZyBmaWxlTmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
TmFtZVN0cmluZyk7Ci0gICAgR01hcHBlZEZpbGUqIGZpbGVNYXBwaW5nID0gZ19tYXBwZWRfZmls
ZV9uZXcoZmlsZU5hbWUuZGF0YSgpLCBmYWxzZSwgJmVycm9yLm91dFB0cigpKTsKKyAgICBHTWFw
cGVkRmlsZSogZmlsZU1hcHBpbmcgPSBnX21hcHBlZF9maWxlX25ldyhmaWxlTmFtZS5kYXRhKCks
IGZhbHNlLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICBpZiAoZXJyb3IpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtOTkwLDEzICs5OTAsMTIgQEAgc3RhdGljIGJvb2wgY3Jl
YXRlU291cFJlcXVlc3RBbmRNZXNzYWdlRm9ySGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFIKIHsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxlLT5nZXRJ
bnRlcm5hbCgpOwogCi0gICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotCiAgICAgR093blB0cjxT
b3VwVVJJPiBzb3VwVVJJKHJlcXVlc3Quc291cFVSSSgpKTsKICAgICBpZiAoIXNvdXBVUkkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGQtPm1fc291cFJlcXVlc3QgPSBhZG9wdEdSZWYo
c291cF9zZXNzaW9uX3JlcXVlc3RfdXJpKGQtPnNvdXBTZXNzaW9uKCksIHNvdXBVUkkuZ2V0KCks
ICZlcnJvci5vdXRQdHIoKSkpOworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBkLT5t
X3NvdXBSZXF1ZXN0ID0gYWRvcHRHUmVmKHNvdXBfc2Vzc2lvbl9yZXF1ZXN0X3VyaShkLT5zb3Vw
U2Vzc2lvbigpLCBzb3VwVVJJLmdldCgpLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKSk7CiAg
ICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGQtPm1fc291cFJlcXVlc3QuY2xlYXIoKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMxNCw3ICsxMzEzLDcgQEAgc3RhdGljIHZvaWQgcmVhZENh
bGxiYWNrKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIGFzeW5jUmVzdWx0LCBncG9pbnRlciBkYXRh
KQogICAgIH0KIAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBnc3NpemUgYnl0ZXNS
ZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goZC0+bV9pbnB1dFN0cmVhbS5nZXQoKSwg
YXN5bmNSZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdf
aW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGQtPm1faW5wdXRTdHJlYW0uZ2V0KCksIGFzeW5jUmVz
dWx0LCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKIAogICAgIGlmIChlcnJvcikgewogICAg
ICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGYWlsKGhhbmRsZS5nZXQoKSwgUmVzb3VyY2VFcnJv
cjo6Z2VuZXJpY0dFcnJvcihlcnJvci5nZXQoKSwgZC0+bV9zb3VwUmVxdWVzdC5nZXQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCmluZGV4IDU1MDhmMzYwOTU1M2RkYTgyYjBhNWU5
ZGMyYTkzMzcwYTFiNjAyN2YuLjMwMjRmOWQ4YTdlMGY3ZWRjZjQ3MDc3NjFhMjI5MzUxNjVhMjMy
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBp
bnQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50
IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7
Ci0gICAgZ3NzaXplIHdyaXR0ZW4gPSBnX3BvbGxhYmxlX291dHB1dF9zdHJlYW1fd3JpdGVfbm9u
YmxvY2tpbmcobV9vdXRwdXRTdHJlYW0uZ2V0KCksIGRhdGEsIGxlbmd0aCwgMCwgJmVycm9yLm91
dFB0cigpKTsKKyAgICBnc3NpemUgd3JpdHRlbiA9IGdfcG9sbGFibGVfb3V0cHV0X3N0cmVhbV93
cml0ZV9ub25ibG9ja2luZyhtX291dHB1dFN0cmVhbS5nZXQoKSwgZGF0YSwgbGVuZ3RoLCAwLCAm
R091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgaWYg
KGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9XT1VM
RF9CTE9DSykpCiAgICAgICAgICAgICBiZWdpbldhaXRpbmdGb3JTb2NrZXRXcml0YWJpbGl0eSgp
OwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNs
b3NlKCkKIAogICAgIGlmIChtX3NvY2tldENvbm5lY3Rpb24pIHsKICAgICAgICAgR093blB0cjxH
RXJyb3I+IGVycm9yOwotICAgICAgICBnX2lvX3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShtX3Nv
Y2tldENvbm5lY3Rpb24uZ2V0KCkpLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICBnX2lv
X3N0cmVhbV9jbG9zZShHX0lPX1NUUkVBTShtX3NvY2tldENvbm5lY3Rpb24uZ2V0KCkpLCAwLCAm
R091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZEZhaWxTb2NrZXRTdHJlYW0odGhpcywgU29ja2V0U3RyZWFtRXJyb3Io
ZXJyb3ItPmNvZGUsIGVycm9yLT5tZXNzYWdlKSk7CiAgICAgICAgIG1fc29ja2V0Q29ubmVjdGlv
biA9IDA7CkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIHZvaWQgY29ubmVjdGVkQ2FsbGJhY2so
R1NvY2tldENsaWVudCogY2xpZW50LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgdm9pZCoKIHsKICAg
ICAvLyBBbHdheXMgZmluaXNoIHRoZSBjb25uZWN0aW9uLCBldmVuIGlmIHRoaXMgU29ja2V0U3Ry
ZWFtSGFuZGxlIHdhcyBkZWFjdGl2YXRlZCBlYXJsaWVyLgogICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKLSAgICBHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29ubmVjdGlvbiA9IGdfc29ja2V0
X2NsaWVudF9jb25uZWN0X3RvX2hvc3RfZmluaXNoKGNsaWVudCwgcmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpOworICAgIEdTb2NrZXRDb25uZWN0aW9uKiBzb2NrZXRDb25uZWN0aW9uID0gZ19zb2Nr
ZXRfY2xpZW50X2Nvbm5lY3RfdG9faG9zdF9maW5pc2goY2xpZW50LCByZXN1bHQsICZHT3V0UHRy
PEdFcnJvcj4oZXJyb3IpKCkpOwogCiAgICAgLy8gVGhlIFNvY2tldFN0cmVhbUhhbmRsZSBoYXMg
YmVlbiBkZWFjdGl2YXRlZCwgc28ganVzdCBjbG9zZSB0aGUgY29ubmVjdGlvbiwgaWdub3Jpbmcg
ZXJyb3JzLgogICAgIFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0gZ2V0SGFuZGxlRnJvbUlk
KGlkKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCByZWFkUmVhZHlDYWxsYmFjayhH
SW5wdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIHZvaWQqCiB7CiAgICAg
Ly8gQWx3YXlzIGZpbmlzaCB0aGUgcmVhZCwgZXZlbiBpZiB0aGlzIFNvY2tldFN0cmVhbUhhbmRs
ZSB3YXMgZGVhY3RpdmF0ZWQgZWFybGllci4KICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0g
ICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKHN0cmVhbSwg
cmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0
X3N0cmVhbV9yZWFkX2ZpbmlzaChzdHJlYW0sIHJlc3VsdCwgJkdPdXRQdHI8R0Vycm9yPihlcnJv
cikoKSk7CiAKICAgICBTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSA9IGdldEhhbmRsZUZyb21J
ZChpZCk7CiAgICAgaWYgKCFoYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDRmODM3
OTYwODZmMzFhMzJmZWMzYjY3ZjM5YjFlNjE0ZGQyM2NkZDQuLmY2YWY3ZDUxMjRkZTlmODE3ZTU0
YmM1Y2U5ZWNkNmI3MDI5MGZiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0yMDksNyAr
MjA5LDcgQEAgY2hhciogU291cE5ldHdvcmtTZXNzaW9uOjpodHRwUHJveHkoKSBjb25zdAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEdPd25QdHI8U291cFVSST4gdXJpOwotICAgIGdf
b2JqZWN0X2dldChzb3VwUmVzb2x2ZXIsIFNPVVBfUFJPWFlfUkVTT0xWRVJfV0tfUFJPWFlfVVJJ
LCAmdXJpLm91dFB0cigpLCBudWxscHRyKTsKKyAgICBnX29iamVjdF9nZXQoc291cFJlc29sdmVy
LCBTT1VQX1BST1hZX1JFU09MVkVSX1dLX1BST1hZX1VSSSwgJkdPdXRQdHI8U291cFVSST4odXJp
KSgpLCBudWxscHRyKTsKIAogICAgIHJldHVybiB1cmkgPyBzb3VwX3VyaV90b19zdHJpbmcodXJp
LmdldCgpLCBGQUxTRSkgOiBudWxscHRyOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25peC9GaWxlU3lzdGVtTml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25peC9GaWxlU3lzdGVtTml4LmNwcAppbmRleCA0ZGU4ODFhNWUzNjdjNWM3ZjM3M2IzNjcx
YWQ4NTE3MDVlMmRmZWU2Li42YTcyZTNkNjE4ZjE4OWQ5MDg5NzAyMDAwODg2ZmFjZTAxZWVkY2Y2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvRmlsZVN5c3RlbU5peC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L0ZpbGVTeXN0ZW1OaXguY3BwCkBA
IC0zMjcsNyArMzI3LDcgQEAgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJv
cjsKICAgICBkbyB7Ci0gICAgICAgIGdzc2l6ZSBieXRlc1JlYWQgPSBnX2lucHV0X3N0cmVhbV9y
ZWFkKGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksIGRh
dGEsIGxlbmd0aCwgMCwgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgZ3NzaXplIGJ5dGVzUmVh
ZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWQoZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lP
X1NUUkVBTShoYW5kbGUpKSwgZGF0YSwgbGVuZ3RoLCAwLCAmR091dFB0cjxHRXJyb3I+KGVycm9y
KSgpKTsKICAgICAgICAgaWYgKGJ5dGVzUmVhZCA+PSAwKQogICAgICAgICAgICAgcmV0dXJuIGJ5
dGVzUmVhZDsKICAgICB9IHdoaWxlIChlcnJvciAmJiBlcnJvci0+Y29kZSA9PSBHX0ZJTEVfRVJS
T1JfSU5UUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJl
ZEJ1ZmZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZm
ZXJTb3VwLmNwcAppbmRleCBmYjU1NzM4MjY1ZDM5YmQyNjVlOGNjNDVlOTE2NjQyYjY0NTI0NGQ2
Li4zODg1OTJhNjM2Mzg4NTQ4MTljYTZmY2I1ZjI1ZjBjMmI0ZTA4MGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKQEAgLTI4LDcg
KzI4LDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZl
cikKICAgICA6IG1fc2l6ZSgwKQogewogICAgIEFTU0VSVChzb3VwQnVmZmVyKTsKLSAgICBtX3Nv
dXBCdWZmZXIuc2V0KHNvdXBCdWZmZXIpOworICAgIG1fc291cEJ1ZmZlci5yZXNldChzb3VwQnVm
ZmVyKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcFNv
dXBCdWZmZXIoU291cEJ1ZmZlciogc291cEJ1ZmZlcikKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcFNvdXBCdWZmZXIoU291cEJ1ZmZl
ciogc291cEJ1ZmZlcikKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmNsZWFyUGxhdGZvcm1EYXRhKCkK
IHsKLSAgICBtX3NvdXBCdWZmZXIuY2xlYXIoKTsKKyAgICBtX3NvdXBCdWZmZXIucmVzZXQoKTsK
IH0KIAogdm9pZCBTaGFyZWRCdWZmZXI6OnRyeVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1
ZmZlcihTaGFyZWRCdWZmZXIqIG5ld0NvbnRlbnRzKQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNo
YXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpCiAKIGJvb2wgU2hhcmVkQnVm
ZmVyOjpoYXNQbGF0Zm9ybURhdGEoKSBjb25zdAogewotICAgIHJldHVybiBtX3NvdXBCdWZmZXI7
CisgICAgcmV0dXJuIG1fc291cEJ1ZmZlci5nZXQoKTsKIH0KIAogY29uc3QgY2hhciogU2hhcmVk
QnVmZmVyOjpwbGF0Zm9ybURhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ndGsvUGx1Z2luUGFja2FnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNwcAppbmRleCA5MjZhN2Q5MmQ3NWFmZjg5NGZjOGRhMjc0
YTUxMmM5ZmJlYjA4MzhhLi5jMjQ4M2RmYmEyNGU2NzY5ZTM0ZjYwNzlmNjQ1NGY1MTk1ZjA5MGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdlR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNw
cApAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAgICAgICAg
IEdSZWZQdHI8R0ZpbGU+IGRpciA9IGFkb3B0R1JlZihnX2ZpbGVfZ2V0X3BhcmVudChmaWxlLmdl
dCgpKSk7CiAgICAgICAgIEdPd25QdHI8Z2NoYXI+IGxpbmtQYXRoKGdfZmlsZV9yZWFkX2xpbmso
ZmluYWxQYXRoLmdldCgpLCAwKSk7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IHJlc29sdmVkRmls
ZSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVzb2x2ZV9yZWxhdGl2ZV9wYXRoKGRpci5nZXQoKSwgbGlu
a1BhdGguZ2V0KCkpKTsKLSAgICAgICAgZmluYWxQYXRoLnNldChnX2ZpbGVfZ2V0X3BhdGgocmVz
b2x2ZWRGaWxlLmdldCgpKSk7CisgICAgICAgIGZpbmFsUGF0aC5yZXNldChnX2ZpbGVfZ2V0X3Bh
dGgocmVzb2x2ZWRGaWxlLmdldCgpKSk7CiAgICAgfQogCiAgICAgLy8gTm8gam9rZS4gSWYgdGhl
cmUgaXMgYSBuZXRzY2FwZSBjb21wb25lbnQgaW4gdGhlIHBhdGgsIGdvIGJhY2sKQEAgLTE0NCw3
ICsxNDQsNyBAQCBib29sIFBsdWdpblBhY2thZ2U6OmxvYWQoKQogICAgIEdPd25QdHI8Z2NoYXI+
IGJhc2VOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUoZmluYWxQYXRoLmdldCgpKSk7CiAgICAgaWYg
KCFnX3N0cmNtcDAoYmFzZU5hbWUuZ2V0KCksICJsaWJmbGFzaHBsYXllci5zbyIpCiAgICAgICAg
ICYmIGdfc3Ryc3RyX2xlbihmaW5hbFBhdGguZ2V0KCksIC0xLCAiL25ldHNjYXBlLyIpKQotICAg
ICAgICBmaW5hbFBhdGguc2V0KGdfc3RyZHVwKG1fcGF0aC51dGY4KCkuZGF0YSgpKSk7CisgICAg
ICAgIGZpbmFsUGF0aC5yZXNldChnX3N0cmR1cChtX3BhdGgudXRmOCgpLmRhdGEoKSkpOwogCiAg
ICAgbV9tb2R1bGUgPSBnX21vZHVsZV9vcGVuKGZpbmFsUGF0aC5nZXQoKSwgR19NT0RVTEVfQklO
RF9MT0NBTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA1MGFmMWJiMDAwODc5NjAxY2Q0OTk2
MDg5N2Y2YmE2OGYxMWM1ODcwLi4xYzFjMDk0YjQ4YTgxY2MzNzE4NmQzZWQ3MDgzZWJmODQyMTU0
NjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0xMDg4LDcgKzEwODgsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogICAgICAgICBjb250ZW50ID0gbWFrZVN0cmluZygiPGh0bWw+PGJvZHk+Iiwgd2ViRXJy
b3ItPm1lc3NhZ2UsICI8L2JvZHk+PC9odG1sPiIpOwogICAgIGVsc2UgewogICAgICAgICBHT3du
UHRyPGdjaGFyPiBmaWxlQ29udGVudDsKLSAgICAgICAgaWYgKCFnX2ZpbGVfbG9hZF9jb250ZW50
cyhlcnJvckZpbGUuZ2V0KCksIDAsICZmaWxlQ29udGVudC5vdXRQdHIoKSwgMCwgMCwgMCkpCisg
ICAgICAgIGlmICghZ19maWxlX2xvYWRfY29udGVudHMoZXJyb3JGaWxlLmdldCgpLCAwLCAmR091
dFB0cjxnY2hhcj4oZmlsZUNvbnRlbnQpKCksIDAsIDAsIDApKQogICAgICAgICAgICAgY29udGVu
dCA9IG1ha2VTdHJpbmcoIjxodG1sPjxib2R5PiIsIHdlYkVycm9yLT5tZXNzYWdlLCAiPC9ib2R5
PjwvaHRtbD4iKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29udGVudCA9IFN0cmluZzo6
Zm9ybWF0KGZpbGVDb250ZW50LmdldCgpLCBlcnJvci5mYWlsaW5nVVJMKCkudXRmOCgpLmRhdGEo
KSwgd2ViRXJyb3ItPm1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRk
b3dubG9hZC5jcHAKaW5kZXggYTM5OWJmMGQ2MTlhOTc3OTFhNTdiMGI3MWJiNTNiNmJiMGViM2E4
MC4uMWUzYTg4NmY1NTM4MWJkYmE0MGZhMWFjMjQ2N2U3MGI1MjhkMWU2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCkBAIC00NjcsOSArNDY3LDkgQEAg
c3RhdGljIGdib29sZWFuIHdlYmtpdF9kb3dubG9hZF9vcGVuX3N0cmVhbV9mb3JfdXJpKFdlYktp
dERvd25sb2FkKiBkb3dubG9hZCwgY28KICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CiAKICAg
ICBpZiAoYXBwZW5kKQotICAgICAgICBwcml2LT5vdXRwdXRTdHJlYW0gPSBnX2ZpbGVfYXBwZW5k
X3RvKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgTlVMTCwgJmVycm9yLm91dFB0cigp
KTsKKyAgICAgICAgcHJpdi0+b3V0cHV0U3RyZWFtID0gZ19maWxlX2FwcGVuZF90byhmaWxlLmdl
dCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIE5VTEwsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkp
OwogICAgIGVsc2UKLSAgICAgICAgcHJpdi0+b3V0cHV0U3RyZWFtID0gZ19maWxlX3JlcGxhY2Uo
ZmlsZS5nZXQoKSwgTlVMTCwgVFJVRSwgR19GSUxFX0NSRUFURV9OT05FLCBOVUxMLCAmZXJyb3Iu
b3V0UHRyKCkpOworICAgICAgICBwcml2LT5vdXRwdXRTdHJlYW0gPSBnX2ZpbGVfcmVwbGFjZShm
aWxlLmdldCgpLCBOVUxMLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIE5VTEwsICZHT3V0UHRy
PEdFcnJvcj4oZXJyb3IpKCkpOwogCiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIHdlYmtpdERv
d25sb2FkRW1pdEVycm9yKGRvd25sb2FkLCBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29yZShw
cml2LT5uZXR3b3JrUmVzcG9uc2UpLCBlcnJvci0+bWVzc2FnZSkpOwpAQCAtNzA3LDcgKzcwNyw3
IEBAIHZvaWQgd2Via2l0X2Rvd25sb2FkX3NldF9kZXN0aW5hdGlvbl91cmkoV2ViS2l0RG93bmxv
YWQqIGRvd25sb2FkLCBjb25zdCBnY2hhcioKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZGVzdCA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkoZGVzdGluYXRpb25fdXJpKSk7CiAgICAgICAg
IEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKIAotICAgICAgICBnX2ZpbGVfbW92ZShzcmMuZ2V0KCks
IGRlc3QuZ2V0KCksIEdfRklMRV9DT1BZX0JBQ0tVUCwgMCwgMCwgMCwgJmVycm9yLm91dFB0cigp
KTsKKyAgICAgICAgZ19maWxlX21vdmUoc3JjLmdldCgpLCBkZXN0LmdldCgpLCBHX0ZJTEVfQ09Q
WV9CQUNLVVAsIDAsIDAsIDAsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogCiAgICAgICAg
IGdfZnJlZShwcml2LT5kZXN0aW5hdGlvblVSSSk7CiAgICAgICAgIHByaXYtPmRlc3RpbmF0aW9u
VVJJID0gZ19zdHJkdXAoZGVzdGluYXRpb25fdXJpKTsKQEAgLTg2Nyw4ICs4NjcsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG93bmxvYWRfcmVjZWl2ZWRfZGF0YShXZWJLaXREb3dubG9hZCogZG93
bmxvYWQsIGNvbnN0IGdjaGFyKgogICAgIGdzaXplIGJ5dGVzX3dyaXR0ZW47CiAgICAgR093blB0
cjxHRXJyb3I+IGVycm9yOwogCi0gICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChHX09VVFBV
VF9TVFJFQU0ocHJpdi0+b3V0cHV0U3RyZWFtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGEsIGxlbmd0aCwgJmJ5dGVzX3dyaXR0ZW4sIE5VTEwsICZlcnJvci5vdXRQdHIoKSk7
CisgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChHX09VVFBVVF9TVFJFQU0ocHJpdi0+b3V0
cHV0U3RyZWFtKSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNfd3JpdHRlbiwgTlVMTCwgJkdPdXRQdHI8
R0Vycm9yPihlcnJvcikoKSk7CiAKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgd2Via2l0RG93
bmxvYWRFbWl0RXJyb3IoZG93bmxvYWQsIGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihjb3JlKHBy
aXYtPm5ldHdvcmtSZXNwb25zZSksIGVycm9yLT5tZXNzYWdlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCmluZGV4IDBlMmNlNmM2
YmIyZTM5NTkyMjQ3Mjk1YjVlMDQ0OWZkNzFmZDE2N2EuLjZkNjA4MDZmNDI0ZjZlM2U1MzBkNzY5
MTEyZjc5Njk0NGIwOWNiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCB3ZWJraXRf
ZmF2aWNvbl9kYXRhYmFzZV9zZXRfcGF0aChXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNl
LCBjb25zdCBnY2gKIAogICAgIGRhdGFiYXNlLT5wcml2LT5pbXBvcnRGaW5pc2hlZCA9IGZhbHNl
OwogICAgIGlmICghcGF0aCB8fCAhcGF0aFswXSkgewotICAgICAgICBkYXRhYmFzZS0+cHJpdi0+
cGF0aC5zZXQoMCk7CisgICAgICAgIGRhdGFiYXNlLT5wcml2LT5wYXRoLnJlc2V0KCk7CiAgICAg
ICAgIGljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgd2Via2l0X2Zhdmljb25fZGF0YWJhc2Vfc2V0
X3BhdGgoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgZ2NoCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5zZXQoZ19zdHJkdXAo
cGF0aCkpOworICAgIGRhdGFiYXNlLT5wcml2LT5wYXRoLnJlc2V0KGdfc3RyZHVwKHBhdGgpKTsK
IH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0
dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJl
c3VsdC5jcHAKaW5kZXggY2I0MWVkZDdmN2IxZWE5MjZjNDUzYzhiOWZhYzhjZGM5OGEwY2Y2Mi4u
YzJkZjFmOGE5NDMzZGJhOGVmOTJlNDUxY2RmODY4OTZmNzhmZDU4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcApAQCAtMjgzLDI2ICsy
ODMsMjYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29u
c3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAgIGd1aW50IGNvbnRleHQg
PSBXRUJLSVRfSElUX1RFU1RfUkVTVUxUX0NPTlRFWFRfRE9DVU1FTlQ7Ci0gICAgR093blB0cjxj
aGFyPiBsaW5rVVJJKDApOwotICAgIEdPd25QdHI8Y2hhcj4gaW1hZ2VVUkkoMCk7Ci0gICAgR093
blB0cjxjaGFyPiBtZWRpYVVSSSgwKTsKKyAgICBHT3duUHRyPGNoYXI+IGxpbmtVUkk7CisgICAg
R093blB0cjxjaGFyPiBpbWFnZVVSSTsKKyAgICBHT3duUHRyPGNoYXI+IG1lZGlhVVJJOwogICAg
IFdlYktpdERPTU5vZGUqIG5vZGUgPSAwOwogICAgIFdlYkNvcmU6OkZyYW1lKiBpbm5lck5vZGVG
cmFtZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBwb2ludDsKIAogICAgIGlmICghcmVzdWx0LmFi
c29sdXRlTGlua1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICBjb250ZXh0IHw9IFdFQktJVF9I
SVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9MSU5LOwotICAgICAgICBsaW5rVVJJLnNldChnX3N0cmR1
cChyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAg
ICAgICBsaW5rVVJJLnJlc2V0KGdfc3RyZHVwKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQuYWJzb2x1dGVJ
bWFnZVVSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICBjb250ZXh0IHw9IFdFQktJVF9ISVRfVEVT
VF9SRVNVTFRfQ09OVEVYVF9JTUFHRTsKLSAgICAgICAgaW1hZ2VVUkkuc2V0KGdfc3RyZHVwKHJl
c3VsdC5hYnNvbHV0ZUltYWdlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAg
ICBpbWFnZVVSSS5yZXNldChnX3N0cmR1cChyZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAKICAgICBpZiAoIXJlc3VsdC5hYnNvbHV0ZU1l
ZGlhVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbnRleHQgfD0gV0VCS0lUX0hJVF9URVNU
X1JFU1VMVF9DT05URVhUX01FRElBOwotICAgICAgICBtZWRpYVVSSS5zZXQoZ19zdHJkdXAocmVz
dWx0LmFic29sdXRlTWVkaWFVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAg
IG1lZGlhVVJJLnJlc2V0KGdfc3RyZHVwKHJlc3VsdC5hYnNvbHV0ZU1lZGlhVVJMKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuaXNTZWxlY3RlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGljb25kYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcApp
bmRleCA3MGI1MTE0ZTVlZWViMGNjYmRhMWRhOWI5Mzc2NWZjOTc0Y2IxNTY2Li5lNGRkOTYwZmNj
MzdhNWJkNGI1ZWE2ZTkzYjI3NGVhNTgyNDAwNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0aWNvbmRhdGFiYXNlLmNwcApAQCAtMjM0LDEyICsyMzQsMTIgQEAgdm9p
ZCB3ZWJraXRfaWNvbl9kYXRhYmFzZV9zZXRfcGF0aChXZWJLaXRJY29uRGF0YWJhc2UqIGRhdGFi
YXNlLCBjb25zdCBnY2hhciogcGEKICAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuY2xv
c2UoKTsKIAogICAgIGlmICghKHBhdGggJiYgcGF0aFswXSkpIHsKLSAgICAgICAgZGF0YWJhc2Ut
PnByaXYtPnBhdGguc2V0KDApOworICAgICAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5yZXNldCgw
KTsKICAgICAgICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc2V0RW5hYmxlZChmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBkYXRhYmFzZS0+cHJpdi0+cGF0aC5zZXQoZ19z
dHJkdXAocGF0aCkpOworICAgIGRhdGFiYXNlLT5wcml2LT5wYXRoLnJlc2V0KGdfc3RyZHVwKHBh
dGgpKTsKIAogICAgIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnNldEVuYWJsZWQodHJ1ZSk7CiAg
ICAgV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkub3BlbihXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5n
KGRhdGFiYXNlLT5wcml2LT5wYXRoLmdldCgpKSwgV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZh
dWx0RGF0YWJhc2VGaWxlbmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJwbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnBsdWdpbi5jcHAKaW5kZXggNzNiNDJlZTllMjQwZmJkYTVlNzM2NmQyOGQ1NzAyNTJiNjU0
YzBkYy4uZjYyZWYzYjE1Njg4NWMwNWFhNTBiNTI2YzdiZGZiYWI0YjIyM2U5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnBsdWdpbi5jcHAKQEAgLTE5MiwxNCArMTky
LDE0IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF93ZWJfcGx1Z2luX2dldF9wYXRoKFdlYktpdFdlYlBs
dWdpbiogcGx1Z2luKQogICAgICAgICByZXR1cm4gcHJpdi0+cGF0aC5nZXQoKTsKIAogICAgIEdP
d25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBwcml2LT5wYXRoLnNldChnX2ZpbGVuYW1lX2Zyb21f
dXRmOChwcml2LT5jb3JlUGx1Z2luLT5wYXRoKCkudXRmOCgpLmRhdGEoKSwgLTEsIDAsIDAsICZl
cnJvci5vdXRQdHIoKSkpOworICAgIHByaXYtPnBhdGgucmVzZXQoZ19maWxlbmFtZV9mcm9tX3V0
ZjgocHJpdi0+Y29yZVBsdWdpbi0+cGF0aCgpLnV0ZjgoKS5kYXRhKCksIC0xLCAwLCAwLCAmR091
dFB0cjxHRXJyb3I+KGVycm9yKSgpKSk7CiAKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1
cm4gcHJpdi0+cGF0aC5nZXQoKTsKIAogICAgIC8vIEluIHRoZSB1bmxpa2VseSBjYXNlIHRoZSBj
b252ZXJ0aW9uIGZhaWxzLCByZXBvcnQgdGhlIGVycm9yIGFuZCBtYWtlIHN1cmUgd2UgZnJlZQog
ICAgIC8vIGFueSBwYXJ0aWFsIGNvbnZlcnRpb24gdGhhdCBlbmRlZCB1cCBpbiB0aGUgdmFyaWFi
bGUuCi0gICAgcHJpdi0+cGF0aC5jbGVhcigpOworICAgIHByaXYtPnBhdGgucmVzZXQoKTsKIAog
ICAgIGdfd2FybmluZygiRmFpbGVkIHRvIGNvbnZlcnQgJyVzJyB0byBzeXN0ZW0gZmlsZW5hbWUg
ZW5jb2Rpbmc6ICVzIiwgcHJpdi0+Y29yZVBsdWdpbi0+cGF0aCgpLnV0ZjgoKS5kYXRhKCksIGVy
cm9yLT5tZXNzYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCmluZGV4IDQ1YzUzMWM4OTFlYTZmOTExNjM4MzAyNmQyYTIxMDk3ZTQyZTViNjkuLmYxNDhh
ZDE4ZjBiOWFmNmY1YTlkMzMzNzBhY2U4NjM3NmU2MWIyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTY2OSw3ICs2NjksNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2V4cG9zZV9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRFeHBvc2UqCiB7CiAgICAgaW50IHJlY3RDb3VudDsKICAgICBHT3duUHRyPEdka1JlY3Rh
bmdsZT4gcmVjdHM7Ci0gICAgZ2RrX3JlZ2lvbl9nZXRfcmVjdGFuZ2xlcyhldmVudC0+cmVnaW9u
LCAmcmVjdHMub3V0UHRyKCksICZyZWN0Q291bnQpOworICAgIGdka19yZWdpb25fZ2V0X3JlY3Rh
bmdsZXMoZXZlbnQtPnJlZ2lvbiwgJkdPdXRQdHI8R2RrUmVjdGFuZ2xlPihyZWN0cykoKSwgJnJl
Y3RDb3VudCk7CiAKICAgICBSZWZQdHI8Y2Fpcm9fdD4gY3IgPSBhZG9wdFJlZihnZGtfY2Fpcm9f
Y3JlYXRlKGV2ZW50LT53aW5kb3cpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IDU1YzE0ZmFh
ZGU5ZWZiOTU0ZWZlZWU3Zjc3MjlkMDkxN2NhNTUyYjMuLjQ2OTA3YmI3ZTRhNWNjN2JhYWUzYTU5
MTc1NTcxOGQ5ZDE2MWY0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAg
c3RhdGljIHVpbnQ2NF90IGdldENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCiAg
ICAgQVNTRVJUKGNhY2hlKTsKIAogICAgIEdPd25QdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAgZ19v
YmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIo
KSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIs
ICZHT3V0UHRyPGNoYXI+KGNhY2hlRGlyKSgpLCBOVUxMKTsKICAgICBpZiAoIWNhY2hlRGlyKQog
ICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAppbmRleCAyOGIxZGNkZGRjZmViMGQ4OTk1YmU5
ZmVhZjUzMjE5YzA1YzlkYTdiLi5kYjQxZmZlMzk1OWM3OTFjMzZjOTdlYTY3OGMzMWVkYmE1YjQ0
MWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAv
RG93bmxvYWRTb3VwLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgU3Ry
aW5nIGludGVybWVkaWF0ZVVSSSA9IG1fZGVzdGluYXRpb25VUkkgKyAiLndrZG93bmxvYWQiOwog
ICAgICAgICBtX2ludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJp
KGludGVybWVkaWF0ZVVSSS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIEdPd25QdHI8R0Vycm9y
PiBlcnJvcjsKLSAgICAgICAgbV9vdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19maWxlX3JlcGxh
Y2UobV9pbnRlcm1lZGlhdGVGaWxlLmdldCgpLCAwLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUs
IDAsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICBtX291dHB1dFN0cmVhbSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfcmVwbGFjZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0KCksIDAsIFRSVUUsIEdfRklM
RV9DUkVBVEVfTk9ORSwgMCwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSkpOwogICAgICAgICBp
ZiAoIW1fb3V0cHV0U3RyZWFtKSB7CiAgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9y
bURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAKICAgICAgICAg
Z3NpemUgYnl0ZXNXcml0dGVuOwogICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAg
ICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoR19PVVRQVVRfU1RSRUFNKG1fb3V0cHV0U3Ry
ZWFtLmdldCgpKSwgZGF0YSwgbGVuZ3RoLCAmYnl0ZXNXcml0dGVuLCAwLCAmZXJyb3Iub3V0UHRy
KCkpOworICAgICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsKEdfT1VUUFVUX1NUUkVBTSht
X291dHB1dFN0cmVhbS5nZXQoKSksIGRhdGEsIGxlbmd0aCwgJmJ5dGVzV3JpdHRlbiwgMCwgJkdP
dXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAg
ICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNw
b25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOSw3ICsx
MzksNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2ludGVybWVkaWF0ZUZpbGUpOwogICAg
ICAgICBHUmVmUHRyPEdGaWxlPiBkZXN0aW5hdGlvbkZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfdXJpKG1fZGVzdGluYXRpb25VUkkudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIGlmICghZ19maWxlX21vdmUobV9pbnRlcm1lZGlh
dGVGaWxlLmdldCgpLCBkZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX05PTkUsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpIHsKKyAgICAgICAgaWYg
KCFnX2ZpbGVfbW92ZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0KCksIGRlc3RpbmF0aW9uRmlsZS5n
ZXQoKSwgR19GSUxFX0NPUFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJkdPdXRQ
dHI8R0Vycm9yPihlcnJvcikoKSkpIHsKICAgICAgICAgICAgIGRvd25sb2FkRmFpbGVkKHBsYXRm
b3JtRG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggMTEyZTc5ODNhNDdmOThkZDM0YzAz
NTEyODA3MzMwZGU2ODQ2ZmZlZi4uOWVjMGE1NWU5MDRkMDEzOWFjOGFjZTgwODExNTY4MGNiMDI1
ZjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAKQEAgLTI1MCw5ICsyNTAsOSBAQCBzdGF0aWMgYm9vbCBkZWNvZGVHS2V5RmlsZShBcmd1
bWVudERlY29kZXImIGRlY29kZXIsIEdPd25QdHI8R0tleUZpbGU+JiBrZXlGaWxlKQogICAgIGlm
ICghZGF0YVJlZmVyZW5jZS5zaXplKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAga2V5
RmlsZS5zZXQoZ19rZXlfZmlsZV9uZXcoKSk7CisgICAga2V5RmlsZS5yZXNldChnX2tleV9maWxl
X25ldygpKTsKICAgICBpZiAoIWdfa2V5X2ZpbGVfbG9hZF9mcm9tX2RhdGEoa2V5RmlsZS5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwg
ZGF0YVJlZmVyZW5jZS5zaXplKCksIEdfS0VZX0ZJTEVfTk9ORSwgMCkpIHsKLSAgICAgICAga2V5
RmlsZS5jbGVhcigpOworICAgICAgICBrZXlGaWxlLnJlc2V0KCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdERvd25sb2FkLmNwcAppbmRleCBmZjZkMmM0NGU5NWRjNWU5OTY3NDkzZGE5ZWJhMjc1
NjM0MjI1NmRiLi45MjkxNzM1NWFjMDY5NTlhYThhOGFmZTQ4ZjJkNDY0MjgwZjE4MDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWQu
Y3BwCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCB3ZWJraXREb3dubG9hZE5vdGlmeVByb2dyZXNz
KFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgZ3VpbnQ2NCBieXRlc1JlY2VpdmUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFkb3dubG9hZC0+cHJpdi0+dGltZXIpCi0gICAgICAgIGRvd25s
b2FkLT5wcml2LT50aW1lci5zZXQoZ190aW1lcl9uZXcoKSk7CisgICAgICAgIGRvd25sb2FkLT5w
cml2LT50aW1lci5yZXNldChnX3RpbWVyX25ldygpKTsKIAogICAgIHByaXYtPmN1cnJlbnRTaXpl
ICs9IGJ5dGVzUmVjZWl2ZWQ7CiAgICAgZ19zaWduYWxfZW1pdChkb3dubG9hZCwgc2lnbmFsc1tS
RUNFSVZFRF9EQVRBXSwgMCwgYnl0ZXNSZWNlaXZlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRl
eCBjMDJhODM0ZGI5ZDUyOTZjYjBkOGY3YWRmYjNkN2I0YzY0ODM0MmZkLi44MzZhNDI5NDUxNDBh
OTJiZDFhNWMwMTRkODY1ZDVhN2I2MDQ0NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTE2
NSw3ICsxNjUsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUGVuZGluZ0ljb25zRm9yUGFnZVVSTChX
ZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdAogICAgICAgICByZXR1cm47CiAK
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
aWNvbiA9IGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseShkYXRhYmFzZSwgcGFnZVVSTCwgJmVy
cm9yLm91dFB0cigpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpY29uID0gZ2V0SWNv
blN1cmZhY2VTeW5jaHJvbm91c2x5KGRhdGFiYXNlLCBwYWdlVVJMLCAmR091dFB0cjxHRXJyb3I+
KGVycm9yKSgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0ljb25SZXF1
ZXN0cy0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgR1Rhc2sqIHRhc2sgPSBwZW5kaW5nSWNvblJl
cXVlc3RzLT5hdChpKS5nZXQoKTsKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIHdlYmtpdF9mYXZp
Y29uX2RhdGFiYXNlX2dldF9mYXZpY29uKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2Us
IGNvbnN0CiAgICAgLy8gV2UgYXNrIGZvciB0aGUgaWNvbiBkaXJlY3RseS4gSWYgd2UgZG9uJ3Qg
Z2V0IHRoZSBpY29uIGRhdGEgbm93LAogICAgIC8vIHdlJ2xsIGJlIG5vdGlmaWVkIGxhdGVyIChl
dmVuIGlmIHRoZSBkYXRhYmFzZSBpcyBzdGlsbCBpbXBvcnRpbmcgaWNvbnMpLgogICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKLSAgICBkYXRhLT5pY29uID0gZ2V0SWNvblN1cmZhY2VTeW5jaHJv
bm91c2x5KGRhdGFiYXNlLCBkYXRhLT5wYWdlVVJMLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGRh
dGEtPmljb24gPSBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoZGF0YWJhc2UsIGRhdGEtPnBh
Z2VVUkwsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogICAgIGlmIChkYXRhLT5pY29uKSB7
CiAgICAgICAgIGdfdGFza19yZXR1cm5fYm9vbGVhbih0YXNrLmdldCgpLCBUUlVFKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCAzODRiZDM3NDJkOTk0OWE5MGIzZjRkNWVmNDZmODAw
N2I0OWU4ZTFlLi44ZTIzNjY2MDUxOTIwODFjOTAyNmRiYzcxZjM0MTY0YTRmYWFmZmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1
ZXN0LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIFNvdXBNZXNzYWdlSGVhZGVycyogd2Via2l0X3Vy
aV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnMoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzCiAgICAg
aWYgKCFyZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRU
UEZhbWlseSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJlcXVlc3QtPnByaXYtPmh0dHBI
ZWFkZXJzLnNldChzb3VwX21lc3NhZ2VfaGVhZGVyc19uZXcoU09VUF9NRVNTQUdFX0hFQURFUlNf
UkVRVUVTVCkpOworICAgIHJlcXVlc3QtPnByaXYtPmh0dHBIZWFkZXJzLnJlc2V0KHNvdXBfbWVz
c2FnZV9oZWFkZXJzX25ldyhTT1VQX01FU1NBR0VfSEVBREVSU19SRVFVRVNUKSk7CiAgICAgcmVx
dWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1ZXN0LnVwZGF0ZVNvdXBNZXNzYWdlSGVhZGVycyhyZXF1
ZXN0LT5wcml2LT5odHRwSGVhZGVycy5nZXQoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYt
Pmh0dHBIZWFkZXJzLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCBkMDEzNmNk
YWQ3Y2FkZWFiYTcxMTJlYzA3N2RiMjcwNDBlMmMwYTc3Li5iYjZiZWFmOWEyNTUwZDE2NjVhNzFl
MmQxZTM1OTViODJmYzkyMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcApAQCAtMTA5LDcgKzEw
OSw3IEBAIGNvbnN0IGNoYXIqIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3NjaGVtZShX
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
V0VCS0lUX0lTX1VSSV9TQ0hFTUVfUkVRVUVTVChyZXF1ZXN0KSwgMCk7CiAKICAgICBpZiAoIXJl
cXVlc3QtPnByaXYtPnNvdXBVUkkpCi0gICAgICAgIHJlcXVlc3QtPnByaXYtPnNvdXBVUkkuc2V0
KHNvdXBfdXJpX25ldyhyZXF1ZXN0LT5wcml2LT51cmkuZGF0YSgpKSk7CisgICAgICAgIHJlcXVl
c3QtPnByaXYtPnNvdXBVUkkucmVzZXQoc291cF91cmlfbmV3KHJlcXVlc3QtPnByaXYtPnVyaS5k
YXRhKCkpKTsKICAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+c291cFVSSS0+c2NoZW1lOwogfQog
CkBAIC0xNDEsNyArMTQxLDcgQEAgY29uc3QgY2hhciogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVz
dF9nZXRfcGF0aChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19VUklfU0NIRU1FX1JFUVVFU1QocmVxdWVzdCksIDApOwog
CiAgICAgaWYgKCFyZXF1ZXN0LT5wcml2LT5zb3VwVVJJKQotICAgICAgICByZXF1ZXN0LT5wcml2
LT5zb3VwVVJJLnNldChzb3VwX3VyaV9uZXcocmVxdWVzdC0+cHJpdi0+dXJpLmRhdGEoKSkpOwor
ICAgICAgICByZXF1ZXN0LT5wcml2LT5zb3VwVVJJLnJlc2V0KHNvdXBfdXJpX25ldyhyZXF1ZXN0
LT5wcml2LT51cmkuZGF0YSgpKSk7CiAgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPnNvdXBVUkkt
PnBhdGg7CiB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwog
ewogICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
ZihzY2hlbWVSZXF1ZXN0KTsKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgZ3NzaXpl
IGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGlucHV0U3RyZWFtLCByZXN1
bHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3Ry
ZWFtX3JlYWRfZmluaXNoKGlucHV0U3RyZWFtLCByZXN1bHQsICZHT3V0UHRyPEdFcnJvcj4oZXJy
b3IpKCkpOwogICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKICAgICAgICAgd2Via2l0X3VyaV9z
Y2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDIzODg2MTRjMjgwYmU2MjZhYmViZWNlNDk2ZGQ4YTEy
MGE1NDJiOWYuLmJlOTg4N2QzZDAwOTJkMDRhZDBjMzY4NTFhMTVjMTg4MTBhZmFiYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CkBAIC0zMzcsNyArMzM3LDggQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEZhdmlj
b25SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiBzdGF0aWMgdm9pZCBnb3RGYXZpY29u
Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpCiB7CiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwotICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGZhdmljb24gPSBhZG9wdFJlZih3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9n
ZXRfZmF2aWNvbl9maW5pc2goV0VCS0lUX0ZBVklDT05fREFUQUJBU0Uob2JqZWN0KSwgcmVzdWx0
LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBmYXZpY29u
ID0gYWRvcHRSZWYod2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fZmluaXNoKFdF
QktJVF9GQVZJQ09OX0RBVEFCQVNFKG9iamVjdCksCisgICAgICAgIHJlc3VsdCwgJkdPdXRQdHI8
R0Vycm9yPihlcnJvcikoKSkpOwogICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCks
IEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
QmFzZS5jcHAKaW5kZXggOTU1OTI3OWJjZGY5OTE0Y2MyZjBkNzQ2YTU2OTJjOWIwZjNmNjZmMy4u
YzU0YWVjNjE2MzgxOTQ2OWY3MTNmNjFjNDAwMmM2OTA4OTY2Yjc1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApA
QCAtNjY3LDcgKzY2Nyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRv
blByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0CiAKICAgICAvLyBJZiBp
dCdzIGEgcmlnaHQgY2xpY2sgZXZlbnQgc2F2ZSBpdCBhcyBhIHBvc3NpYmxlIGNvbnRleHQgbWVu
dSBldmVudC4KICAgICBpZiAoYnV0dG9uRXZlbnQtPmJ1dHRvbiA9PSAzKQotICAgICAgICBwcml2
LT5jb250ZXh0TWVudUV2ZW50LnNldChnZGtfZXZlbnRfY29weShyZWludGVycHJldF9jYXN0PEdk
a0V2ZW50Kj4oYnV0dG9uRXZlbnQpKSk7CisgICAgICAgIHByaXYtPmNvbnRleHRNZW51RXZlbnQu
cmVzZXQoZ2RrX2V2ZW50X2NvcHkocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2
ZW50KSkpOwogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJN
b3VzZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVudCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNs
aWNrQ291bnRlci5jbGlja0NvdW50Rm9yR2RrQnV0dG9uRXZlbnQod2lkZ2V0LCBidXR0b25FdmVu
dCkpKTsKICAgICByZXR1cm4gVFJVRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNlcnZlckd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2d0ay9XZWJJbnNwZWN0b3JTZXJ2
ZXJHdGsuY3BwCmluZGV4IGI4MzZjMTE4YTY5YzE2NmE2MDlkNGM0NjMzM2VjZjcyYTA2MmMxMDQu
LmZlN2I5OWYzYWRjM2VjMzk2ZTUyZDNlNjAxN2M4ZWJmNDUwOTIzNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvZ3RrL1dlYkluc3BlY3RvclNl
cnZlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9ndGsvV2ViSW5zcGVjdG9yU2VydmVyR3RrLmNwcApAQCAtNTUsNyArNTUsOCBAQCBib29sIFdl
Ykluc3BlY3RvclNlcnZlcjo6cGxhdGZvcm1SZXNvdXJjZUZvclBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoLCBWZWN0b3I8Y2hhcgogCiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihn
X2ZpbGVfbmV3X2Zvcl91cmkocmVzb3VyY2VVUkkuZGF0YSgpKSk7CiAgICAgR093blB0cjxHRXJy
b3I+IGVycm9yOwotICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihn
X2ZpbGVfcXVlcnlfaW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJ
WkUgIiwiIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfRkFTVF9DT05URU5UX1RZUEUsIEdfRklM
RV9RVUVSWV9JTkZPX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOworICAgIEdSZWZQdHI8R0Zp
bGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhmaWxlLmdldCgp
LCBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUgIiwiIEdfRklMRV9BVFRSSUJVVEVfU1RB
TkRBUkRfRkFTVF9DT05URU5UX1RZUEUsCisgICAgICAgIEdfRklMRV9RVUVSWV9JTkZPX05PTkUs
IDAsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpKTsKICAgICBpZiAoIWZpbGVJbmZvKSB7CiAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCI8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+RXJyb3I6ICIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNz
TGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Q
cm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IGFiZTgyMDQ1N2U4ZWZmNzVlZTY5ODM1NzZjYmUy
OGE0ZjU3ZjgxNDkuLmJmYzZmNmQ0YTQzYzJiOTAwYzllMzRmNjUyNTZmZTE3NTZkNWE2YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xh
dW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3Rr
L1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgYXJndltpKytdID0gMDsKIAogICAgIEdPd25Q
dHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdfc3Bhd25fYXN5bmMoMCwgYXJndiwgMCwgR19T
UEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOLCBjaGlsZFNldHVwRnVuY3Rpb24sIEdJTlRfVE9f
UE9JTlRFUihzb2NrZXRzWzFdKSwgJnBpZCwgJmVycm9yLm91dFB0cigpKSkgeworICAgIGlmICgh
Z19zcGF3bl9hc3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4s
IGNoaWxkU2V0dXBGdW5jdGlvbiwgR0lOVF9UT19QT0lOVEVSKHNvY2tldHNbMV0pLCAmcGlkLCAm
R091dFB0cjxHRXJyb3I+KGVycm9yKSgpKSkgewogICAgICAgICBnX3ByaW50ZXJyKCJVbmFibGUg
dG8gZm9yayBhIG5ldyBXZWJQcm9jZXNzOiAlcy5cbiIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5p
eC5jcHAKaW5kZXggNzFhYTIzNGU0Njk3NDE2NzU3MjJmYjQ5OGRmZDc2YzQyMjE2YWJkNi4uNzM5
N2UzZDQ5MTM0ZTVkMTNlYWUxMTA0MmIyOTFmM2I1OGZlNDNlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nl
c3NQcm94eVVuaXguY3BwCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEm
CiAgICAgICAgIHNpZ2FjdGlvbihTSUdDTEQsICZhY3Rpb24sIDApOwogICAgIH0KIAotICAgIGlm
ICghZ19zcGF3bl9zeW5jKDAsIGFyZ3YsIDAsIEdfU1BBV05fU1RERVJSX1RPX0RFVl9OVUxMLCAw
LCAwLCAmc3RkT3V0Lm91dFB0cigpLCAwLCAmc3RhdHVzLCAwKSkKKyAgICBpZiAoIWdfc3Bhd25f
c3luYygwLCBhcmd2LCAwLCBHX1NQQVdOX1NUREVSUl9UT19ERVZfTlVMTCwgMCwgMCwgJkdPdXRQ
dHI8Y2hhcj4oc3RkT3V0KSgpLCAwLCAmc3RhdHVzLCAwKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9
IEVYSVRfU1VDQ0VTUyB8fCAhc3RkT3V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRl
eCAzMDQxNTljOGU1YzkxYTNiYzcxMTNhMjYwODJlYWE1ZmJjYjkxNTVmLi42NDViZmVlOTVhYjUw
ODBiMjA4MmIxMjM0NTRlMjY5NzM2MDQyNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNw
cApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBHT3duUHRy
PEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGd0a19w
cmludF9qb2JfZ2V0X3N1cmZhY2UocHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IuZ2V0KCksICZl
cnJvci5vdXRQdHIoKSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGd0a19w
cmludF9qb2JfZ2V0X3N1cmZhY2UocHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IuZ2V0KCksICZH
T3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpIHsKICAgICAg
ICAgICAgIHByaW50T3BlcmF0aW9uLT5wcmludERvbmUocHJpbnRFcnJvcihwcmludE9wZXJhdGlv
bi0+bV9wcmludENvbnRleHQsIGVycm9yLT5tZXNzYWdlKSk7CiAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Nv
dXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NTb3VwLmNw
cAppbmRleCBhYjgxOTM0YjdhMjY4MjlkMjQyNWYzNGQ1NzFmOGU1NTMwZWEwZTExLi4zNGI3Njhh
ZTdjNDcwYzI4ZDQ3YTFjNTEwMjA2ZGU5MTk3MTkzMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3Mvc291cC9XZWJQcm9jZXNzU291cC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
c3RhdGljIHVpbnQ2NF90IGdldENhY2hlRGlza0ZyZWVTaXplKFNvdXBDYWNoZSogY2FjaGUpCiAg
ICAgQVNTRVJUKGNhY2hlKTsKIAogICAgIEdPd25QdHI8Y2hhcj4gY2FjaGVEaXI7Ci0gICAgZ19v
YmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIsICZjYWNoZURpci5vdXRQdHIo
KSwgTlVMTCk7CisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNhY2hlKSwgImNhY2hlLWRpciIs
ICZHT3V0UHRyPGNoYXI+KGNhY2hlRGlyKSgpLCBOVUxMKTsKICAgICBpZiAoIWNhY2hlRGlyKQog
ICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDBjZjc5Mjg4Mzk4Nzk3ZDA4N2FiYjAyODFiNGVmODcxZTg0ODNkYWUu
LmJjMWFlOGVjYzA5Y2E2NTYwODhmOTI2MTA4MGM4Yjk0YmYzMjcxNjMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MiBAQAorMjAx
NC0wMS0xNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAg
QmFzZSBHT3duUHRyIG9uIHN0ZDo6dW5pcXVlX3B0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MjU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgR093blB0ciBpcyBub3cgaW5oZXJpdGluZyBmcm9tIHN0
ZDo6dW5pcXVlX3B0ciwgc28gdGhlIGZvbGxvd2luZyB1c2VzIGFyZSBjaGFuZ2VkOgorICAgICAg
ICAtIEdPd25QdHI8VD46OnNldChUKikgaXMgbm93IEdPd25QdHI8VD46OnJlc2V0KFQqKSwKKyAg
ICAgICAgLSBHT3duUHRyPFQ+OjpjbGVhcigpIGlzIG5vdyBHT3duUHRyPFQ+OjpyZXNldCgpLAor
ICAgICAgICAtIEdPd25QdHI8VD46Om91dFB0cigpIGlzIHJlcGxhY2VkIGJ5IEdPdXRQdHI8VD4u
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eUNhbGxiYWNrc0F0
ay5jcHA6CisgICAgICAgIChheE9iamVjdEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAgICAgKGlu
ZGV4UmFuZ2VJblRhYmxlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICAoZ2V0Rm9udHNQYXRoKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoY3JlYXRlS2V5UHJlc3NFdmVudCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVu
dS5jcHA6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVTbWFydFNlcGFyYXRvcnMpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHA6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RJbnNwZWN0b3JT
ZXJ2ZXIuY3BwOgorICAgICAgICAodGVzdEluc3BlY3RvclNlcnZlclBhZ2VMaXN0KToKKyAgICAg
ICAgKG9wZW5SZW1vdGVEZWJ1Z2dpbmdTZXNzaW9uKToKKyAgICAgICAgKHNlbmRJbmNvbXBsZXRl
UmVxdWVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RS
ZXNvdXJjZXMuY3BwOgorICAgICAgICAoYWRkQ2FjaGVIVFRQSGVhZGVyc1RvUmVzcG9uc2UpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0U1NMLmNwcDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMu
Y3BwOgorICAgICAgICAodGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOgorICAg
ICAgICAoc2NyaXB0RGlhbG9nQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYkV4dGVuc2lvbklz
b2xhdGVkV29ybGQpOiBQYXNzIGEgcG9pbnRlciB0byBHT3duUHRyPGNoYXI+IHRvIHRoaXMgY2Fs
bGJhY2sgYW5kIHB1dCB0aGUgbmV3bHktYWxsb2NhdGVkCisgICAgICAgIHN0cmluZyB1bmRlciB0
aGUgbWFuYWdlbWVudCBvZiB0aGF0IEdPd25QdHI8Y2hhcj4uIEdPdXRQdHI8Y2hhcj4gY2FuJ3Qg
YmUgdXNlZCBoZXJlIGJlY2F1c2UgaXQgY2Fubm90CisgICAgICAgIHByb3Blcmx5IGhhbmRsZSBt
ZW1vcnkgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZCBsYXRlciBpbiB0aGUgY2FsbGJhY2sgd2hlbiBp
dCBpcyBpdHNlbGYgdXNlZCBpbiB0aGUgY2FsbAorICAgICAgICB0byBnX3NpZ25hbF9jb25uZWN0
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJH
dGsvVGVzdFdlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdSdW5KYXZhU2Ny
aXB0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3U2F2ZSk6CisgICAgICAgICh0ZXN0V2ViVmlld01v
ZGUpOgorICAgICAgICAodGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwOgor
ICAgICAgICAoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHA6CisgICAg
ICAgICh0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRl
c3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsRWRpdGFibGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3QuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3RJbnB1dE1ldGhvZEZpbHRlcjo6c2VuZEtleUV2ZW50VG9GaWx0
ZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkb0tleVN0cm9rZSk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdUZXN0LmNwcDoKKyAgICAgICAgKGxv
YWRGYWlsZWRDYWxsYmFjayk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkVVJJKToK
KyAgICAgICAgKExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRIdG1sKToKKyAgICAgICAgKExvYWRUcmFj
a2luZ1Rlc3Q6OmxvYWRQbGFpblRleHQpOgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAoTG9hZFRyYWNraW5nVGVzdDo6cmVsb2FkKToKKyAgICAgICAg
KExvYWRUcmFja2luZ1Rlc3Q6OmdvQmFjayk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0Ojpn
b0ZvcndhcmQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0
VGVzdEJ1cy5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpydW4pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdFNlcnZlci5jcHA6CisgICAgICAg
IChXZWJLaXRUZXN0U2VydmVyOjpXZWJLaXRUZXN0U2VydmVyKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcDoKKyAgICAgICAgKHJlc291cmNl
R2V0RGF0YUNhbGxiYWNrKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjptYWluUmVzb3VyY2VEYXRh
KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2UpOgorICAgICAgICAob25TbmFwc2hv
dFJlYWR5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHA6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZh
dGVGb250c0d0ay5jcHA6CisgICAgICAgIChXVFI6OmdldEZvbnRzUGF0aCk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHA6CisgICAgICAgIChX
VFI6OkV2ZW50U2VuZGVyUHJveHk6OmtleURvd24pOgorCiAyMDE0LTAxLTE0ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgRG9Zb3VFdmVuQmVuY2ggcnVu
bmFibGUgYnkgcnVuLXBlcmYtdGVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2F0ay9BY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzQXRrLmNwcAppbmRleCBlOTIzZjNmZDZmNTliNGQy
ZjQzOWQ2Y2QxZTVlNWI5YjA3M2VhNjJjLi4yYjBiNmQ3NmY3NmI3OTZhM2Q3YjBlNjE1YjVkODUw
NGRlNWQ0NmQzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJp
bGl0eUNhbGxiYWNrc0F0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vz
c2liaWxpdHlDYWxsYmFja3NBdGsuY3BwCkBAIC0xMDEsMzAgKzEwMSwzMCBAQCBzdGF0aWMgZ2Jv
b2xlYW4gYXhPYmplY3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCAqc2lnbmFs
SGludCwgZ3VpbnQgbgogICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwg
JnNpZ25hbFF1ZXJ5KTsKIAogICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9u
YW1lLCAic3RhdGUtY2hhbmdlIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBf
cHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVz
WzFdKSkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdf
dmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOworICAgICAgICBzaWduYWxOYW1l
LnJlc2V0KGdfc3RyZHVwX3ByaW50Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3Ry
aW5nKCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUucmVzZXQoZ19zdHJk
dXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOwog
ICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFd
KSwgImNoZWNrZWQiKSkKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQ2hlY2tlZFN0
YXRlQ2hhbmdlZCI7CiAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAoZ192YWx1ZV9nZXRfc3Ry
aW5nKCZwYXJhbVZhbHVlc1sxXSksICJpbnZhbGlkLWVudHJ5IikpCiAgICAgICAgICAgICBub3Rp
ZmljYXRpb25OYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOwogICAgIH0gZWxzZSBpZiAo
IWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50IikpIHsKLSAg
ICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOwotICAgICAgICBz
aWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4o
JnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxOYW1lLnJlc2V0KGdfc3RyZHVwKCJm
b2N1cy1ldmVudCIpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUucmVzZXQoZ19zdHJkdXBfcHJpbnRm
KCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOwogICAgICAgICBp
ZiAoZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKQogICAgICAgICAgICAgbm90
aWZpY2F0aW9uTmFtZSA9ICJBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkIjsKICAgICB9IGVsc2Ug
aWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJjaGlsZHJlbi1jaGFuZ2Vk
IikpIHsKICAgICAgICAgY29uc3QgZ2NoYXIqIGNoaWxkcmVuQ2hhbmdlZERldGFpbCA9IGdfcXVh
cmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCk7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0
KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hhbmdlZDolcyIsIGNoaWxkcmVuQ2hhbmdlZERl
dGFpbCkpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdf
dmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxOYW1lLnJl
c2V0KGdfc3RyZHVwX3ByaW50ZigiY2hpbGRyZW4tY2hhbmdlZDolcyIsIGNoaWxkcmVuQ2hhbmdl
ZERldGFpbCkpOworICAgICAgICBzaWduYWxWYWx1ZS5yZXNldChnX3N0cmR1cF9wcmludGYoIiVk
IiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1WYWx1ZXNbMV0pKSk7CiAgICAgICAgIG5vdGlmaWNh
dGlvbk5hbWUgPSAhZ19zdHJjbXAwKGNoaWxkcmVuQ2hhbmdlZERldGFpbCwgImFkZCIpID8gIkFY
Q2hpbGRyZW5BZGRlZCIgOiAiQVhDaGlsZHJlblJlbW92ZWQiOwogICAgIH0gZWxzZSBpZiAoIWdf
c3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIpKSB7Ci0g
ICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHktY2hhbmdlOiVz
IiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOworICAgICAgICBzaWdu
YWxOYW1lLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHktY2hhbmdlOiVzIiwgZ19xdWFy
a190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOwogICAgICAgICBpZiAoIWdfc3RyY21w
MChnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50LT5kZXRhaWwpLCAiYWNjZXNzaWJsZS12YWx1
ZSIpKQogICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCI7CiAg
ICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAibG9hZC1j
b21wbGV0ZSIpKQogICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYTG9hZENvbXBsZXRlIjsK
ICAgICBlbHNlCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNp
Z25hbF9uYW1lKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXAoc2lnbmFsUXVl
cnkuc2lnbmFsX25hbWUpKTsKIAogICAgIGlmIChsb2dnaW5nQWNjZXNzaWJpbGl0eUV2ZW50cykK
ICAgICAgICAgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoYWNjZXNzaWJsZSwgc2lnbmFsTmFtZS5n
ZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IGZiNTEwMjU3YjY2MTA4
NmIyYTFlZWE5ODRjNTJiNTcxMjdmZWY3YmEuLjY2OTc0NzcwZDFkOGQzNzVjYTY4Yzg0Y2JlNDM1
MzI0Y2ZlNGFmYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTUxOSw3ICs1MTksNyBAQCBKU1N0cmluZ1Jl
ZiBpbmRleFJhbmdlSW5UYWJsZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBib29sIGlzUm93
UmFuZ2UpCiAgICAgICAgICAgICBiYXNlID0gY29sdW1uOwogICAgICAgICAgICAgbGVuZ3RoID0g
YXRrX3RhYmxlX2dldF9jb2x1bW5fZXh0ZW50X2F0KEFUS19UQUJMRShheFRhYmxlKSwgcm93LCBj
b2x1bW4pOwogICAgICAgICB9Ci0gICAgICAgIHJhbmdlU3RyaW5nLnNldChnX3N0cmR1cF9wcmlu
dGYoInslZCwgJWR9IiwgYmFzZSwgbGVuZ3RoKSk7CisgICAgICAgIHJhbmdlU3RyaW5nLnJlc2V0
KGdfc3RyZHVwX3ByaW50ZigieyVkLCAlZH0iLCBiYXNlLCBsZW5ndGgpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmFuZ2VTdHJpbmcuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0R1bXBSZW5kZXJUcmVlLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMTVm
MmY2MTdjNzY2M2IwODEzYzkyOWYzNjlkNzg5M2M3YmUwZGE3OS4uMzUxZmVlMDNjNGQwMmUxNDRk
OGVhZjY4MWU5M2Y0ZTI2ODZlMjE3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIENTdHJpbmcgZ2V0Rm9u
dHNQYXRoKCkKICAgICAgICAgcmV0dXJuIGZvbnRzUGF0aC5nZXQoKTsKIAogICAgIC8vIFRyeSBh
bHRlcm5hdGl2ZSBmb250cyBwYXRoLgotICAgIGZvbnRzUGF0aC5zZXQoZ19idWlsZF9maWxlbmFt
ZSh3ZWJraXRPdXRwdXREaXIuZGF0YSgpLCAid2Via2l0Z3RrLXRlc3QtZm9udHMiLCBOVUxMKSk7
CisgICAgZm9udHNQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUod2Via2l0T3V0cHV0RGlyLmRh
dGEoKSwgIndlYmtpdGd0ay10ZXN0LWZvbnRzIiwgTlVMTCkpOwogICAgIGlmIChnX2ZpbGVfdGVz
dChmb250c1BhdGguZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RFU1RfRVhJ
U1RTIHwgR19GSUxFX1RFU1RfSVNfRElSKSkpCiAgICAgICAgIHJldHVybiBmb250c1BhdGguZ2V0
KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDNjNjM2
NDg1NmYzMTlkYzM3NDJhYzVhZTRjMDUzMTIxMTVjNGY3MDguLjFiOWVhNTVlMjk4MDgxNTg2MGZm
ODA1ZDRkMWQ5MWE4MTJhYjA1MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2Vu
ZGVyLmNwcApAQCAtODA2LDcgKzgwNiw3IEBAIHN0YXRpYyBHZGtFdmVudCogY3JlYXRlS2V5UHJl
c3NFdmVudChKU0NvbnRleHRSZWYgY29udGV4dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsCiAgICAg
Ly8gY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3NlZCBieSBHdGsrLgogICAgIEdPd25Q
dHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgIGdpbnQgbktleXM7Ci0gICAgaWYgKGdka19rZXlt
YXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tl
eVN5bSwgJmtleXMub3V0UHRyKCksICZuS2V5cykpCisgICAgaWYgKGdka19rZXltYXBfZ2V0X2Vu
dHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dldF9kZWZhdWx0KCksIGdka0tleVN5bSwgJkdP
dXRQdHI8R2RrS2V5bWFwS2V5PihrZXlzKSgpLCAmbktleXMpKQogICAgICAgICBwcmVzc0V2ZW50
LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKIAogICAgIHJl
dHVybiBwcmVzc0V2ZW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCBhMjMyOWI5ZDgxOTk3ZTRhZGYw
YTVhMDFlODc1MDVlNDNjMDY0YTY0Li5hZGJiNDYzNjk0Yjk2MTJjNjdkMWUzOGU1MWUwM2E5YzRl
YzAxMjllIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdENvbnRleHRNZW51LmNwcApAQCAtODAzLDcgKzgwMyw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RDb250ZXh0TWVudVNtYXJ0U2VwYXJhdG9ycyhDb250ZXh0TWVudVNtYXJ0U2VwYXJhdG9y
c1Rlc3QqIHRlc3QsCiAgICAgLy8gSGlkaW5nIGEgbWVudSBpdGVtIGJldHdlZW4gdHdvIHNlcGFy
YXRvcnMgaGlkZXMgdGhlIGZvbGxvd2luZyBzZXBhcmF0b3IuCiAgICAgR3RrQWN0aW9uKiBhY3Rp
b24gPSBndGtfYWN0aXZhdGFibGVfZ2V0X3JlbGF0ZWRfYWN0aW9uKEdUS19BQ1RJVkFUQUJMRShn
X2xpc3RfbnRoX2RhdGEobWVudUl0ZW1zLmdldCgpLCAzKSkpOwogICAgIGd0a19hY3Rpb25fc2V0
X3Zpc2libGUoYWN0aW9uLCBGQUxTRSk7Ci0gICAgbWVudUl0ZW1zLnNldChndGtfY29udGFpbmVy
X2dldF9jaGlsZHJlbihHVEtfQ09OVEFJTkVSKG1lbnUpKSk7CisgICAgbWVudUl0ZW1zLnJlc2V0
KGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKICAgICBn
X2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgobWVudUl0ZW1zLmdldCgpKSwgPT0sIDYpOwog
ICAgIGl0ZW0gPSBHVEtfV0lER0VUKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMuZ2V0KCksIDAp
KTsKICAgICBnX2Fzc2VydCghR1RLX0lTX1NFUEFSQVRPUl9NRU5VX0lURU0oaXRlbSkgJiYgZ3Rr
X3dpZGdldF9nZXRfdmlzaWJsZShpdGVtKSk7CkBAIC04MzYsNyArODM2LDcgQEAgc3RhdGljIHZv
aWQgdGVzdENvbnRleHRNZW51U21hcnRTZXBhcmF0b3JzKENvbnRleHRNZW51U21hcnRTZXBhcmF0
b3JzVGVzdCogdGVzdCwKICAgICAvLyBUcmFpbGluZyBzZXBhcmF0b3JzIGFyZSBoaWRkZW4gdG9v
LgogICAgIGFjdGlvbiA9IGd0a19hY3RpdmF0YWJsZV9nZXRfcmVsYXRlZF9hY3Rpb24oR1RLX0FD
VElWQVRBQkxFKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMuZ2V0KCksIDUpKSk7CiAgICAgZ3Rr
X2FjdGlvbl9zZXRfdmlzaWJsZShhY3Rpb24sIEZBTFNFKTsKLSAgICBtZW51SXRlbXMuc2V0KGd0
a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobWVudSkpKTsKKyAgICBtZW51
SXRlbXMucmVzZXQoZ3RrX2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtZW51
KSkpOwogICAgIGl0ZW0gPSBHVEtfV0lER0VUKGdfbGlzdF9udGhfZGF0YShtZW51SXRlbXMuZ2V0
KCksIDApKTsKICAgICBnX2Fzc2VydCghR1RLX0lTX1NFUEFSQVRPUl9NRU5VX0lURU0oaXRlbSkg
JiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZShpdGVtKSk7CiAgICAgaXRlbSA9IEdUS19XSURHRVQo
Z19saXN0X250aF9kYXRhKG1lbnVJdGVtcy5nZXQoKSwgMSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0Q29va2llTWFuYWdlci5jcHAK
aW5kZXggYWRjNmI1YjliYWZjMDE0Mjc2M2EwNGE1Njc1ODVhZjdmOTAzNThiZS4uOWZmZmQ1YmE5
MGUxNGE5ZTFjMzVmNzk1MDUyOWZhNDgxMDYxYTkxZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdENvb2tpZU1hbmFnZXIuY3BwCkBA
IC03MiwxMiArNzIsMTIgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKHN0b3JhZ2UpIHsKICAg
ICAgICAgY2FzZSBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUOgogICAgICAg
ICAgICAgaWYgKCFtX2Nvb2tpZXNUZXh0RmlsZSkKLSAgICAgICAgICAgICAgICBtX2Nvb2tpZXNU
ZXh0RmlsZS5zZXQoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9yeSwgImNvb2tpZXMudHh0
IiwgTlVMTCkpOworICAgICAgICAgICAgICAgIG1fY29va2llc1RleHRGaWxlLnJlc2V0KGdfYnVp
bGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksICJjb29raWVzLnR4dCIsIE5VTEwpKTsKICAgICAg
ICAgICAgIGZpbGVuYW1lID0gbV9jb29raWVzVGV4dEZpbGUuZ2V0KCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJ
VEU6CiAgICAgICAgICAgICBpZiAoIW1fY29va2llc1NRTGl0ZUZpbGUpCi0gICAgICAgICAgICAg
ICAgbV9jb29raWVzU1FMaXRlRmlsZS5zZXQoZ19idWlsZF9maWxlbmFtZShrVGVtcERpcmVjdG9y
eSwgImNvb2tpZXMuZGIiLCBOVUxMKSk7CisgICAgICAgICAgICAgICAgbV9jb29raWVzU1FMaXRl
RmlsZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiY29va2llcy5kYiIs
IE5VTEwpKTsKICAgICAgICAgICAgIGZpbGVuYW1lID0gbV9jb29raWVzU1FMaXRlRmlsZS5nZXQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtODksNyArODksOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5UmVhZHlDYWxsYmFjayhH
T2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkK
ICAgICB7CiAgICAgICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICAgICAgV2ViS2l0Q29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSA9IHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0
X3BvbGljeV9maW5pc2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKTsKKyAgICAgICAgV2ViS2l0Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSA9
IHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeV9maW5pc2goV0VCS0lUX0NP
T0tJRV9NQU5BR0VSKG9iamVjdCksCisgICAgICAgICAgICByZXN1bHQsICZHT3V0UHRyPEdFcnJv
cj4oZXJyb3IpKCkpOwogICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogCiAgICAgICAg
IENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q29va2llTWFuYWdlclRlc3Qq
Pih1c2VyRGF0YSk7CkBAIC0xMTQsNyArMTE1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IGdldERvbWFpbnNSZWFkeUNhbGxiYWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiBy
ZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIHsKICAgICAgICAgR093blB0cjxHRXJyb3I+
IGVycm9yOwotICAgICAgICBjaGFyKiogZG9tYWlucyA9IHdlYmtpdF9jb29raWVfbWFuYWdlcl9n
ZXRfZG9tYWluc193aXRoX2Nvb2tpZXNfZmluaXNoKFdFQktJVF9DT09LSUVfTUFOQUdFUihvYmpl
Y3QpLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIGNoYXIqKiBkb21haW5zID0g
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llc19maW5pc2goV0VC
S0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJkdPdXRQdHI8R0Vycm9yPihlcnJv
cikoKSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAKICAgICAgICAgQ29va2ll
TWFuYWdlclRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDb29raWVNYW5hZ2VyVGVzdCo+KHVzZXJE
YXRhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0SW5zcGVjdG9yU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCBmYmI2MmNlM2U5Mjk5YWYxMjk4M2Jm
ZmY4Nzc0ZDc1MzE3ODc5MDkwLi40ZjJjYzVjNzZhZTI2YzA0ZTdmMTFlMTBkYTIyMGJlMTk2MzRi
ZGNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dEluc3BlY3RvclNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC0xNjMsMjcgKzE2MywyNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0SW5zcGVjdG9yU2VydmVyUGFnZUxpc3QoSW5zcGVjdG9yU2VydmVyVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1h
cHBlZChHVEtfV0lORE9XX1RPUExFVkVMKTsKICAgICBnX2Fzc2VydCh0ZXN0LT5nZXRQYWdlTGlz
dCgpKTsKIAotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBhZ2VzLmxlbmd0aDsiLCAm
ZXJyb3Iub3V0UHRyKCkpOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBhZ2VzLmxl
bmd0aDsiLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICBnX2Fzc2VydChqYXZhc2Ny
aXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2Nt
cGludChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1
bHQpLCA9PSwgMSk7CiAKLSAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwYWdlc1swXS5pZDsiLCAmZXJyb3Iub3V0UHRyKCkpOwor
ICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoInBhZ2VzWzBdLmlkOyIsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogICAgIGdf
YXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAg
ICAgaW50IHBhZ2VJZCA9IFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2
YXNjcmlwdFJlc3VsdCk7CiAKICAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nOwotICAgIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
InBhZ2VzWzBdLnVybDsiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBhZ2VzWzBdLnVybDsi
LCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIHZhbHVlU3RyaW5nLnNldChX
ZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7
CisgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NT
dHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmlu
Zy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xOjI5OTkvIik7CiAKLSAgICBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwYWdlc1sw
XS5pbnNwZWN0b3JVcmw7IiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwYWdlc1swXS5pbnNw
ZWN0b3JVcmw7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnQoamF2
YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0
cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlw
dFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBTdHJpbmcgdmFsaWRJbnNw
ZWN0b3JVUkwgPSBTdHJpbmcoIi9NYWluLmh0bWw/cGFnZT0iKSArIFN0cmluZzo6bnVtYmVyKHBh
Z2VJZCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgdmFs
aWRJbnNwZWN0b3JVUkwudXRmOCgpKTsKIH0KQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgdm9p
ZCBvcGVuUmVtb3RlRGVidWdnaW5nU2Vzc2lvbihJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KHRlc3QtPmdldFBhZ2VMaXN0KCkpOwogCiAgICAg
R093blB0cjxHRXJyb3I+IGVycm9yOwotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFz
Y3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoInBh
Z2VzWzBdLmluc3BlY3RvclVybDsiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIFdlYktpdEphdmFz
Y3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoInBhZ2VzWzBdLmluc3BlY3RvclVybDsiLCAmR091dFB0cjxHRXJyb3I+
KGVycm9yKSgpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2Vy
dCghZXJyb3IuZ2V0KCkpOwogCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIHZvaWQgb3BlblJl
bW90ZURlYnVnZ2luZ1Nlc3Npb24oSW5zcGVjdG9yU2VydmVyVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICB0ZXN0LT5sb2FkVVJJKHJlc29sdmVkVVJMLnV0ZjgoKS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScpWzBdLnRpdGxlIiwgJmVycm9yLm91dFB0cigpKTsK
KyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpJylbMF0udGl0
bGUiLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0
UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogCkBAIC0yNTEsNyArMjUxLDcg
QEAgc3RhdGljIHZvaWQgc2VuZEluY29tcGxldGVSZXF1ZXN0KEluc3BlY3RvclNlcnZlclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICAvLyBDb25uZWN0IHRvIHRoZSBpbnNwZWN0b3Ig
c2VydmVyLgogICAgIEdSZWZQdHI8R1NvY2tldENsaWVudD4gY2xpZW50ID0gYWRvcHRHUmVmKGdf
c29ja2V0X2NsaWVudF9uZXcoKSk7Ci0gICAgR1JlZlB0cjxHU29ja2V0Q29ubmVjdGlvbj4gY29u
bmVjdGlvbiA9IGFkb3B0R1JlZihnX3NvY2tldF9jbGllbnRfY29ubmVjdF90b19ob3N0KGNsaWVu
dC5nZXQoKSwgIjEyNy4wLjAuMSIsIDI5OTksIDAsICZlcnJvci5vdXRQdHIoKSkpOworICAgIEdS
ZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdEdSZWYoZ19zb2NrZXRf
Y2xpZW50X2Nvbm5lY3RfdG9faG9zdChjbGllbnQuZ2V0KCksICIxMjcuMC4wLjEiLCAyOTk5LCAw
LCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKSk7CiAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOwogCiAgICAgLy8gU2VuZCBpbmNvbXBsZXRlIHJlcXVlc3QgKG1pc3NpbmcgYmxh
bmsgbGluZSBhZnRlciBoZWFkZXJzKSBhbmQgY2hlY2sgaWYgaW5zcGVjdG9yIHNlcnZlcgpAQCAt
MjYwLDcgKzI2MCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRJbmNvbXBsZXRlUmVxdWVzdChJbnNwZWN0
b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdPdXRwdXRTdHJlYW0qIG9z
dHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShjb25uZWN0
aW9uLmdldCgpKSk7CiAgICAgLy8gUmVxdWVzdCBtaXNzaW5nIGJsYW5rIGxpbmUgYWZ0ZXIgaGVh
ZGVycy4KICAgICBjb25zdCBnY2hhciogaW5jb21wbGV0ZVJlcXVlc3QgPSAiR0VUIC9kZXZ0b29s
cy9wYWdlLzEgSFRUUC8xLjFcclxuSG9zdDogTG9jYWxob3N0XHJcbiI7Ci0gICAgZ19vdXRwdXRf
c3RyZWFtX3dyaXRlKG9zdHJlYW0sIGluY29tcGxldGVSZXF1ZXN0LCBzdHJsZW4oaW5jb21wbGV0
ZVJlcXVlc3QpLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGdfb3V0cHV0X3N0cmVhbV93cml0
ZShvc3RyZWFtLCBpbmNvbXBsZXRlUmVxdWVzdCwgc3RybGVuKGluY29tcGxldGVSZXF1ZXN0KSwg
MCwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOwogCiAgICAgR0lucHV0U3RyZWFtKiBpc3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0
X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTShjb25uZWN0aW9uLmdldCgpKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcy5jcHAK
aW5kZXggMGMyMWM3MWViMDg0YjMwOTE4ZGE2ZTIwNGQ0MDQyMTBmNjFjZTVjNS4uYjkwZDU1YWVj
YTNkODc3YjMxMTJhN2EwMWQ4YzZiOGQwYThmMDE1ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RSZXNvdXJjZXMuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0UmVzb3VyY2VzLmNwcApAQCAtMTYyLDEz
ICsxNjIsMTMgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwogICAg
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEg
PSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNF
KG9iamVjdCksIHJlc3VsdCwgJmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOworICAgICAgICB1
bnNpZ25lZCBjaGFyKiBkYXRhID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YV9maW5pc2go
V0VCS0lUX1dFQl9SRVNPVVJDRShvYmplY3QpLCByZXN1bHQsICZkYXRhU2l6ZSwgJkdPdXRQdHI8
R0Vycm9yPihlcnJvcikoKSk7CiAgICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAg
ICAgIGdfYXNzZXJ0KGRhdGEpOwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZGF0YVNpemUsID4s
IDApOwogCiAgICAgICAgIFJlc291cmNlc1Rlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZXNUZXN0Kj4odXNlckRhdGEpOwotICAgICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5zZXQocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZGF0YSkpOworICAgICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0
YS5yZXNldChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSk7CiAgICAgICAgIHRlc3QtPm1f
cmVzb3VyY2VEYXRhU2l6ZSA9IGRhdGFTaXplOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRl
c3QtPm1fbWFpbkxvb3ApOwogICAgIH0KQEAgLTE5MSw3ICsxOTEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBnX2Fzc2VydCghc3RybmNtcChtX3Jlc291cmNlRGF0YS5nZXQoKSwga0phdmFzY3Jp
cHQsIG1fcmVzb3VyY2VEYXRhU2l6ZSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkKCk7Ci0gICAgICAgIG1fcmVzb3VyY2VEYXRhLmNsZWFyKCk7Cisg
ICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiAgICAgfQogCiAgICAgc2l6ZV90IG1fcmVz
b3VyY2VzTG9hZGVkOwpAQCAtNjc2LDcgKzY3Niw3IEBAIHN0YXRpYyB2b2lkIGFkZENhY2hlSFRU
UEhlYWRlcnNUb1Jlc3BvbnNlKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgIHNvdXBfZGF0ZV9m
cmVlKHNvdXBEYXRlKTsKICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+
cmVzcG9uc2VfaGVhZGVycywgIkNhY2hlLWNvbnRyb2wiLCAicHVibGljLCBtYXgtYWdlPTMxNTM2
MDAwIik7CiAgICAgc291cERhdGUgPSBzb3VwX2RhdGVfbmV3X2Zyb21fbm93KDM2MDApOwotICAg
IGRhdGUuc2V0KHNvdXBfZGF0ZV90b19zdHJpbmcoc291cERhdGUsIFNPVVBfREFURV9IVFRQKSk7
CisgICAgZGF0ZS5yZXNldChzb3VwX2RhdGVfdG9fc3RyaW5nKHNvdXBEYXRlLCBTT1VQX0RBVEVf
SFRUUCkpOwogICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25z
ZV9oZWFkZXJzLCAiRXhwaXJlcyIsIGRhdGUuZ2V0KCkpOwogICAgIHNvdXBfZGF0ZV9mcmVlKHNv
dXBEYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9U
ZXN0U1NMLmNwcAppbmRleCBlMzE4MGM1YmM4YzkyNDg3YmMxMzRhMTY0YmJkNGRmMmI4MmI3YTQy
Li4xYTQ4OTRmMDQxNzhkNWI2MzhkNjEyYzRjZTIyYWMwZWEwNTk1YTM4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFNTTC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RTU0wuY3BwCkBAIC0xNjEsNyAr
MTYxLDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9jZXJ0aWZpY2F0ZUluZm8pCiAgICAgICAg
ICAgICB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19mcmVlKG1fY2VydGlmaWNhdGVJbmZvKTsKICAg
ICAgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSB3ZWJraXRfY2VydGlmaWNhdGVfaW5mb19jb3B5KGlu
Zm8pOwotICAgICAgICBtX2hvc3Quc2V0KGdfc3RyZHVwKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0
LnJlc2V0KGdfc3RyZHVwKGhvc3QpKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5M
b29wKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IGIwM2M5ZGNhZDVhMzdkYWVh
NDBiN2JhZDIzOWJjM2E3NWVhNzFiODkuLmFkNjkyYTIyZjY0ZmI0NGZhZTRlYTU3YWZjZDhhNzhi
ZmYyNGQ2MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtMTA2LDE4ICsxMDYsMTggQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
IAogICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJ3aW5kb3cuZWNobygnRm9vJyk7IiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZWNobygnRm9vJyk7IiwgJkdPdXRQdHI8R0Vycm9y
PihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3Nl
cnQoIWVycm9yLmdldCgpKTsKICAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiRm9vIik7CiB9CiAKLXN0YXRp
YyBnYm9vbGVhbiBzY3JpcHREaWFsb2dDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0U2Ny
aXB0RGlhbG9nKiBkaWFsb2csIGNoYXIqKiByZXN1bHQpCitzdGF0aWMgZ2Jvb2xlYW4gc2NyaXB0
RGlhbG9nQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdlYktpdFNjcmlwdERpYWxvZyogZGlhbG9n
LCBHT3duUHRyPGNoYXI+KiByZXN1bHQpCiB7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRf
c2NyaXB0X2RpYWxvZ19nZXRfZGlhbG9nX3R5cGUoZGlhbG9nKSwgPT0sIFdFQktJVF9TQ1JJUFRf
RElBTE9HX0FMRVJUKTsKICAgICBnX2Fzc2VydCghKnJlc3VsdCk7Ci0gICAgKnJlc3VsdCA9IGdf
c3RyZHVwKHdlYmtpdF9zY3JpcHRfZGlhbG9nX2dldF9tZXNzYWdlKGRpYWxvZykpOworICAgIHJl
c3VsdC0+cmVzZXQoZ19zdHJkdXAod2Via2l0X3NjcmlwdF9kaWFsb2dfZ2V0X21lc3NhZ2UoZGlh
bG9nKSkpOwogICAgIHJldHVybiBUUlVFOwogfQogCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKICAgICBH
T3duUHRyPGNoYXI+IHJlc3VsdDsKLSAgICBndWxvbmcgc2NyaXB0RGlhbG9nSUQgPSBnX3NpZ25h
bF9jb25uZWN0KHRlc3QtPm1fd2ViVmlldywgInNjcmlwdC1kaWFsb2ciLCBHX0NBTExCQUNLKHNj
cmlwdERpYWxvZ0NhbGxiYWNrKSwgJnJlc3VsdC5vdXRQdHIoKSk7CisgICAgZ3Vsb25nIHNjcmlw
dERpYWxvZ0lEID0gZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJzY3JpcHQtZGlh
bG9nIiwgR19DQUxMQkFDSyhzY3JpcHREaWFsb2dDYWxsYmFjayksICZyZXN1bHQpOwogCiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5Xb3JsZFNjcmlwdCA9CiAgICAgICAgICJ0b3AuZm9vID0g
J0Zvbyc7XG4iCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lv
bklzb2xhdGVkV29ybGQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAg
ICJkb2N1bWVudC5vcGVuKDEsIDIsIDMpOyI7CiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKG1haW5Xb3JsZFNjcmlwdCwgMCk7CiAgICAgZ19hc3NlcnRfY21wc3Ry
KHJlc3VsdC5nZXQoKSwgPT0sICJNYWluIFdvcmxkIik7Ci0gICAgcmVzdWx0LmNsZWFyKCk7Cisg
ICAgcmVzdWx0LnJlc2V0KCk7CiAKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCIsIDApOwogICAgIGdfYXNz
ZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwpAQCAtMTY0LDEyICsxNjQsMTIgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgICAgIHRlc3QpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5M
b29wKTsKICAgICBnX2Fzc2VydF9jbXBzdHIocmVzdWx0LmdldCgpLCA9PSwgIklzb2xhdGVkIFdv
cmxkIik7Ci0gICAgcmVzdWx0LmNsZWFyKCk7CisgICAgcmVzdWx0LnJlc2V0KCk7CiAKICAgICAv
LyBDaGVjayB0aGF0ICd0b3AuZm9vJyBkZWZpbmVkIGluIG1haW4gd29ybGQgaXMgbm90IHZpc2li
bGUgaW4gaXNvbGF0ZWQgd29ybGQuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5pbm5lckhUTUwiLCAwKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsK
LSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJp
bmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAidW5kZWZpbmVkIik7CiAKICAgICBn
X3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCBzY3JpcHREaWFsb2dJ
RCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVz
dFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggMWEwNmY3NDk2N2I4
NDAxZTE5MzZiMDIwNDNiZmNjOWU2YWVhNTM0Zi4uOTRiNDIzMDUzNmUzZTk5NTZjNGZkNjZmODBk
MjJhZjdmMTA2NTkzZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAt
NjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBGYXZpY29uRGF0YWJhc2VUZXN0
KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8RmF2aWNvbkRhdGFiYXNlVGVzdCo+KGRhdGEpOwogICAgICAg
ICBXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlID0gd2Via2l0X3dlYl9jb250ZXh0X2dl
dF9mYXZpY29uX2RhdGFiYXNlKHRlc3QtPm1fd2ViQ29udGV4dCk7Ci0gICAgICAgIHRlc3QtPm1f
ZmF2aWNvbiA9IHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaChkYXRh
YmFzZSwgcmVzdWx0LCAmdGVzdC0+bV9lcnJvci5vdXRQdHIoKSk7CisgICAgICAgIHRlc3QtPm1f
ZmF2aWNvbiA9IHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX2ZpbmlzaChkYXRh
YmFzZSwgcmVzdWx0LCAmR091dFB0cjxHRXJyb3I+KHRlc3QtPm1fZXJyb3IpKCkpOwogICAgICAg
ICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBnZXRGYXZpY29uRm9yUGFnZVVSSUFuZFdhaXRVbnRpbFJlYWR5KGNvbnN0
IGNoYXIqIHBhZ2VVUkkpCiAgICAgewotICAgICAgICBtX2Vycm9yLmNsZWFyKCk7CisgICAgICAg
IG1fZXJyb3IucmVzZXQoKTsKICAgICAgICAgaWYgKG1fZmF2aWNvbikgewogICAgICAgICAgICAg
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fZmF2aWNvbik7CiAgICAgICAgICAgICBtX2Zhdmljb24g
PSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYTQ5YjM3NmY0ODE3NGIxOTg4MWQxODE3YjEz
Njg2ZTMyM2Y4MDlkOC4uNDRiMjhhODQ0ZmM3YTg0ZmZjYTZmYTI1MTIwYjY0NDczNTNlNmY4MiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJL
aXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC04Nyw2NiArODcsNjYgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdSdW5KYXZhU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgR093blB0cjxHRXJyb3I+
IGVycm9yOwotICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLnRpdGxlOyIsICZlcnJvci5vdXRQdHIoKSk7Cisg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdXZWJLaXRMaW5rJykudGl0bGU7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAg
ICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgp
KTsKICAgICBHT3duUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
dmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0R1RLKyBUaXRsZSIpOwogCi0gICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2lu
ZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykuaHJlZjsiLCAmZXJyb3Iu
b3V0UHRyKCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0
TGluaycpLmhyZWY7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnQo
amF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1
ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIpOwog
Ci0gICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykudGV4
dENvbnRlbnQiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0
LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnV2ViS2l0TGluaycpLnRleHRDb250ZW50IiwgJkdPdXRQdHI8R0Vycm9yPihl
cnJvcikoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQo
IWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJl
c2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0
R1RLKyBXZWJzaXRlIik7CiAKLSAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gMjU7IiwgJmVycm9yLm91dFB0cigpKTsKKyAg
ICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJhID0gMjU7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnQo
amF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fz
c2VydF9jbXBmbG9hdChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFz
Y3JpcHRSZXN1bHQpLCA9PSwgMjUpOwogCi0gICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IDIuNTsiLCAmZXJyb3Iub3V0UHRy
KCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImEgPSAyLjU7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAg
Z19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
ICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVt
YmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMi41KTsKIAotICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSB0cnVlIiwgJmVy
cm9yLm91dFB0cigpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gdHJ1ZSIsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3Ip
KCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0KCFlcnJv
ci5nZXQoKSk7CiAgICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jv
b2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOwogCi0gICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IGZhbHNlIiwgJmVycm9yLm91
dFB0cigpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKCJhID0gZmFsc2UiLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsK
ICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0KCFXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVh
bihqYXZhc2NyaXB0UmVzdWx0KSk7CiAKLSAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJhID0gbnVsbCIsICZlcnJvci5vdXRQdHIo
KSk7CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgiYSA9IG51bGwiLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICBn
X2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwog
ICAgIGdfYXNzZXJ0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKGphdmFzY3Jp
cHRSZXN1bHQpKTsKIAotICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoImZ1bmN0aW9uIEZvbygpIHsgYSA9IDI1OyB9IEZvbygpOyIs
ICZlcnJvci5vdXRQdHIoKSk7CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZnVuY3Rpb24gRm9vKCkgeyBhID0gMjU7IH0gRm9v
KCk7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydChXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzVW5kZWZpbmVkKGphdmFzY3JpcHRSZXN1bHQpKTsK
IAotICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJj
ZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIvb3JnL3dlYmtpdC93ZWJraXQyZ3RrL3Rlc3RzL2xpbmst
dGl0bGUuanMiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0
LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIvb3JnL3dl
YmtpdC93ZWJraXQyZ3RrL3Rlc3RzL2xpbmstdGl0bGUuanMiLCAmR091dFB0cjxHRXJyb3I+KGVy
cm9yKSgpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCgh
ZXJyb3IuZ2V0KCkpOwotICAgIHZhbHVlU3RyaW5nLnNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgdmFsdWVTdHJpbmcucmVz
ZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3Vs
dCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRH
VEsrIFRpdGxlIik7CiAKLSAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZCgiL3dyb25nL3BhdGgvdG8vcmVzb3Vy
Y2UuanMiLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKCIvd3JvbmcvcGF0
aC90by9yZXNvdXJjZS5qcyIsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogICAgIGdfYXNz
ZXJ0KCFqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwg
R19SRVNPVVJDRV9FUlJPUiwgR19SRVNPVVJDRV9FUlJPUl9OT1RfRk9VTkQpOwotICAgIGVycm9y
LmNsZWFyKCk7CisgICAgZXJyb3IucmVzZXQoKTsKIAotICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImZvbygpOyIsICZlcnJvci5v
dXRQdHIoKSk7CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZm9vKCk7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAg
ICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9y
LmdldCgpLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1Jf
U0NSSVBUX0ZBSUxFRCk7CiB9CkBAIC0zNDcsNyArMzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHdlYlZpZXdTYXZlZFRvU3RyZWFtQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgU2F2ZVdlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsKICAgICAgICAg
R093blB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICB0ZXN0LT5tX2lucHV0U3RyZWFtID0gYWRv
cHRHUmVmKHdlYmtpdF93ZWJfdmlld19zYXZlX2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3Vs
dCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgICAgIHRlc3QtPm1faW5wdXRTdHJlYW0gPSBhZG9w
dEdSZWYod2Via2l0X3dlYl92aWV3X3NhdmVfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0
LCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKSk7CiAgICAgICAgIGdfYXNzZXJ0KEdfSVNfSU5Q
VVRfU1RSRUFNKHRlc3QtPm1faW5wdXRTdHJlYW0uZ2V0KCkpKTsKICAgICAgICAgZ19hc3NlcnQo
IWVycm9yKTsKIApAQCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB3
ZWJWaWV3U2F2ZWRUb0ZpbGVDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBTYXZlV2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewogICAgICAgICBHT3duUHRyPEdF
cnJvcj4gZXJyb3I7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2Zp
bGVfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAg
ICAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmlsZV9maW5pc2godGVzdC0+
bV93ZWJWaWV3LCByZXN1bHQsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpKTsKICAgICAgICAg
Z19hc3NlcnQoIWVycm9yKTsKIAogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKQEAgLTM3
MSw3ICszNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNhdmVBbmRXYWl0Rm9yRmlsZSgpCiAg
ICAgewotICAgICAgICBtX3NhdmVEZXN0aW5hdGlvbkZpbGVQYXRoLnNldChnX2J1aWxkX2ZpbGVu
YW1lKG1fdGVtcERpcmVjdG9yeS5nZXQoKSwgInRlc3RXZWJWaWV3U2F2ZVJlc3VsdC5taHQiLCBO
VUxMKSk7CisgICAgICAgIG1fc2F2ZURlc3RpbmF0aW9uRmlsZVBhdGgucmVzZXQoZ19idWlsZF9m
aWxlbmFtZShtX3RlbXBEaXJlY3RvcnkuZ2V0KCksICJ0ZXN0V2ViVmlld1NhdmVSZXN1bHQubWh0
IiwgTlVMTCkpOwogICAgICAgICBtX2ZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChtX3NhdmVEZXN0aW5hdGlvbkZpbGVQYXRoLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF93ZWJf
dmlld19zYXZlX3RvX2ZpbGUobV93ZWJWaWV3LCBtX2ZpbGUuZ2V0KCksIFdFQktJVF9TQVZFX01P
REVfTUhUTUwsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4od2ViVmll
d1NhdmVkVG9GaWxlQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1f
bWFpbkxvb3ApOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U2F2
ZShTYXZlV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ2NoYXIgYnVmZmVy
WzUxMl0gPSB7IDAgfTsKICAgICBnc3NpemUgcmVhZEJ5dGVzID0gMDsKICAgICBnc3NpemUgdG90
YWxCeXRlc0Zyb21TdHJlYW0gPSAwOwotICAgIHdoaWxlIChyZWFkQnl0ZXMgPSBnX2lucHV0X3N0
cmVhbV9yZWFkKHRlc3QtPm1faW5wdXRTdHJlYW0uZ2V0KCksICZidWZmZXIsIDUxMiwgMCwgJmVy
cm9yLm91dFB0cigpKSkgeworICAgIHdoaWxlIChyZWFkQnl0ZXMgPSBnX2lucHV0X3N0cmVhbV9y
ZWFkKHRlc3QtPm1faW5wdXRTdHJlYW0uZ2V0KCksICZidWZmZXIsIDUxMiwgMCwgJkdPdXRQdHI8
R0Vycm9yPihlcnJvcikoKSkpIHsKICAgICAgICAgZ19hc3NlcnQoIWVycm9yKTsKICAgICAgICAg
dG90YWxCeXRlc0Zyb21TdHJlYW0gKz0gcmVhZEJ5dGVzOwogICAgIH0KQEAgLTQzNiw3ICs0MzYs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vZGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoaW5kZXhIVE1MLCAwKTsKICAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuYm9keS50ZXh0
Q29udGVudDsiLCAwKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJl
c2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCBpbmRleEhU
TUwpOwogfQogCkBAIC00NTksMTMgKzQ1OSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Bh
Z2VWaXNpYmlsaXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwot
ICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTsi
LCAmZXJyb3Iub3V0UHRyKCkpOworICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3Vt
ZW50LnZpc2liaWxpdHlTdGF0ZTsiLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAgICBn
X2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwog
ICAgIEdPd25QdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZVN0cmluZy5nZXQoKSwgPT0sICJoaWRkZW4iKTsKIAotICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmhpZGRlbjsi
LCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmhpZGRlbjsiLCAmR091dFB0cjxH
RXJyb3I+KGVycm9yKSgpKTsKICAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBn
X2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0KFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKQEAgLTQ3NCwxMyArNDc0LDEz
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGFnZVZpc2liaWxpdHkoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2hvd0luV2luZG93KCk7CiAgICAgdGVzdC0+
d2FpdFVudGlsVGl0bGVDaGFuZ2VkKCk7CiAKLSAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC52aXNpYmlsaXR5U3Rh
dGU7IiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU7
IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlwdFJl
c3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICB2YWx1ZVN0cmluZy5zZXQo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkp
OworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9D
U3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJp
bmcuZ2V0KCksID09LCAidmlzaWJsZSIpOwogCi0gICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZl
cnJvci5vdXRQdHIoKSk7CisgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZHT3V0UHRyPEdFcnJv
cj4oZXJyb3IpKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNz
ZXJ0KCFlcnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnQoIVdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKQEAgLTQ4OSwxMyArNDg5LDEzIEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGFnZVZpc2liaWxpdHkoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQodGVzdC0+bV93
ZWJWaWV3KSk7CiAgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkKCk7CiAKLSAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJk
b2N1bWVudC52aXNpYmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1
bWVudC52aXNpYmlsaXR5U3RhdGU7IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAg
Z19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
LSAgICB2YWx1ZVN0cmluZy5zZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJp
bmcoamF2YXNjcmlwdFJlc3VsdCkpOworICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiaGlkZGVuIik7CiAKLSAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJk
b2N1bWVudC5oaWRkZW47IiwgJmVycm9yLm91dFB0cigpKTsKKyAgICBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5oaWRk
ZW47IiwgJkdPdXRQdHI8R0Vycm9yPihlcnJvcikoKSk7CiAgICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7CiAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydChXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CkBA
IC01MDgsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG9uU25hcHNob3RDYW5j
ZWxsZWRSZWFkeShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0KiByZXMsIFNu
YXBzaG90V2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewogICAgICAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7Ci0gICAgICAgIHRlc3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc25h
cHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJvci5vdXRQdHIoKSk7CisgICAgICAgIHRl
c3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92
aWV3LCByZXMsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogICAgICAgICBnX2Fzc2VydCgh
dGVzdC0+bV9zdXJmYWNlKTsKICAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdf
SU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKTsKICAgICAgICAgdGVzdC0+cXVpdE1haW5M
b29wKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsv
VGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdFdlYlZpZXdHcm91cC5jcHAKaW5kZXggNDAxNjU1ZmY1MTRiMTE4
OGY2YzNjYzYyMGQwODNkM2QyYTE3MzE1Zi4uMTlmY2QzOTJjZjI5MDEyYTY4MDllYjE0N2Q1ZWI3
OGUyNDEyMDgyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViS2l0V2ViVmlld0dyb3VwLmNwcApAQCAtMTA0LDcgKzEw
NCw3IEBAIHN0YXRpYyBib29sIGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CiAKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZChrU3R5bGVTaGVldFRlc3RTY3JpcHQsICZlcnJvci5vdXRQdHIoKSk7Cisg
ICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZChrU3R5bGVTaGVldFRlc3RTY3JpcHQsICZHT3V0
UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwog
ICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDFl
YTJhY2QyNzY1YWI3MDVhZmQ3YjBiMjBiYzg5MjZkNzc2NzQxZjAuLmFkYzQ0MGQ3ZjFkNzk0NDRk
OTE3MzY5N2YxN2VmOWE4OThmOWNhMzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcApAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5k
UmVhZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEVkaXRvclRlc3Qq
IHRlc3QpCiAgICAgewogICAgICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIHRl
c3QtPm1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID0gd2Via2l0X3dlYl92aWV3X2Nhbl9leGVj
dXRlX2VkaXRpbmdfY29tbWFuZF9maW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsICZlcnJv
ci5vdXRQdHIoKSk7CisgICAgICAgIHRlc3QtPm1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID0g
d2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRlX2VkaXRpbmdfY29tbWFuZF9maW5pc2godGVzdC0+
bV93ZWJWaWV3LCByZXN1bHQsICZHT3V0UHRyPEdFcnJvcj4oZXJyb3IpKCkpOwogICAgICAgICBn
X2Fzc2VydCghZXJyb3IuZ2V0KCkpOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1f
bWFpbkxvb3ApOwogICAgIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZQogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3Qt
Pm1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKTsKICAgICB0ZXN0
LT5jb3B5Q2xpcGJvYXJkKCk7Ci0gICAgY2xpcGJvYXJkVGV4dC5zZXQoZ3RrX2NsaXBib2FyZF93
YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CisgICAgY2xpcGJvYXJkVGV4dC5yZXNl
dChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKIAogICAg
IC8vIFRoZSBtYWluc3BhbiBzaG91bGQgYmUgc2VsZWN0ZWQgYWZ0ZXIgY2FsbGluZyBTRUxFQ1Rf
QUxMLgogICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIkFsbCB3
b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95LiIpOwpAQCAtMTgzLDcgKzE4Myw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsRWRpdGFibGUoRWRpdG9y
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRf
U0VMRUNUX0FMTCk7CiAgICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwotICAgIGNsaXBib2FyZFRl
eHQuc2V0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwor
ICAgIGNsaXBib2FyZFRleHQucmVzZXQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3Qt
Pm1fY2xpcGJvYXJkKSk7CiAKICAgICAvLyBUaGUgbWFpbnNwYW4gc2hvdWxkIGJlIHNlbGVjdGVk
IGFmdGVyIGNhbGxpbmcgU0VMRUNUX0FMTC4KICAgICBnX2Fzc2VydF9jbXBzdHIoY2xpcGJvYXJk
VGV4dC5nZXQoKSwgPT0sICJBbGwgd29yayBhbmQgbm8gcGxheSBtYWtlIEphY2sgYSBkdWxsIGJv
eS4iKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9X
ZWJFeHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCA0MGNiNmNhZjkxNWUxNGJjODE0OWYzY2QzYjNj
MGVmMzgyOTI4MTU3Li5mMDUwOTZmZmZlNmMzNTVkYThiMWU2Y2Q1M2IyZTdjYTVhMjRmNzFlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5z
aW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dl
YkV4dGVuc2lvblRlc3QuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgc3RhdGljIHZvaWQgYnVzQWNx
dWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5h
bWUsIGcKICAgICAgICAgJmludGVyZmFjZVZpcnR1YWxUYWJsZSwKICAgICAgICAgZ19vYmplY3Rf
cmVmKHVzZXJEYXRhKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfb2Jq
ZWN0X3VucmVmKSwKLSAgICAgICAgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgJkdPdXRQdHI8
R0Vycm9yPihlcnJvcikoKSk7CiAgICAgaWYgKCFyZWdpc3RyYXRpb25JRCkKICAgICAgICAgZ193
YXJuaW5nKCJGYWlsZWQgdG8gcmVnaXN0ZXIgb2JqZWN0OiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2Up
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2Vi
UHJvY2Vzc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dl
YlByb2Nlc3NUZXN0LmNwcAppbmRleCA4YzAwODM3MWUyMGVjMmRhZDdmODRjNTEwNDMyYWRhY2Ji
YWIzYzI5Li45YzA3ZjBkM2YzNGNhMzAyZjEzMjc2M2Y0NTUxZWJhODg2NWE2NzJhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJvY2Vzc1Rlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNz
VGVzdC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFj
ayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICAg
ICAgJmludGVyZmFjZVZpcnR1YWxUYWJsZSwKICAgICAgICAgZ19vYmplY3RfcmVmKHVzZXJEYXRh
KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KGdfb2JqZWN0X3VucmVmKSwK
LSAgICAgICAgJmVycm9yLm91dFB0cigpKTsKKyAgICAgICAgJkdPdXRQdHI8R0Vycm9yPihlcnJv
cikoKSk7CiAgICAgaWYgKCFyZWdpc3RyYXRpb25JRCkKICAgICAgICAgZ193YXJuaW5nKCJGYWls
ZWQgdG8gcmVnaXN0ZXIgb2JqZWN0OiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmlu
ZGV4IGJmY2MxN2RjYzY3ZjZiZDQwZjFhYzNlNTdkMDViNTYxY2NhMmZhMzkuLjFjNDRkYjQ1OGMz
YTQ1ZmNjNGI4YTUxYmUxMDk3N2NhNDczYjNhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2d0ay9JbnB1dE1ldGhvZEZpbHRlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogCiAgICAgICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgICAgICBn
aW50IG5LZXlzOwotICAgICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFs
KGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5VmFsdWUsICZrZXlzLm91dFB0cigpLCAm
bktleXMpKQorICAgICAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdk
a19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5VmFsdWUsICZHT3V0UHRyPEdka0tleW1hcEtl
eT4oa2V5cykoKSwgJm5LZXlzKSkKICAgICAgICAgICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5
Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKIAogICAgICAgICBmaWx0ZXJLZXlFdmVudCgm
ZXZlbnQtPmtleSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9y
bVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3
R3RrLmNwcAppbmRleCBiYTZmYWIwNDg0MGMxMjc3YzZmYjEzMTc3ZjEyMjY2NzU2NzQ3YzIxLi5m
YzYyMWFlNTBjNGQ3Y2M3OTUyMDNiOTkwMzU5N2E0MjcxN2Q5Y2EzIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
c3RhdGljIHZvaWQgZG9LZXlTdHJva2UoR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0LCB1bnNpZ25lZCBp
bnQga2V5VmFsKQogICAgIC8vIFdoZW4gc3ludGhlc2l6aW5nIGFuIGV2ZW50LCBhbiBpbnZhbGlk
IGhhcmR3YXJlX2tleWNvZGUgdmFsdWUgY2FuIGNhdXNlIGl0IHRvIGJlIGJhZGx5IHByb2Nlc3Nl
ZCBieSBHVEsrLgogICAgIEdPd25QdHI8R2RrS2V5bWFwS2V5PiBrZXlzOwogICAgIGludCBrZXlz
Q291bnQ7Ci0gICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5
bWFwX2dldF9kZWZhdWx0KCksIGtleVZhbCwgJmtleXMub3V0UHRyKCksICZrZXlzQ291bnQpKQor
ICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRf
ZGVmYXVsdCgpLCBrZXlWYWwsICZHT3V0UHRyPEdka0tleW1hcEtleT4oa2V5cykoKSwgJmtleXND
b3VudCkpCiAgICAgICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClb
MF0ua2V5Y29kZTsKIAogICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVz
dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL0xvYWRUcmFja2luZ1Rl
c3QuY3BwCmluZGV4IGRmMzQyMDQ5MmM5OGI3M2VhYWU0ZGE5MmZjNjZjNjhiYmI2YmNhNDYuLjIx
MWZhOGI4MjdkMjVlNDc5NGYzMWZlZTAyNjBmNmEyZDc2ZmFkODIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvTG9hZFRyYWNraW5nVGVzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9Mb2FkVHJhY2tpbmdUZXN0LmNwcApA
QCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBsb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbgogc3RhdGljIHZvaWQgbG9h
ZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBs
b2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkksIEdFcnJvciogZXJyb3IsIExvYWRUcmFj
a2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+bV9sb2FkRmFpbGVkID0gdHJ1ZTsKLSAgICB0
ZXN0LT5tX2Vycm9yLnNldChnX2Vycm9yX2NvcHkoZXJyb3IpKTsKKyAgICB0ZXN0LT5tX2Vycm9y
LnJlc2V0KGdfZXJyb3JfY29weShlcnJvcikpOwogCiAgICAgc3dpdGNoIChsb2FkRXZlbnQpIHsK
ICAgICBjYXNlIFdFQktJVF9MT0FEX1NUQVJURUQ6CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBM
b2FkVHJhY2tpbmdUZXN0Ojpsb2FkVVJJKGNvbnN0IGNoYXIqIHVyaSkKIHsKICAgICBtX2xvYWRF
dmVudHMuY2xlYXIoKTsKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0gMDsKLSAgICBtX2Vycm9y
LmNsZWFyKCk7CisgICAgbV9lcnJvci5yZXNldCgpOwogICAgIFdlYlZpZXdUZXN0Ojpsb2FkVVJJ
KHVyaSk7CiB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIExvYWRUcmFja2luZ1Rlc3Q6Omxv
YWRIdG1sKGNvbnN0IGNoYXIqIGh0bWwsIGNvbnN0IGNoYXIqIGJhc2VVUkkpCiB7CiAgICAgbV9s
b2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9lc3RpbWF0ZWRQcm9ncmVzcyA9IDA7Ci0gICAgbV9l
cnJvci5jbGVhcigpOworICAgIG1fZXJyb3IucmVzZXQoKTsKICAgICBXZWJWaWV3VGVzdDo6bG9h
ZEh0bWwoaHRtbCwgYmFzZVVSSSk7CiB9CiAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIExvYWRU
cmFja2luZ1Rlc3Q6OmxvYWRQbGFpblRleHQoY29uc3QgY2hhciogcGxhaW5UZXh0KQogewogICAg
IG1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZXN0aW1hdGVkUHJvZ3Jlc3MgPSAwOwotICAg
IG1fZXJyb3IuY2xlYXIoKTsKKyAgICBtX2Vycm9yLnJlc2V0KCk7CiAgICAgV2ViVmlld1Rlc3Q6
OmxvYWRQbGFpblRleHQocGxhaW5UZXh0KTsKIH0KIApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQg
TG9hZFRyYWNraW5nVGVzdDo6bG9hZFJlcXVlc3QoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkK
IHsKICAgICBtX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0g
MDsKLSAgICBtX2Vycm9yLmNsZWFyKCk7CisgICAgbV9lcnJvci5yZXNldCgpOwogICAgIFdlYlZp
ZXdUZXN0Ojpsb2FkUmVxdWVzdChyZXF1ZXN0KTsKIH0KIApAQCAtMTg2LDcgKzE4Niw3IEBAIHZv
aWQgTG9hZFRyYWNraW5nVGVzdDo6cmVsb2FkKCkKIHsKICAgICBtX2xvYWRFdmVudHMuY2xlYXIo
KTsKICAgICBtX2VzdGltYXRlZFByb2dyZXNzID0gMDsKLSAgICBtX2Vycm9yLmNsZWFyKCk7Cisg
ICAgbV9lcnJvci5yZXNldCgpOwogICAgIHdlYmtpdF93ZWJfdmlld19yZWxvYWQobV93ZWJWaWV3
KTsKIH0KIApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgTG9hZFRyYWNraW5nVGVzdDo6Z29CYWNr
KCkKIHsKICAgICBtX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICBtX2VzdGltYXRlZFByb2dyZXNz
ID0gMDsKLSAgICBtX2Vycm9yLmNsZWFyKCk7CisgICAgbV9lcnJvci5yZXNldCgpOwogICAgIFdl
YlZpZXdUZXN0Ojpnb0JhY2soKTsKIH0KIApAQCAtMjAyLDYgKzIwMiw2IEBAIHZvaWQgTG9hZFRy
YWNraW5nVGVzdDo6Z29Gb3J3YXJkKCkKIHsKICAgICBtX2xvYWRFdmVudHMuY2xlYXIoKTsKICAg
ICBtX2VzdGltYXRlZFByb2dyZXNzID0gMDsKLSAgICBtX2Vycm9yLmNsZWFyKCk7CisgICAgbV9l
cnJvci5yZXNldCgpOwogICAgIFdlYlZpZXdUZXN0Ojpnb0ZvcndhcmQoKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRlc3RCdXMuY3BwCmlu
ZGV4IDhjMmQzZjYzOGIxNmNhOWYyOTA5NmMyMzlmMjg2ZTYyZGIyNzIwYjcuLjVkN2ZiNjM2NzQx
NjhmODI2ZTQ0ZDg4NGIyOTA5MjY5MDVjZjc4NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0QnVzLmNwcApAQCAtMzksNyArMzksNyBA
QCBib29sIFdlYktpdFRlc3RCdXM6OnJ1bigpCiAKICAgICBHT3duUHRyPGNoYXI+IG91dHB1dDsK
ICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgaWYgKCFnX3NwYXduX2NvbW1hbmRfbGlu
ZV9zeW5jKGRidXNMYXVuY2guZ2V0KCksICZvdXRwdXQub3V0UHRyKCksIDAsIDAsICZlcnJvci5v
dXRQdHIoKSkpIHsKKyAgICBpZiAoIWdfc3Bhd25fY29tbWFuZF9saW5lX3N5bmMoZGJ1c0xhdW5j
aC5nZXQoKSwgJkdPdXRQdHI8Y2hhcj4ob3V0cHV0KSgpLCAwLCAwLCAmR091dFB0cjxHRXJyb3I+
KGVycm9yKSgpKSkgewogICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHN0YXJ0aW5nIERCVVMgZGFl
bW9uOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVz
dFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYktpdFRl
c3RTZXJ2ZXIuY3BwCmluZGV4IDBhYTg2YmM2OGE2ZjJmN2U5ZTBmY2Q1OTdkY2Y5ZmQ4Zjc2Y2Q0
MGYuLjg2ZmZlZTdkZDcxYjdiYzZhZmJmMmU5Yjc2NjIyNTM1NzdmMzY5NjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1dlYktpdDJHdGsvV2ViS2l0VGVzdFNlcnZlci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJLaXRUZXN0U2VydmVy
LmNwcApAQCAtMjksOCArMjksOCBAQCBXZWJLaXRUZXN0U2VydmVyOjpXZWJLaXRUZXN0U2VydmVy
KFNlcnZlclR5cGUgdHlwZSkKICAgICBHT3duUHRyPGNoYXI+IHNzbEtleUZpbGU7CiAgICAgaWYg
KHR5cGUgPT0gU2VydmVySFRUUFMpIHsKICAgICAgICAgQ1N0cmluZyByZXNvdXJjZXNEaXIgPSBU
ZXN0OjpnZXRSZXNvdXJjZXNEaXIoKTsKLSAgICAgICAgc3NsQ2VydGlmaWNhdGVGaWxlLnNldChn
X2J1aWxkX2ZpbGVuYW1lKHJlc291cmNlc0Rpci5kYXRhKCksICJ0ZXN0LWNlcnQucGVtIiwgTlVM
TCkpOwotICAgICAgICBzc2xLZXlGaWxlLnNldChnX2J1aWxkX2ZpbGVuYW1lKHJlc291cmNlc0Rp
ci5kYXRhKCksICJ0ZXN0LWtleS5wZW0iLCBOVUxMKSk7CisgICAgICAgIHNzbENlcnRpZmljYXRl
RmlsZS5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKHJlc291cmNlc0Rpci5kYXRhKCksICJ0ZXN0LWNl
cnQucGVtIiwgTlVMTCkpOworICAgICAgICBzc2xLZXlGaWxlLnJlc2V0KGdfYnVpbGRfZmlsZW5h
bWUocmVzb3VyY2VzRGlyLmRhdGEoKSwgInRlc3Qta2V5LnBlbSIsIE5VTEwpKTsKICAgICB9CiAK
ICAgICBHUmVmUHRyPFNvdXBBZGRyZXNzPiBhZGRyZXNzID0gYWRvcHRHUmVmKHNvdXBfYWRkcmVz
c19uZXcoIjEyNy4wLjAuMSIsIFNPVVBfQUREUkVTU19BTllfUE9SVCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvV2ViS2l0Mkd0ay9XZWJWaWV3VGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2d0ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAppbmRleCA4ZDZk
ZjU1MjFjYzVkMjFkZjEwZWFlMzY1NDkxZTg3MWM5NTgyOGYxLi5kM2Q1ZDhkNTZmM2MxMWMzZGU3
MWI5YjU3ZDAwZTE0ODljM2U5NThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0
ay9XZWJLaXQyR3RrL1dlYlZpZXdUZXN0LmNwcApAQCAtMjE5LDExICsyMTksMTEgQEAgc3RhdGlj
IHZvaWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1
bHQqIHJlc3VsdCwgZ3BvaW4KIHsKICAgICBzaXplX3QgZGF0YVNpemU7CiAgICAgR093blB0cjxH
RXJyb3I+IGVycm9yOwotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291
cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwg
JmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSB3
ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9i
amVjdCksIHJlc3VsdCwgJmRhdGFTaXplLCAmR091dFB0cjxHRXJyb3I+KGVycm9yKSgpKTsKICAg
ICBnX2Fzc2VydChkYXRhKTsKIAogICAgIFdlYlZpZXdUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8
V2ViVmlld1Rlc3QqPih1c2VyRGF0YSk7Ci0gICAgdGVzdC0+bV9yZXNvdXJjZURhdGEuc2V0KHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpKTsKKyAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5y
ZXNldChyZWludGVycHJldF9jYXN0PGNoYXIqPihkYXRhKSk7CiAgICAgdGVzdC0+bV9yZXNvdXJj
ZURhdGFTaXplID0gZGF0YVNpemU7CiAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5M
b29wKTsKIH0KQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFD
YWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbgogY29u
c3QgY2hhciogV2ViVmlld1Rlc3Q6Om1haW5SZXNvdXJjZURhdGEoc2l6ZV90JiBtYWluUmVzb3Vy
Y2VEYXRhU2l6ZSkKIHsKICAgICBtX3Jlc291cmNlRGF0YVNpemUgPSAwOwotICAgIG1fcmVzb3Vy
Y2VEYXRhLmNsZWFyKCk7CisgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBXZWJLaXRX
ZWJSZXNvdXJjZSogcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2Uo
bV93ZWJWaWV3KTsKICAgICBnX2Fzc2VydChyZXNvdXJjZSk7CiAKQEAgLTI5MCw3ICsyOTAsNyBA
QCB2b2lkIFdlYlZpZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1bnNpZ25lZCBr
ZXlNb2RpZmllcnMpCiAgICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGludmFs
aWQgaGFyZHdhcmVfa2V5Y29kZSB2YWx1ZSBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vz
c2VkIGJ5IEdUSysuCiAgICAgR093blB0cjxHZGtLZXltYXBLZXk+IGtleXM7CiAgICAgaW50IGtl
eXNDb3VudDsKLSAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19r
ZXltYXBfZ2V0X2RlZmF1bHQoKSwga2V5VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkp
CisgICAgaWYgKGdka19rZXltYXBfZ2V0X2VudHJpZXNfZm9yX2tleXZhbChnZGtfa2V5bWFwX2dl
dF9kZWZhdWx0KCksIGtleVZhbCwgJkdPdXRQdHI8R2RrS2V5bWFwS2V5PihrZXlzKSgpLCAma2V5
c0NvdW50KSkKICAgICAgICAgZXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQo
KVswXS5rZXljb2RlOwogCiAgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOwpAQCAt
NDI2LDcgKzQyNiw3IEBAIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc1VuZGVm
aW5lZChXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0CiBzdGF0aWMgdm9pZCBvblNu
YXBzaG90UmVhZHkoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCogcmVzLCBX
ZWJWaWV3VGVzdCogdGVzdCkKIHsKICAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgdGVz
dC0+bV9zdXJmYWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3Zp
ZXcsIHJlcywgJmVycm9yLm91dFB0cigpKTsKKyAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmR091dFB0cjxHRXJy
b3I+KGVycm9yKSgpKTsKICAgICBnX2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlIHx8ICFlcnJvci5n
ZXQoKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQo
KSwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RP
X0NSRUFURSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlckF0ay5jcHAKaW5kZXggOTE1NTU5ODY4ZDNlZjRiN2M3ZmEzOTVhOTZlMmViM2Jk
NjNjNjE3ZC4uY2RhZTFkMzMwNGNiYWE3NjBiMWM1MWI0ODVmYzViMGZkYzMzMDgwMCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRr
LmNwcApAQCAtOTAsMzAgKzkwLDMwIEBAIGdib29sZWFuIGF4T2JqZWN0RXZlbnRMaXN0ZW5lcihH
U2lnbmFsSW52b2NhdGlvbkhpbnQqIHNpZ25hbEhpbnQsIHVuc2lnbmVkIG51bVBhCiAgICAgZ19z
aWduYWxfcXVlcnkoc2lnbmFsSGludC0+c2lnbmFsX2lkLCAmc2lnbmFsUXVlcnkpOwogCiAgICAg
aWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJzdGF0ZS1jaGFuZ2UiKSkg
ewotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTol
cyIsIGdfdmFsdWVfZ2V0X3N0cmluZygmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgICAgIHNpZ25h
bFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFy
YW1WYWx1ZXNbMl0pKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXBfcHJpbnRm
KCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkp
OworICAgICAgICBzaWduYWxWYWx1ZS5yZXNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1
ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMl0pKSk7CiAgICAgICAgIGlmICghZ19zdHJjbXAw
KGdfdmFsdWVfZ2V0X3N0cmluZygmcGFyYW1WYWx1ZXNbMV0pLCAiY2hlY2tlZCIpKQogICAgICAg
ICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJDaGVja2VkU3RhdGVDaGFuZ2VkIjsKICAgICAgICAg
ZWxzZSBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSwg
ImludmFsaWQtZW50cnkiKSkKICAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQVhJbnZh
bGlkU3RhdHVzQ2hhbmdlZCI7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5
LnNpZ25hbF9uYW1lLCAiZm9jdXMtZXZlbnQiKSkgewotICAgICAgICBzaWduYWxOYW1lLnNldChn
X3N0cmR1cCgiZm9jdXMtZXZlbnQiKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1
cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7Cisg
ICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOworICAgICAg
ICBzaWduYWxWYWx1ZS5yZXNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9v
bGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7CiAgICAgICAgIGlmIChnX3ZhbHVlX2dldF9ib29sZWFu
KCZwYXJhbVZhbHVlc1sxXSkpCiAgICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYRm9j
dXNlZFVJRWxlbWVudENoYW5nZWQiOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxR
dWVyeS5zaWduYWxfbmFtZSwgImNoaWxkcmVuLWNoYW5nZWQiKSkgewogICAgICAgICBjb25zdCBn
Y2hhciogY2hpbGRyZW5DaGFuZ2VkRGV0YWlsID0gZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGlu
dC0+ZGV0YWlsKTsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJjaGls
ZHJlbi1jaGFuZ2VkOiVzIiwgY2hpbGRyZW5DaGFuZ2VkRGV0YWlsKSk7Ci0gICAgICAgIHNpZ25h
bFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1W
YWx1ZXNbMV0pKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCJj
aGlsZHJlbi1jaGFuZ2VkOiVzIiwgY2hpbGRyZW5DaGFuZ2VkRGV0YWlsKSk7CisgICAgICAgIHNp
Z25hbFZhbHVlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF91aW50KCZw
YXJhbVZhbHVlc1sxXSkpKTsKICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICFnX3N0cmNtcDAo
Y2hpbGRyZW5DaGFuZ2VkRGV0YWlsLCAiYWRkIikgPyAiQVhDaGlsZHJlbkFkZGVkIiA6ICJBWENo
aWxkcmVuUmVtb3ZlZCI7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNp
Z25hbF9uYW1lLCAicHJvcGVydHktY2hhbmdlIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQo
Z19zdHJkdXBfcHJpbnRmKCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhz
aWduYWxIaW50LT5kZXRhaWwpKSk7CisgICAgICAgIHNpZ25hbE5hbWUucmVzZXQoZ19zdHJkdXBf
cHJpbnRmKCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50
LT5kZXRhaWwpKSk7CiAgICAgICAgIGlmICghZ19zdHJjbXAwKGdfcXVhcmtfdG9fc3RyaW5nKHNp
Z25hbEhpbnQtPmRldGFpbCksICJhY2Nlc3NpYmxlLXZhbHVlIikpCiAgICAgICAgICAgICBub3Rp
ZmljYXRpb25OYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJsb2FkLWNvbXBsZXRlIikpCiAgICAgICAgIG5v
dGlmaWNhdGlvbk5hbWUgPSAiQVhMb2FkQ29tcGxldGUiOwogICAgIGVsc2UKLSAgICAgICAgc2ln
bmFsTmFtZS5zZXQoZ19zdHJkdXAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUpKTsKKyAgICAgICAg
c2lnbmFsTmFtZS5yZXNldChnX3N0cmR1cChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSkpOwogCiAg
ICAgaWYgKGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzKQogICAgICAgICBwcmludEFjY2Vzc2li
aWxpdHlFdmVudChhY2Nlc3NpYmxlLCBzaWduYWxOYW1lLmdldCgpLCBzaWduYWxWYWx1ZS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDg1
ZTI3MjY2YTIxOGU1YTg2MDdjNTZkZGJhNjNhOTk0MmY3ZmFjYmEuLjI5ODI4M2JhYWVjMGViMDJm
MDdlYTlkNzI0YzUzNThhMTYxMDU0OGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdGsuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgSlNTdHJpbmdSZWYgaW5kZXhSYW5n
ZUluVGFibGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgYm9vbCBpc1Jvd1JhbmdlKQogICAg
ICAgICAgICAgYmFzZSA9IGNvbHVtbjsKICAgICAgICAgICAgIGxlbmd0aCA9IGF0a190YWJsZV9n
ZXRfY29sdW1uX2V4dGVudF9hdChBVEtfVEFCTEUoYXhUYWJsZSksIHJvdywgY29sdW1uKTsKICAg
ICAgICAgfQotICAgICAgICByYW5nZVN0cmluZy5zZXQoZ19zdHJkdXBfcHJpbnRmKCJ7JWQsICVk
fSIsIGJhc2UsIGxlbmd0aCkpOworICAgICAgICByYW5nZVN0cmluZy5yZXNldChnX3N0cmR1cF9w
cmludGYoInslZCwgJWR9IiwgYmFzZSwgbGVuZ3RoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9u
dHNHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0
aXZhdGVGb250c0d0ay5jcHAKaW5kZXggMWFjNWEzYTgxOThhNDIwOTBlYjE2YTFhYjZjOGQ1YzA2
ZjJlNDhkNy4uMjM3Mjk5ZDJhM2RkNWZiMmYwMDY3ZmYxZGQzMjM3N2M3MjQ3NzEwZCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVG
b250c0d0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9n
dGsvQWN0aXZhdGVGb250c0d0ay5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIENTdHJpbmcg
Z2V0Rm9udHNQYXRoKCkKICAgICAgICAgcmV0dXJuIGZvbnRzUGF0aC5nZXQoKTsKIAogICAgIC8v
IFRyeSBhbHRlcm5hdGl2ZSBmb250cyBwYXRoLgotICAgIGZvbnRzUGF0aC5zZXQoZ19idWlsZF9m
aWxlbmFtZSh3ZWJraXRPdXRwdXREaXIuZGF0YSgpLCAid2Via2l0Z3RrLXRlc3QtZm9udHMiLCBO
VUxMKSk7CisgICAgZm9udHNQYXRoLnJlc2V0KGdfYnVpbGRfZmlsZW5hbWUod2Via2l0T3V0cHV0
RGlyLmRhdGEoKSwgIndlYmtpdGd0ay10ZXN0LWZvbnRzIiwgTlVMTCkpOwogICAgIGlmIChnX2Zp
bGVfdGVzdChmb250c1BhdGguZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RF
U1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfRElSKSkpCiAgICAgICAgIHJldHVybiBmb250c1Bh
dGguZ2V0KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL0V2ZW50
U2VuZGVyUHJveHlHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5k
ZXJQcm94eUd0ay5jcHAKaW5kZXggMzgwNDM4Y2YxNzE0YTcyYWQ3MDY2MzIzNThlZjhmMjlmMDYz
ZDk3Mi4uYzE1MGY1MjFkODNlZmM2NjlmN2Y1ZTQ2ZDZmNjRiNzBiYzcwYWYxZSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvRXZlbnRTZW5kZXJQcm94eUd0ay5jcHAKQEAg
LTI5Nyw3ICsyOTcsNyBAQCB2b2lkIEV2ZW50U2VuZGVyUHJveHk6OmtleURvd24oV0tTdHJpbmdS
ZWYga2V5UmVmLCBXS0V2ZW50TW9kaWZpZXJzIHdrTW9kaWZpZXJzLAogCiAgICAgR093blB0cjxH
ZGtLZXltYXBLZXk+IGtleXM7CiAgICAgZ2ludCBuS2V5czsKLSAgICBpZiAoZ2RrX2tleW1hcF9n
ZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3lt
LCAma2V5cy5vdXRQdHIoKSwgJm5LZXlzKSkKKyAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmll
c19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwgZ2RrS2V5U3ltLCAmR091dFB0
cjxHZGtLZXltYXBLZXk+KGtleXMpKCksICZuS2V5cykpCiAgICAgICAgIHByZXNzRXZlbnQtPmtl
eS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOwogCiAgICAgR2RrRXZl
bnQqIHJlbGVhc2VFdmVudCA9IGdka19ldmVudF9jb3B5KHByZXNzRXZlbnQpOwo=
</data>
<flag name="commit-queue"
          id="245140"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>