<?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>162475</bug_id>
          
          <creation_ts>2016-09-22 17:54:00 -0700</creation_ts>
          <short_desc>Add SPI for allowing non-special schemes to have non-null SecurityOrigins after r206165</short_desc>
          <delta_ts>2016-09-23 11:08:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=162387</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=162254</see_also>
          <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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1232727</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-22 17:54:00 -0700</bug_when>
    <thetext>Add SPI for allowing non-special schemes to have non-null SecurityOrigins after r206165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232729</commentid>
    <comment_count>1</comment_count>
      <attachid>289638</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-22 17:55:29 -0700</bug_when>
    <thetext>Created attachment 289638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232745</commentid>
    <comment_count>2</comment_count>
      <attachid>289641</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-22 18:29:57 -0700</bug_when>
    <thetext>Created attachment 289641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232748</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-22 18:33:05 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232766</commentid>
    <comment_count>4</comment_count>
      <attachid>289641</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-22 20:10:11 -0700</bug_when>
    <thetext>Comment on attachment 289641
Patch

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

Thanks for updating our WebKitSecurityManager API. You also need to update webkit2gtk-4.0-sections.txt, that&apos;s why EWS is red.

Please also wait for Carlos to approve the GTK+ API changes. Ideally we would also add an API test, maybe he&apos;ll help with that?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:166
&gt; + * This is deprecated. Use webkit_security_manager_register_valid_security_origin_protocol instead.

Use a deprecated tag:

* Deprecated: 2.16. Use webkit_security_manager_register_valid_security_origin_protocol() instead.

Also note I added parentheses to the function name, else it doesn&apos;t get formatted correctly in the documentation.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:177
&gt; + * This is deprecated. Use webkit_security_manager_uri_scheme_is_valid_security_origin_protocol instead.

Ditto.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:179
&gt; + * Returns: %False.

%FALSE

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:183
&gt; +    return false;

We prefer to return FALSE (gboolean type) since it&apos;s a gboolean and not a bool. Of course either works.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:192
&gt; + * Register @protocol as a valid security origin protocol. 
&gt; + * This means that security origins with this protocol are not always null, which they are by default.

Hm, what does this mean? I have no clue, so I think API users have no chance.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:193
&gt; + */

Use a since tag:

 * Since: 2.16

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:211
&gt; + * Returns: %TRUE if @protocol is a valid security origin or %FALSE otherwise.

Also needs a Since tag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232779</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-22 21:10:38 -0700</bug_when>
    <thetext>Also, is there any way to keep the old API working? Even if it&apos;s just a GTK-layer wrapper around the new API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232804</commentid>
    <comment_count>6</comment_count>
      <attachid>289641</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-23 00:57:05 -0700</bug_when>
    <thetext>Comment on attachment 289641
Patch

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

Thanks for updating the GTK+ API too. We should make sure that we don&apos;t change the behavior, so I would add resource unconditionally in the SchemeRegistry, and we should probably add manually the custom uri schemes when registered.

&gt; Source/WebCore/page/SecurityOrigin.cpp:97
&gt; +    if (SchemeRegistry::isValidSecurityOriginProtocol(innerURL.protocol()))

Why valid? Aren&apos;t null security origins valid too? Could we use null or unique instead of valid? SchemeRegistry::shouldTreatURLSchemeAsNonNull() or SchemeRegistry::shouldTreatURLSchemeAsNonUnique()?

&gt; Source/WebCore/platform/SchemeRegistry.cpp:77
&gt; -static URLSchemesMap&amp; schemesWithUniqueOrigins()
&gt; +static URLSchemesMap&amp; validSecurityOriginProtocols()

This is the SchemeRegistry and all other methods use Scheme, not Protocol, so I would make this consistent and use Scheme instead. schemesWithNonUniqueOrigins(), for example

&gt; Source/WebCore/platform/SchemeRegistry.cpp:-87
&gt; -    if (schemesWithUniqueOrigins.get().isEmpty()) {
&gt; -        schemesWithUniqueOrigins.get().add(&quot;about&quot;);
&gt; -        schemesWithUniqueOrigins.get().add(&quot;javascript&quot;);
&gt; -        // This is a willful violation of HTML5.
&gt; -        // See https://bugs.webkit.org/show_bug.cgi?id=11885
&gt; -        schemesWithUniqueOrigins.get().add(&quot;data&quot;);
&gt; -    }

So, here I would add resource inside a GTK platform ifdef.

&gt; Source/WebCore/platform/SchemeRegistry.cpp:190
&gt; -void SchemeRegistry::registerURLSchemeAsNoAccess(const String&amp; scheme)
&gt; +void SchemeRegistry::registerValidSecurityOriginProtocol(const String&amp; scheme)

Same here, I would follow the pattern registerURLSchemeAs for consistency.

&gt; Source/WebKit2/Shared/WebProcessCreationParameters.cpp:87
&gt; -    encoder &lt;&lt; urlSchemesRegisteredAsNoAccess;
&gt; +    encoder &lt;&lt; validSecurityOriginProtocols;

Ditto, urlSchemesRegisteredAs...

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:166
&gt;&gt; + * This is deprecated. Use webkit_security_manager_register_valid_security_origin_protocol instead.
&gt; 
&gt; Use a deprecated tag:
&gt; 
&gt; * Deprecated: 2.16. Use webkit_security_manager_register_valid_security_origin_protocol() instead.
&gt; 
&gt; Also note I added parentheses to the function name, else it doesn&apos;t get formatted correctly in the documentation.

I&apos;m not sure about using webkit_security_manager_register_valid_security_origin_protocol() instead, because those a re not equivalent, they do the opposite. If you want to to register a schemes as no-access, now you don&apos;t need to do anything, because that scheme is already considered as no-access by WebKit.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:-174
&gt; -    g_return_if_fail(WEBKIT_IS_SECURITY_MANAGER(manager));
&gt; -    g_return_if_fail(scheme);
&gt; -
&gt; -    registerSecurityPolicyForURIScheme(manager, scheme, SecurityPolicyNoAccess);

When we deprecate a function with a change on behvior like this, we normally show a message to let the users know they are using something that does nothing.

g_warning(&quot;%s: all non special URI schemes are now considered as no-access by WebKit, this function does nothing.&quot;, __func__);

For example.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:177
&gt;&gt; + * This is deprecated. Use webkit_security_manager_uri_scheme_is_valid_security_origin_protocol instead.
&gt; 
&gt; Ditto.

Ditto.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:179
&gt;&gt; - * Returns: %TRUE if @scheme is a no-access scheme or %FALSE otherwise.
&gt;&gt; + * Returns: %False.
&gt; 
&gt; %FALSE

I think we should keep the documentation of the return value, even if it&apos;s not going to return TRUE.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:183
&gt;&gt; +    return false;
&gt; 
&gt; We prefer to return FALSE (gboolean type) since it&apos;s a gboolean and not a bool. Of course either works.

And add the g_warning here too.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:187
&gt; + * webkit_security_manager_register_valid_security_origin_protocol:

In the GTK+ public API we want to keep the consistency for sure, so this should be something like:

webkit_security_manager_register_uri_scheme_as_non_unique_security_origin()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:189
&gt; + * @protocol: a URI protocol

And this should be scheme instead of protocol

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:204
&gt; + * webkit_security_manager_uri_scheme_is_valid_security_origin_protocol:

webkit_security_manager_uri_scheme_is_non_unique_security_origin()

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:206
&gt; + * @protocol: a URI protocol

scheme

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitSecurityManager.cpp:219
&gt;  }

We also have to update the documentation files to add the new symbols. In any case, if you don&apos;t want to deal with the GTK+ part it&apos;s perfectly ok, if you just leave the no-access methods emtpy and we will add the new API in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232862</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-23 09:03:55 -0700</bug_when>
    <thetext>I rolled out the original change.  I think we need to consider this a bit more.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289638</attachid>
            <date>2016-09-22 17:55:29 -0700</date>
            <delta_ts>2016-09-22 18:29:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162475-20160922175238.patch</filename>
            <type>text/plain</type>
            <size>18193</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjIzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA5LTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgYWxsb3dpbmcgbm9uLXNwZWNpYWwgc2NoZW1lcyB0byBoYXZlIG5vbi1udWxsIFNlY3VyaXR5
T3JpZ2lucyBhZnRlciByMjA2MTY1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjI0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIG5lZWRzIG5ldyBBUEkgdGVzdHMuCisgICAgICAgIFRoaXMgYWxz
byBuZWVkcyBhIG5ldyBjb2NvYSBTUEkgaW4gV2ViS2l0Mi4KKyAgICAgICAgV2UgcHJvYmFibHkg
YWxzbyBuZWVkIGEgbGlua2VkLW9uLW9yLWJlZm9yZSBjaGVjayB0byBtYWludGFpbiBjb21wYXRp
YmlsaXR5LgorCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZFNlY3VyaXR5T3JpZ2lu
UHJvdG9jb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclZh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdp
c3RyeTo6aXNWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0Fj
Y2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaDoKKwog
MjAxNi0wOS0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVSTFBhcnNlciBzaG91bGQgbWF0Y2ggVVJMOjpwYXJzZSB3aGVuIHBhcnNpbmcg
ZGF0YSB1cmxzIHdpdGggc2xhc2hlcyBpbiB0aGVtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMjA2MTk2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDggKzk0LDggQEAgc3Rh
dGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjbwogICAgIGlmIChzY2hlbWVSZXF1
aXJlc0hvc3QoaW5uZXJVUkwpICYmIGlubmVyVVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTm9BY2Nlc3MoaW5uZXJVUkwucHJvdG9jb2woKSkpCi0gICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6aXNWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2wo
aW5uZXJVUkwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFRo
aXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIHJldHVybiAhaW5uZXJVUkwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3Ry
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0
cnkuY3BwCShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hl
bWVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDE5ICs3NCwxMSBAQCBzdGF0aWMg
VVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCiAgICAgcmV0dXJuIHNlY3VyZVNjaGVtZXM7
CiB9CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQor
c3RhdGljIFVSTFNjaGVtZXNNYXAmIHZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbHMoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzV2l0aFVuaXF1
ZU9yaWdpbnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHZhbGlk
U2VjdXJpdHlPcmlnaW5Qcm90b2NvbHM7CiAKLSAgICBpZiAoc2NoZW1lc1dpdGhVbmlxdWVPcmln
aW5zLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMu
Z2V0KCkuYWRkKCJhYm91dCIpOwotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0
KCkuYWRkKCJqYXZhc2NyaXB0Iik7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSB3aWxsZnVsIHZpb2xh
dGlvbiBvZiBIVE1MNS4KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTg4NQotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0
KCkuYWRkKCJkYXRhIik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2luczsKKyAgICByZXR1cm4gdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sczsKIH0KIAogc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKQEAgLTE5NSwxNiArMTg3
LDE2IEBAIGJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW0KICAgICByZXR1
cm4gbG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAotdm9pZCBTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQordm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9j
b2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkuYWRkKHNjaGVtZSk7CisgICAgdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29scygpLmFkZChz
Y2hlbWUpOwogfQogCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
Tm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCitib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc1Zh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBp
ZiAoc2NoZW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBz
Y2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKS5jb250YWlucyhzY2hlbWUpOworICAgIHJldHVybiB2
YWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2xzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAogdm9p
ZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25z
dCBTdHJpbmcmIHNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJl
Z2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuaAkocmV2aXNpb24gMjA2MTk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2No
ZW1lUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCiAgKgogICovCi0jaWZuZGVmIFNjaGVtZVJlZ2lzdHJ5X2gKLSNkZWZpbmUgU2NoZW1l
UmVnaXN0cnlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ4LDggKzQ3LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUo
Y29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc1Nl
Y3VyZShjb25zdCBTdHJpbmcmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9j
b2woY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFNlY3VyaXR5T3JpZ2lu
UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBEaXNwbGF5LWlzb2xhdGVkIHNjaGVt
ZXMgY2FuIG9ubHkgYmUgZGlzcGxheWVkIChpbiB0aGUgc2Vuc2Ugb2YKICAgICAvLyBTZWN1cml0
eU9yaWdpbjo6Y2FuRGlzcGxheSkgYnkgZG9jdW1lbnRzIGZyb20gdGhlIHNhbWUgc2NoZW1lLgpA
QCAtMTAxLDUgKzEwMCwzIEBAIHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIFNjaGVtZVJlZ2lzdHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
NjE5NikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI5IEBACisyMDE2LTA5LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgYWxsb3dpbmcgbm9uLXNwZWNpYWwgc2No
ZW1lcyB0byBoYXZlIG5vbi1udWxsIFNlY3VyaXR5T3JpZ2lucyBhZnRlciByMjA2MTY1CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI0NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0UmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJv
dG9jb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2wpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnJlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTYtMDktMjAgIEh1bnNlb3AgSmVvbmcgIDxoczg1Lmpl
b25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIGV3a19jb250ZXh0X21lbnVfaXRlbV9z
ZWxlY3QgdGVzdCBoYXZlIGJlZW4gZmFpbGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAy
MDYxOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lz
dGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBlbmNvZGVyIDw8IHVy
bFNjaGVtZXNGb3JXaGljaERvbWFpblJlbGF4YXRpb25Jc0ZvcmJpZGRlbjsKICAgICBlbmNvZGVy
IDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbDsKLSAgICBlbmNvZGVyIDw8IHVybFNjaGVt
ZXNSZWdpc3RlcmVkQXNOb0FjY2VzczsKKyAgICBlbmNvZGVyIDw8IHZhbGlkU2VjdXJpdHlPcmln
aW5Qcm90b2NvbHM7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxh
eUlzb2xhdGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFi
bGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Fsd2F5c1JldmFsaWRh
dGVkOwpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkQXNOb0FjY2VzcykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNw
bGF5SXNvbGF0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlz
aW9uIDIwNjE5NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgc3RydWN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNS
ZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgVmVjdG9yPFN0
cmluZz4gdXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlkZGVuOwogICAg
IFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbDsKLSAgICBWZWN0b3I8
U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3M7CisgICAgVmVjdG9yPFN0cmlu
Zz4gdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sczsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxheUlzb2xhdGVkOwogICAgIFZlY3RvcjxTdHJpbmc+IHVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIwNjE5NikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xpbmtIYXNoLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KQEAgLTU5OSw3ICs2MDAsNyBAQCBXZWJQ
cm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgY29weVRvVmVjdG9yKG1f
c2NoZW1lc1RvUmVnaXN0ZXJBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeSwgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5
KTsKICAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9TZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNGb3JXaGljaERvbWFpblJlbGF4YXRpb25Jc0Zv
cmJpZGRlbik7CiAgICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0xvY2FsLCBw
YXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbCk7Ci0gICAgY29weVRvVmVjdG9y
KG1fc2NoZW1lc1RvUmVnaXN0ZXJBc05vQWNjZXNzLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdp
c3RlcmVkQXNOb0FjY2Vzcyk7CisgICAgY29weVRvVmVjdG9yKG1fdmFsaWRTZWN1cml0eU9yaWdp
blByb3RvY29scywgcGFyYW1ldGVycy52YWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2xzKTsKICAg
ICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkLCBwYXJh
bWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0ZWQpOwogICAgIGNvcHlU
b1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZCwgcGFyYW1ldGVycy51cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQpOwogICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVt
ZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQpOwpAQCAtOTU1LDEwICs5NTYsMTAgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBcwogICAgIHNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKHVybFNjaGVt
ZSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nl
c3MoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3Rl
clZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKIHsK
LSAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNOb0FjY2Vzcy5hZGQodXJsU2NoZW1lKTsKLSAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyVVJMU2NoZW1l
QXNOb0FjY2Vzcyh1cmxTY2hlbWUpKTsKKyAgICBtX3ZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2Nv
bHMuYWRkKHVybFNjaGVtZSk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpSZWdpc3RlclZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbCh1cmxTY2hlbWUpKTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29s
YXRlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDcgKzE5
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JV
UkxTY2hlbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZl
clRydXN0RXZhbHVhdGlvbihib29sKTsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2Nh
bChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3Rv
Y29sKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJ
c29sYXRlZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JT
RW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQpA
QCAtNDY5LDcgKzQ2OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1l
c1RvUmVnaXN0ZXJBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9zY2hlbWVzVG9TZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yOwogICAg
IEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNMb2NhbDsKLSAgICBIYXNoU2V0
PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nlc3M7CisgICAgSGFzaFNldDxTdHJp
bmc+IG1fdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sczsKICAgICBIYXNoU2V0PFN0cmluZz4g
bV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkOwogICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZDsKICAgICBIYXNoU2V0PFN0cmluZz4g
bV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjA2MTk2KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4MSw2ICszODEsMTEgQEAgdm9pZCBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVt
ZUFzQ2FjaGVQYQogI2VuZGlmCiB9CiAKK3ZvaWQgV0tDb250ZXh0UmVnaXN0ZXJWYWxpZFNlY3Vy
aXR5T3JpZ2luUHJvdG9jb2woV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHBy
b3RvY29sKQoreworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+cmVnaXN0ZXJWYWxpZFNlY3VyaXR5
T3JpZ2luUHJvdG9jb2wodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCkpOworfQorCiB2b2lkIFdL
Q29udGV4dFNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHVybFNjaGVtZSkKIHsKICAgICB0b0ltcGwoY29u
dGV4dFJlZiktPnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUodG9JbXBs
KHVybFNjaGVtZSktPnN0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAkocmV2aXNpb24gMjA2MTk2KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNiArNTYsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWdpc3RlclVS
TFNjaGVtCiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNo
ZVBhcnRpdGlvbmVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiB1cmxTY2hlbWUp
OwogCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWdpc3RlclZhbGlkU2VjdXJpdHlPcmlnaW5Q
cm90b2NvbChXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgdXJsU2NoZW1lKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oV0tDb250ZXh0UmVm
IGNvbnRleHQsIGJvb2wgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsOCArMzMyLDggQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogICAgIGZvciAoYXV0byYgc2No
ZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwpCiAgICAgICAgIHJl
Z2lzdGVyVVJMU2NoZW1lQXNMb2NhbChzY2hlbWUpOwogCi0gICAgZm9yIChhdXRvJiBzY2hlbWUg
OiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzcykKLSAgICAgICAgcmVn
aXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHNjaGVtZSk7CisgICAgZm9yIChhdXRvJiBzY2hlbWUg
OiBwYXJhbWV0ZXJzLnZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbHMpCisgICAgICAgIHJlZ2lz
dGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sKHNjaGVtZSk7CiAKICAgICBmb3IgKGF1dG8m
IHNjaGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Rpc3BsYXlJc29sYXRl
ZCkKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChzY2hlbWUpOwpA
QCAtNDU3LDkgKzQ1Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xv
Y2EKICAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKHVybFNjaGVt
ZSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNv
bnN0IFN0cmluZyYgdXJsU2NoZW1lKSBjb25zdAordm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclZh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkgY29uc3QK
IHsKLSAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHVybFNj
aGVtZSk7CisgICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblBy
b3RvY29sKHVybFNjaGVtZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hl
bWVBc0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMDYxOTYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ3LDcgKzI0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFz
QnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IHZvaWQgc2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShjb25zdCBTdHJp
bmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJp
bmcmKSBjb25zdDsKLSAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBT
dHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIHJlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3Rv
Y29sKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rp
c3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJM
U2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lz
dGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDIwNjE5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZWdpc3RlclVSTFNjaGVtZUFz
QnlwYXNzaW5nQ29udGVudFNlY3VyaXR5UG9saWN5KFN0cmluZyBzY2hlbWUpCiAgICAgU2V0RG9t
YWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShTdHJpbmcgc2NoZW1lKQogICAgIFJl
Z2lzdGVyVVJMU2NoZW1lQXNMb2NhbChTdHJpbmcgc2NoZW1lKQotICAgIFJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2VzcyhTdHJpbmcgc2NoZW1lKQorICAgIFJlZ2lzdGVyVmFsaWRTZWN1cml0eU9y
aWdpblByb3RvY29sKFN0cmluZyBzY2hlbWUpCiAgICAgUmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3Bs
YXlJc29sYXRlZChTdHJpbmcgc2NoZW1lKQogICAgIFJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5h
YmxlZChTdHJpbmcgc2NoZW1lKQogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDYyODIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOS0yMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBT
UEkgZm9yIGFsbG93aW5nIG5vbi1zcGVjaWFsIHNjaGVtZXMgdG8gaGF2ZSBub24tbnVsbCBTZWN1
cml0eU9yaWdpbnMgYWZ0ZXIgcjIwNjE2NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgrW1dlYlZp
ZXcgX3JlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sOl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNi0wOS0yMSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgb3BlblBheW1lbnRTZXR1cCBB
UEkgb24gQXBwbGVQYXlTZXNzaW9uIG9iamVjdApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkocmV2aXNpb24gMjA2MTk2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MzE1LDYgKzQzMTUsMTEgQEAgKyAodm9p
ZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YQogICAgIFNjaGVtZVJlZ2lzdHJ5Ojpy
ZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5n
KHNjaGVtZSk7CiB9CiAKKysgKHZvaWQpX3JlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3Rv
Y29sOihOU1N0cmluZyAqKXNjaGVtZQoreworICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclZh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbChzY2hlbWUpOworfQorCiAtICh2b2lkKV9zY2FsZVdl
YlZpZXc6KGZsb2F0KXNjYWxlIGF0T3JpZ2luOihOU1BvaW50KW9yaWdpbgogewogICAgIF9wcml2
YXRlLT5wYWdlLT5zZXRQYWdlU2NhbGVGYWN0b3Ioc2NhbGUsIEludFBvaW50KG9yaWdpbikpOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAkocmV2aXNp
b24gMjA2MTk2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MTcsNiArODE3LDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5n
IHRvIHRoZSBBUEkuCiArICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzU2VjdXJlOihOU1N0cmlu
ZyAqKXNjaGVtZTsKICsgKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0xvY2FsU3Rv
cmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nOihOU1N0cmluZyAqKXNjaGVtZTsKICsgKHZvaWQp
X3JlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Np
bmc6KE5TU3RyaW5nICopc2NoZW1lOworKyAodm9pZClfcmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3Jp
Z2luUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lOwogCiAtICh2b2lkKV9zY2FsZVdlYlZpZXc6
KGZsb2F0KXNjYWxlIGF0T3JpZ2luOihOU1BvaW50KW9yaWdpbjsKIC0gKGZsb2F0KV92aWV3U2Nh
bGVGYWN0b3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289641</attachid>
            <date>2016-09-22 18:29:57 -0700</date>
            <delta_ts>2016-09-23 11:08:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162475-20160922182707.patch</filename>
            <type>text/plain</type>
            <size>29835</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjIzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA5LTIyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3IgYWxsb3dpbmcgbm9uLXNwZWNpYWwgc2NoZW1lcyB0byBoYXZlIG5vbi1udWxsIFNlY3VyaXR5
T3JpZ2lucyBhZnRlciByMjA2MTY1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjI0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIG5lZWRzIG5ldyBBUEkgdGVzdHMuCisgICAgICAgIFRoaXMgYWxz
byBuZWVkcyBhIG5ldyBjb2NvYSBTUEkgaW4gV2ViS2l0Mi4KKyAgICAgICAgV2UgcHJvYmFibHkg
YWxzbyBuZWVkIGEgbGlua2VkLW9uLW9yLWJlZm9yZSBjaGVjayB0byBtYWludGFpbiBjb21wYXRp
YmlsaXR5LgorCisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2YWxpZFNlY3VyaXR5T3JpZ2lu
UHJvdG9jb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclZh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdp
c3RyeTo6aXNWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3MpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0Fj
Y2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuaDoKKwog
MjAxNi0wOS0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVSTFBhcnNlciBzaG91bGQgbWF0Y2ggVVJMOjpwYXJzZSB3aGVuIHBhcnNpbmcg
ZGF0YSB1cmxzIHdpdGggc2xhc2hlcyBpbiB0aGVtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gMjA2MTk2KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDggKzk0LDggQEAgc3Rh
dGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjbwogICAgIGlmIChzY2hlbWVSZXF1
aXJlc0hvc3QoaW5uZXJVUkwpICYmIGlubmVyVVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTm9BY2Nlc3MoaW5uZXJVUkwucHJvdG9jb2woKSkpCi0gICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6aXNWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2wo
aW5uZXJVUkwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFRo
aXMgaXMgdGhlIGNvbW1vbiBjYXNlLgogICAgIHJldHVybiAhaW5uZXJVUkwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3Ry
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0
cnkuY3BwCShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hl
bWVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDE5ICs3NCwxMSBAQCBzdGF0aWMg
VVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygpCiAgICAgcmV0dXJuIHNlY3VyZVNjaGVtZXM7
CiB9CiAKLXN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKQor
c3RhdGljIFVSTFNjaGVtZXNNYXAmIHZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbHMoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkxTY2hlbWVzTWFwPiBzY2hlbWVzV2l0aFVuaXF1
ZU9yaWdpbnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVtZXNNYXA+IHZhbGlk
U2VjdXJpdHlPcmlnaW5Qcm90b2NvbHM7CiAKLSAgICBpZiAoc2NoZW1lc1dpdGhVbmlxdWVPcmln
aW5zLmdldCgpLmlzRW1wdHkoKSkgewotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMu
Z2V0KCkuYWRkKCJhYm91dCIpOwotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0
KCkuYWRkKCJqYXZhc2NyaXB0Iik7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSB3aWxsZnVsIHZpb2xh
dGlvbiBvZiBIVE1MNS4KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTg4NQotICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuZ2V0
KCkuYWRkKCJkYXRhIik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2luczsKKyAgICByZXR1cm4gdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sczsKIH0KIAogc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIGVtcHR5RG9jdW1lbnRTY2hlbWVzKCkKQEAgLTE5NSwxNiArMTg3
LDE2IEBAIGJvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW0KICAgICByZXR1
cm4gbG9jYWxVUkxTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAotdm9pZCBTY2hlbWVS
ZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQordm9pZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9j
b2woY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0gICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5z
KCkuYWRkKHNjaGVtZSk7CisgICAgdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29scygpLmFkZChz
Y2hlbWUpOwogfQogCi1ib29sIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
Tm9BY2Nlc3MoY29uc3QgU3RyaW5nJiBzY2hlbWUpCitib29sIFNjaGVtZVJlZ2lzdHJ5Ojppc1Zh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAgICBp
ZiAoc2NoZW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBz
Y2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMoKS5jb250YWlucyhzY2hlbWUpOworICAgIHJldHVybiB2
YWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2xzKCkuY29udGFpbnMoc2NoZW1lKTsKIH0KIAogdm9p
ZCBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZChjb25z
dCBTdHJpbmcmIHNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJl
Z2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuaAkocmV2aXNpb24gMjA2MTk2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2No
ZW1lUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCiAgKgogICovCi0jaWZuZGVmIFNjaGVtZVJlZ2lzdHJ5X2gKLSNkZWZpbmUgU2NoZW1l
UmVnaXN0cnlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQ4LDggKzQ3LDggQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUo
Y29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc1Nl
Y3VyZShjb25zdCBTdHJpbmcmKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9j
b2woY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFNlY3VyaXR5T3JpZ2lu
UHJvdG9jb2woY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBEaXNwbGF5LWlzb2xhdGVkIHNjaGVt
ZXMgY2FuIG9ubHkgYmUgZGlzcGxheWVkIChpbiB0aGUgc2Vuc2Ugb2YKICAgICAvLyBTZWN1cml0
eU9yaWdpbjo6Y2FuRGlzcGxheSkgYnkgZG9jdW1lbnRzIGZyb20gdGhlIHNhbWUgc2NoZW1lLgpA
QCAtMTAxLDUgKzEwMCwzIEBAIHB1YmxpYzoKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIFNjaGVtZVJlZ2lzdHJ5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
NjI4NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM3IEBACisyMDE2LTA5LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBmb3IgYWxsb3dpbmcgbm9uLXNwZWNpYWwgc2No
ZW1lcyB0byBoYXZlIG5vbi1udWxsIFNlY3VyaXR5T3JpZ2lucyBhZnRlciByMjA2MTY1CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI0NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0UmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJv
dG9jb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKHJlZ2lzdGVyU2VjdXJpdHlQb2xpY3lGb3JVUklTY2hlbWUpOgorICAgICAgICAoY2hl
Y2tTZWN1cml0eVBvbGljeUZvclVSSVNjaGVtZSk6CisgICAgICAgICh3ZWJraXRfc2VjdXJpdHlf
bWFuYWdlcl9yZWdpc3Rlcl91cmlfc2NoZW1lX2FzX25vX2FjY2Vzcyk6CisgICAgICAgICh3ZWJr
aXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX25vX2FjY2Vzcyk6CisgICAgICAgICh3
ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9yZWdpc3Rlcl92YWxpZF9zZWN1cml0eV9vcmlnaW5fcHJv
dG9jb2wpOgorICAgICAgICAod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc192
YWxpZF9zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2wpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFNlY3VyaXR5TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdX
ZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVmFs
aWRTZWN1cml0eU9yaWdpblByb3RvY29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclZhbGlkU2VjdXJpdHlPcmln
aW5Qcm90b2NvbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2No
ZW1lQXNOb0FjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE2
LTA5LTIyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgbW9yZSBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKSBjb2RlCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShy
ZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgdXJsU2No
ZW1lc1JlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICBlbmNv
ZGVyIDw8IHVybFNjaGVtZXNGb3JXaGljaERvbWFpblJlbGF4YXRpb25Jc0ZvcmJpZGRlbjsKICAg
ICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbDsKLSAgICBlbmNvZGVyIDw8
IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzczsKKyAgICBlbmNvZGVyIDw8IHZhbGlkU2Vj
dXJpdHlPcmlnaW5Qcm90b2NvbHM7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzRGlzcGxheUlzb2xhdGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRB
c0NPUlNFbmFibGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Fsd2F5
c1JldmFsaWRhdGVkOwpAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTG9jYWwpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzcykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbHMpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNEaXNwbGF5SXNvbGF0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgJKHJldmlzaW9uIDIwNjE5NikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgc3Ry
dWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxTdHJpbmc+IHVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAg
VmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc0ZvcldoaWNoRG9tYWluUmVsYXhhdGlvbklzRm9yYmlk
ZGVuOwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbDsKLSAg
ICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nlc3M7CisgICAgVmVj
dG9yPFN0cmluZz4gdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sczsKICAgICBWZWN0b3I8U3Ry
aW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxheUlzb2xhdGVkOwogICAgIFZlY3RvcjxT
dHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZDsKICAgICBWZWN0b3I8U3Ry
aW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQ7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHJldmlzaW9uIDIwNjE5
NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xpbmtIYXNoLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KQEAgLTU5OSw3ICs2MDAs
NyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAgICAgY29weVRv
VmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGlj
eSwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQnlwYXNzaW5nQ29udGVudFNlY3Vy
aXR5UG9saWN5KTsKICAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9TZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNGb3JXaGljaERvbWFpblJlbGF4
YXRpb25Jc0ZvcmJpZGRlbik7CiAgICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJB
c0xvY2FsLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2NhbCk7Ci0gICAgY29w
eVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc05vQWNjZXNzLCBwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkQXNOb0FjY2Vzcyk7CisgICAgY29weVRvVmVjdG9yKG1fdmFsaWRTZWN1
cml0eU9yaWdpblByb3RvY29scywgcGFyYW1ldGVycy52YWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9j
b2xzKTsKICAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xh
dGVkLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0ZWQpOwog
ICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZCwgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQpOwogICAgIGNvcHlUb1ZlY3Rv
cihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZCwgcGFyYW1ldGVycy51cmxT
Y2hlbWVzUmVnaXN0ZXJlZEFzQWx3YXlzUmV2YWxpZGF0ZWQpOwpAQCAtOTU1LDEwICs5NTYsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBcwogICAgIHNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2Fs
KHVybFNjaGVtZSkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVt
ZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpyZWdpc3RlclZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbChjb25zdCBTdHJpbmcmIHVybFNj
aGVtZSkKIHsKLSAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNOb0FjY2Vzcy5hZGQodXJsU2NoZW1l
KTsKLSAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVy
VVJMU2NoZW1lQXNOb0FjY2Vzcyh1cmxTY2hlbWUpKTsKKyAgICBtX3ZhbGlkU2VjdXJpdHlPcmln
aW5Qcm90b2NvbHMuYWRkKHVybFNjaGVtZSk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbCh1cmxT
Y2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Rp
c3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29ya2luZyBjb3B5KQpAQCAt
MTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERvbWFpblJlbGF4YXRpb25Gb3Ji
aWRkZW5Gb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRDYW5IYW5kbGVI
VFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sKTsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNO
b0FjY2Vzcyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHJlZ2lzdGVyVmFsaWRTZWN1cml0eU9y
aWdpblByb3RvY29sKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0Rpc3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElU
SU9OSU5HKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+
IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAg
ICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9TZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVu
Rm9yOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNMb2NhbDsKLSAg
ICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nlc3M7CisgICAgSGFz
aFNldDxTdHJpbmc+IG1fdmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sczsKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkOwogICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZDsKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQ7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24g
MjA2MTk2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsMTEgQEAgdm9pZCBXS0NvbnRleHRSZWdpc3Rl
clVSTFNjaGVtZUFzQ2FjaGVQYQogI2VuZGlmCiB9CiAKK3ZvaWQgV0tDb250ZXh0UmVnaXN0ZXJW
YWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2woV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3Ry
aW5nUmVmIHByb3RvY29sKQoreworICAgIHRvSW1wbChjb250ZXh0UmVmKS0+cmVnaXN0ZXJWYWxp
ZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2wodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCkpOworfQor
CiB2b2lkIFdLQ29udGV4dFNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIHVybFNjaGVtZSkKIHsKICAgICB0
b0ltcGwoY29udGV4dFJlZiktPnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hl
bWUodG9JbXBsKHVybFNjaGVtZSktPnN0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAkocmV2aXNpb24gMjA2MTk2
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRS
ZWdpc3RlclVSTFNjaGVtCiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2No
ZW1lQXNDYWNoZVBhcnRpdGlvbmVkKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlZiB1
cmxTY2hlbWUpOwogCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWdpc3RlclZhbGlkU2VjdXJp
dHlPcmlnaW5Qcm90b2NvbChXS0NvbnRleHRSZWYsIFdLU3RyaW5nUmVmKTsKKwogV0tfRVhQT1JU
IHZvaWQgV0tDb250ZXh0U2V0RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZShX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgdXJsU2NoZW1lKTsKIAogV0tfRVhQT1JU
IHZvaWQgV0tDb250ZXh0U2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oV0tD
b250ZXh0UmVmIGNvbnRleHQsIGJvb2wgdmFsdWUpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZWN1cml0eU1hbmFnZXIuY3Bw
CShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRTZWN1cml0eU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHR5cGVkZWYgZW51bSB7CiAgICAgU2VjdXJpdHlQ
b2xpY3lMb2NhbCwKLSAgICBTZWN1cml0eVBvbGljeU5vQWNjZXNzLAorICAgIFNlY3VyaXR5UG9s
aWN5VmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sLAogICAgIFNlY3VyaXR5UG9saWN5RGlzcGxh
eUlzb2xhdGVkLAogICAgIFNlY3VyaXR5UG9saWN5U2VjdXJlLAogICAgIFNlY3VyaXR5UG9saWN5
Q09SU0VuYWJsZWQsCkBAIC03OSw5ICs3OSw5IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyU2VjdXJp
dHlQb2xpY3lGb3JVUkkKICAgICAgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVy
VVJMU2NoZW1lQXNMb2NhbCh1cmxTY2hlbWUpOwogICAgICAgICBwcm9jZXNzUG9vbC0+cmVnaXN0
ZXJVUkxTY2hlbWVBc0xvY2FsKHVybFNjaGVtZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
U2VjdXJpdHlQb2xpY3lOb0FjY2VzczoKLSAgICAgICAgV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6
OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyh1cmxTY2hlbWUpOwotICAgICAgICBwcm9jZXNz
UG9vbC0+cmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKHVybFNjaGVtZSk7CisgICAgY2FzZSBT
ZWN1cml0eVBvbGljeVZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbDoKKyAgICAgICAgV2ViQ29y
ZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sKHVy
bFNjaGVtZSk7CisgICAgICAgIHByb2Nlc3NQb29sLT5yZWdpc3RlclZhbGlkU2VjdXJpdHlPcmln
aW5Qcm90b2NvbCh1cmxTY2hlbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNlY3VyaXR5
UG9saWN5RGlzcGxheUlzb2xhdGVkOgogICAgICAgICBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6
cmVnaXN0ZXJVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCh1cmxTY2hlbWUpOwpAQCAtMTA5LDgg
KzEwOSw4IEBAIHN0YXRpYyBib29sIGNoZWNrU2VjdXJpdHlQb2xpY3lGb3JVUklTY2gKICAgICBz
d2l0Y2ggKHBvbGljeSkgewogICAgIGNhc2UgU2VjdXJpdHlQb2xpY3lMb2NhbDoKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9j
YWwodXJsU2NoZW1lKTsKLSAgICBjYXNlIFNlY3VyaXR5UG9saWN5Tm9BY2Nlc3M6Ci0gICAgICAg
IHJldHVybiBXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05v
QWNjZXNzKHVybFNjaGVtZSk7CisgICAgY2FzZSBTZWN1cml0eVBvbGljeVZhbGlkU2VjdXJpdHlP
cmlnaW5Qcm90b2NvbDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlNjaGVtZVJlZ2lzdHJ5Ojpp
c1ZhbGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbCh1cmxTY2hlbWUpOwogICAgIGNhc2UgU2VjdXJp
dHlQb2xpY3lEaXNwbGF5SXNvbGF0ZWQ6CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29sYXRlZCh1cmxTY2hlbWUp
OwogICAgIGNhc2UgU2VjdXJpdHlQb2xpY3lTZWN1cmU6CkBAIC0xNjMsMTUgKzE2MywxMCBAQCBn
Ym9vbGVhbiB3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoCiAgKiBAc2VjdXJpdHlfbWFu
YWdlcjogYSAjV2ViS2l0U2VjdXJpdHlNYW5hZ2VyCiAgKiBAc2NoZW1lOiBhIFVSSSBzY2hlbWUK
ICAqCi0gKiBSZWdpc3RlciBAc2NoZW1lIGFzIGEgbm8tYWNjZXNzIHNjaGVtZS4gVGhpcyBtZWFu
cyB0aGF0IHBhZ2VzIGxvYWRlZAotICogd2l0aCB0aGlzIFVSSSBzY2hlbWUgY2Fubm90IGFjY2Vz
cyBwYWdlcyBsb2FkZWQgd2l0aCBhbnkgb3RoZXIgVVJJIHNjaGVtZS4KKyAqIFRoaXMgaXMgZGVw
cmVjYXRlZC4gVXNlIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3JlZ2lzdGVyX3ZhbGlkX3NlY3Vy
aXR5X29yaWdpbl9wcm90b2NvbCBpbnN0ZWFkLgogICovCiB2b2lkIHdlYmtpdF9zZWN1cml0eV9t
YW5hZ2VyX3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfbm9fYWNjZXNzKFdlYktpdFNlY3VyaXR5TWFu
YWdlciogbWFuYWdlciwgY29uc3QgY2hhciogc2NoZW1lKQogewotICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1NFQ1VSSVRZX01BTkFHRVIobWFuYWdlcikpOwotICAgIGdfcmV0dXJuX2lm
X2ZhaWwoc2NoZW1lKTsKLQotICAgIHJlZ2lzdGVyU2VjdXJpdHlQb2xpY3lGb3JVUklTY2hlbWUo
bWFuYWdlciwgc2NoZW1lLCBTZWN1cml0eVBvbGljeU5vQWNjZXNzKTsKIH0KIAogLyoqCkBAIC0x
NzksMTcgKzE3NCw0OCBAQCB2b2lkIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3JlZ2lzdGVyX3Vy
CiAgKiBAc2VjdXJpdHlfbWFuYWdlcjogYSAjV2ViS2l0U2VjdXJpdHlNYW5hZ2VyCiAgKiBAc2No
ZW1lOiBhIFVSSSBzY2hlbWUKICAqCi0gKiBXaGV0aGVyIEBzY2hlbWUgaXMgY29uc2lkZXJlZCBh
cyBhIG5vLWFjY2VzcyBzY2hlbWUuCi0gKiBTZWUgYWxzbyB3ZWJraXRfc2VjdXJpdHlfbWFuYWdl
cl9yZWdpc3Rlcl91cmlfc2NoZW1lX2FzX25vX2FjY2VzcygpLgorICogVGhpcyBpcyBkZXByZWNh
dGVkLiBVc2Ugd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc192YWxpZF9zZWN1
cml0eV9vcmlnaW5fcHJvdG9jb2wgaW5zdGVhZC4KICAqCi0gKiBSZXR1cm5zOiAlVFJVRSBpZiBA
c2NoZW1lIGlzIGEgbm8tYWNjZXNzIHNjaGVtZSBvciAlRkFMU0Ugb3RoZXJ3aXNlLgorICogUmV0
dXJuczogJUZhbHNlLgogICovCiBnYm9vbGVhbiB3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlf
c2NoZW1lX2lzX25vX2FjY2VzcyhXZWJLaXRTZWN1cml0eU1hbmFnZXIqIG1hbmFnZXIsIGNvbnN0
IGNoYXIqIHNjaGVtZSkKIHsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qKgorICogd2Via2l0
X3NlY3VyaXR5X21hbmFnZXJfcmVnaXN0ZXJfdmFsaWRfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29s
OgorICogQHNlY3VyaXR5X21hbmFnZXI6IGEgI1dlYktpdFNlY3VyaXR5TWFuYWdlcgorICogQHBy
b3RvY29sOiBhIFVSSSBwcm90b2NvbAorICoKKyAqIFJlZ2lzdGVyIEBwcm90b2NvbCBhcyBhIHZh
bGlkIHNlY3VyaXR5IG9yaWdpbiBwcm90b2NvbC4gCisgKiBUaGlzIG1lYW5zIHRoYXQgc2VjdXJp
dHkgb3JpZ2lucyB3aXRoIHRoaXMgcHJvdG9jb2wgYXJlIG5vdCBhbHdheXMgbnVsbCwgd2hpY2gg
dGhleSBhcmUgYnkgZGVmYXVsdC4KKyAqLworCit2b2lkIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2Vy
X3JlZ2lzdGVyX3ZhbGlkX3NlY3VyaXR5X29yaWdpbl9wcm90b2NvbChXZWJLaXRTZWN1cml0eU1h
bmFnZXIqIG1hbmFnZXIsIGNvbnN0IGNoYXIqIHByb3RvY29sKQoreworICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX1NFQ1VSSVRZX01BTkFHRVIobWFuYWdlcikpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwocHJvdG9jb2wpOworCisgICAgcmVnaXN0ZXJTZWN1cml0eVBvbGljeUZvclVSSVNj
aGVtZShtYW5hZ2VyLCBwcm90b2NvbCwgU2VjdXJpdHlQb2xpY3lWYWxpZFNlY3VyaXR5T3JpZ2lu
UHJvdG9jb2wpOworfQorCisvKioKKyAqIHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hl
bWVfaXNfdmFsaWRfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29sOgorICogQHNlY3VyaXR5X21hbmFn
ZXI6IGEgI1dlYktpdFNlY3VyaXR5TWFuYWdlcgorICogQHByb3RvY29sOiBhIFVSSSBwcm90b2Nv
bAorICoKKyAqIFdoZXRoZXIgQHByb3RvY29sIGlzIGNvbnNpZGVyZWQgYXMgYSB2YWxpZCBzZWN1
cml0eSBvcmlnaW4uCisgKiBTZWUgYWxzbyB3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9yZWdpc3Rl
cl92YWxpZF9zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2woKS4KKyAqCisgKiBSZXR1cm5zOiAlVFJV
RSBpZiBAcHJvdG9jb2wgaXMgYSB2YWxpZCBzZWN1cml0eSBvcmlnaW4gb3IgJUZBTFNFIG90aGVy
d2lzZS4KKyAqLworZ2Jvb2xlYW4gd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9p
c192YWxpZF9zZWN1cml0eV9vcmlnaW5fcHJvdG9jb2woV2ViS2l0U2VjdXJpdHlNYW5hZ2VyKiBt
YW5hZ2VyLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfU0VDVVJJVFlfTUFOQUdFUihtYW5hZ2VyKSwgRkFMU0UpOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHNjaGVtZSwgRkFMU0UpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHByb3RvY29sLCBGQUxTRSk7CiAKLSAgICByZXR1cm4gY2hlY2tTZWN1cml0eVBvbGljeUZvclVS
SVNjaGVtZShzY2hlbWUsIFNlY3VyaXR5UG9saWN5Tm9BY2Nlc3MpOworICAgIHJldHVybiBjaGVj
a1NlY3VyaXR5UG9saWN5Rm9yVVJJU2NoZW1lKHByb3RvY29sLCBTZWN1cml0eVBvbGljeVZhbGlk
U2VjdXJpdHlPcmlnaW5Qcm90b2NvbCk7CiB9CiAKIC8qKgpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2VjdXJpdHlNYW5hZ2VyLmgJ
KHJldmlzaW9uIDIwNjE5NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFNlY3VyaXR5TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw1NSArNTYsNjUgQEAg
c3RydWN0IF9XZWJLaXRTZWN1cml0eU1hbmFnZXJDbGFzcyB7CiB9OwogCiBXRUJLSVRfQVBJIEdU
eXBlCi13ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHZvaWQpOword2Via2l0X3NlY3VyaXR5X21hbmFnZXJfZ2V0X3R5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJLSVRfQVBJIHZv
aWQKLXdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfbG9jYWwg
ICAgICAgICAgICAoV2ViS2l0U2VjdXJpdHlNYW5hZ2VyICpzZWN1cml0eV9tYW5hZ2VyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKnNjaGVtZSk7Cit3ZWJraXRfc2VjdXJpdHlfbWFu
YWdlcl9yZWdpc3Rlcl91cmlfc2NoZW1lX2FzX2xvY2FsICAgICAgICAgICAgICAgICAoV2ViS2l0
U2VjdXJpdHlNYW5hZ2VyICpzZWN1cml0eV9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAqc2NoZW1lKTsKIAogV0VCS0lUX0FQSSBnYm9vbGVhbgotd2Via2l0X3Nl
Y3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19sb2NhbCAgICAgICAgICAgICAgICAgICAgIChX
ZWJLaXRTZWN1cml0eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFnZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgICAgICAgICAqc2NoZW1lKTsKK3dlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hl
bWVfaXNfbG9jYWwgICAgICAgICAgICAgICAgICAgICAgICAgIChXZWJLaXRTZWN1cml0eU1hbmFn
ZXIgKnNlY3VyaXR5X21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAg
ICpzY2hlbWUpOwogCisvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFya2VkIGFzIGRlcHJlY2F0
ZWQuIEl0IGRvZXNuJ3QgZG8gYW55dGhpbmcuCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9zZWN1
cml0eV9tYW5hZ2VyX3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfbm9fYWNjZXNzICAgICAgICAoV2Vi
S2l0U2VjdXJpdHlNYW5hZ2VyICpzZWN1cml0eV9tYW5hZ2VyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hh
ciAgICAgICAgICAgKnNjaGVtZSk7Cit3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl9yZWdpc3Rlcl91
cmlfc2NoZW1lX2FzX25vX2FjY2VzcyAgICAgICAgICAgICAoV2ViS2l0U2VjdXJpdHlNYW5hZ2Vy
ICpzZWN1cml0eV9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAq
c2NoZW1lKTsKIAorLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hcmtlZCBhcyBkZXByZWNhdGVk
LiBJdCBqdXN0IHJldHVybnMgZmFsc2UuCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfc2Vj
dXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX25vX2FjY2VzcyAgICAgICAgICAgICAgICAgKFdl
YktpdFNlY3VyaXR5TWFuYWdlciAqc2VjdXJpdHlfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2No
YXIgICAgICAgICAgICpzY2hlbWUpOword2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVt
ZV9pc19ub19hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNlY3VyaXR5TWFuYWdl
ciAqc2VjdXJpdHlfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
KnNjaGVtZSk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfcmVn
aXN0ZXJfdXJpX3NjaGVtZV9hc19kaXNwbGF5X2lzb2xhdGVkIChXZWJLaXRTZWN1cml0eU1hbmFn
ZXIgKnNlY3VyaXR5X21hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAqc2No
ZW1lKTsKK3dlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfZGlz
cGxheV9pc29sYXRlZCAgICAgIChXZWJLaXRTZWN1cml0eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFn
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpzY2hlbWUpOwogCiBXRUJL
SVRfQVBJIGdib29sZWFuCi13ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2Rp
c3BsYXlfaXNvbGF0ZWQgICAgICAgICAgKFdlYktpdFNlY3VyaXR5TWFuYWdlciAqc2VjdXJpdHlf
bWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpzY2hlbWUpOword2Via2l0
X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19kaXNwbGF5X2lzb2xhdGVkICAgICAgICAg
ICAgICAgKFdlYktpdFNlY3VyaXR5TWFuYWdlciAqc2VjdXJpdHlfbWFuYWdlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKnNjaGVtZSk7CiAKIFdFQktJVF9BUEkgdm9pZAot
d2Via2l0X3NlY3VyaXR5X21hbmFnZXJfcmVnaXN0ZXJfdXJpX3NjaGVtZV9hc19zZWN1cmUgICAg
ICAgICAgIChXZWJLaXRTZWN1cml0eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFnZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdjaGFyICAgICAgICAgICAqc2NoZW1lKTsKK3dlYmtpdF9zZWN1cml0eV9tYW5hZ2Vy
X3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfc2VjdXJlICAgICAgICAgICAgICAgIChXZWJLaXRTZWN1
cml0eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICpzY2hlbWUpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfc2VjdXJp
dHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX3NlY3VyZSAgICAgICAgICAgICAgICAgICAgKFdlYktp
dFNlY3VyaXR5TWFuYWdlciAqc2VjdXJpdHlfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICpzY2hlbWUpOword2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9p
c19zZWN1cmUgICAgICAgICAgICAgICAgICAgICAgICAgKFdlYktpdFNlY3VyaXR5TWFuYWdlciAq
c2VjdXJpdHlfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKnNj
aGVtZSk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfcmVnaXN0
ZXJfdXJpX3NjaGVtZV9hc19jb3JzX2VuYWJsZWQgICAgIChXZWJLaXRTZWN1cml0eU1hbmFnZXIg
KnNlY3VyaXR5X21hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAqc2NoZW1l
KTsKK3dlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3JlZ2lzdGVyX3VyaV9zY2hlbWVfYXNfY29yc19l
bmFibGVkICAgICAgICAgIChXZWJLaXRTZWN1cml0eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFnZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpzY2hlbWUpOwogCiBXRUJLSVRf
QVBJIGdib29sZWFuCi13ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2NvcnNf
ZW5hYmxlZCAgICAgICAgICAgICAgKFdlYktpdFNlY3VyaXR5TWFuYWdlciAqc2VjdXJpdHlfbWFu
YWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICpzY2hlbWUpOword2Via2l0X3Nl
Y3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19jb3JzX2VuYWJsZWQgICAgICAgICAgICAgICAg
ICAgKFdlYktpdFNlY3VyaXR5TWFuYWdlciAqc2VjdXJpdHlfbWFuYWdlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAgKnNjaGVtZSk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Vi
a2l0X3NlY3VyaXR5X21hbmFnZXJfcmVnaXN0ZXJfdXJpX3NjaGVtZV9hc19lbXB0eV9kb2N1bWVu
dCAgIChXZWJLaXRTZWN1cml0eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFnZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAqc2NoZW1lKTsKK3dlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3Jl
Z2lzdGVyX3VyaV9zY2hlbWVfYXNfZW1wdHlfZG9jdW1lbnQgICAgICAgIChXZWJLaXRTZWN1cml0
eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgICpzY2hlbWUpOwogCiBXRUJLSVRfQVBJIGdib29sZWFuCi13ZWJraXRfc2VjdXJpdHlf
bWFuYWdlcl91cmlfc2NoZW1lX2lzX2VtcHR5X2RvY3VtZW50ICAgICAgICAgICAgKFdlYktpdFNl
Y3VyaXR5TWFuYWdlciAqc2VjdXJpdHlfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAg
ICAgICAgICpzY2hlbWUpOword2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19l
bXB0eV9kb2N1bWVudCAgICAgICAgICAgICAgICAgKFdlYktpdFNlY3VyaXR5TWFuYWdlciAqc2Vj
dXJpdHlfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgKnNjaGVt
ZSk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X3NlY3VyaXR5X21hbmFnZXJfcmVnaXN0ZXJf
dmFsaWRfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29sICAgICAgKFdlYktpdFNlY3VyaXR5TWFuYWdl
ciAqc2VjdXJpdHlfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAg
KnNjaGVtZSk7CisKK1dFQktJVF9BUEkgZ2Jvb2xlYW4KK3dlYmtpdF9zZWN1cml0eV9tYW5hZ2Vy
X3VyaV9zY2hlbWVfaXNfdmFsaWRfc2VjdXJpdHlfb3JpZ2luX3Byb3RvY29sIChXZWJLaXRTZWN1
cml0eU1hbmFnZXIgKnNlY3VyaXR5X21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICpzY2hlbWUpOwogCiBHX0VORF9ERUNMUwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIwNjE5NikKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMiw4
ICszMzIsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAgICAg
Zm9yIChhdXRvJiBzY2hlbWUgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNMb2Nh
bCkKICAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKHNjaGVtZSk7CiAKLSAgICBmb3Ig
KGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNz
KQotICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzTm9BY2Nlc3Moc2NoZW1lKTsKKyAgICBmb3Ig
KGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRlcnMudmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29scykK
KyAgICAgICAgcmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2woc2NoZW1lKTsKIAog
ICAgIGZvciAoYXV0byYgc2NoZW1lIDogcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
RGlzcGxheUlzb2xhdGVkKQogICAgICAgICByZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xh
dGVkKHNjaGVtZSk7CkBAIC00NTcsOSArNDU3LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYQogICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
TG9jYWwodXJsU2NoZW1lKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVt
ZUFzTm9BY2Nlc3MoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0Cit2b2lkIFdlYlByb2Nl
c3M6OnJlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sKGNvbnN0IFN0cmluZyYgdXJs
U2NoZW1lKSBjb25zdAogewotICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFz
Tm9BY2Nlc3ModXJsU2NoZW1lKTsKKyAgICBTY2hlbWVSZWdpc3RyeTo6cmVnaXN0ZXJWYWxpZFNl
Y3VyaXR5T3JpZ2luUHJvdG9jb2wodXJsU2NoZW1lKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpy
ZWdpc3RlclVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1l
KSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlz
aW9uIDIwNjE5NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDcsNyArMjQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lz
dGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAgICAgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2No
ZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0xv
Y2FsKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05v
QWNjZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZvaWQgcmVnaXN0ZXJWYWxpZFNlY3Vy
aXR5T3JpZ2luUHJvdG9jb2woY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
ICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA2MTk2KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICsz
Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFJlZ2lz
dGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQb2xpY3koU3RyaW5nIHNjaGVt
ZSkKICAgICBTZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKFN0cmluZyBz
Y2hlbWUpCiAgICAgUmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsKFN0cmluZyBzY2hlbWUpCi0gICAg
UmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNjZXNzKFN0cmluZyBzY2hlbWUpCisgICAgUmVnaXN0ZXJW
YWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2woU3RyaW5nIHNjaGVtZSkKICAgICBSZWdpc3RlclVS
TFNjaGVtZUFzRGlzcGxheUlzb2xhdGVkKFN0cmluZyBzY2hlbWUpCiAgICAgUmVnaXN0ZXJVUkxT
Y2hlbWVBc0NPUlNFbmFibGVkKFN0cmluZyBzY2hlbWUpCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjI4MikKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDE2LTA5LTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQWRkIFNQSSBmb3IgYWxsb3dpbmcgbm9uLXNwZWNpYWwgc2NoZW1lcyB0byBoYXZl
IG5vbi1udWxsIFNlY3VyaXR5T3JpZ2lucyBhZnRlciByMjA2MTY1CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI0NzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKCtbV2ViVmlldyBfcmVnaXN0ZXJWYWxpZFNlY3VyaXR5T3JpZ2luUHJvdG9jb2w6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDE2LTA5LTIxICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBvcGVu
UGF5bWVudFNldHVwIEFQSSBvbiBBcHBsZVBheVNlc3Npb24gb2JqZWN0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzMTUsNiArNDMx
NSwxMSBAQCArICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQWxsb3dpbmdEYXRhCiAgICAgU2No
ZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNBbGxvd2luZ0RhdGFiYXNlQWNjZXNzSW5Q
cml2YXRlQnJvd3Npbmcoc2NoZW1lKTsKIH0KIAorKyAodm9pZClfcmVnaXN0ZXJWYWxpZFNlY3Vy
aXR5T3JpZ2luUHJvdG9jb2w6KE5TU3RyaW5nICopc2NoZW1lCit7CisgICAgU2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVmFsaWRTZWN1cml0eU9yaWdpblByb3RvY29sKHNjaGVtZSk7Cit9CisKIC0g
KHZvaWQpX3NjYWxlV2ViVmlldzooZmxvYXQpc2NhbGUgYXRPcmlnaW46KE5TUG9pbnQpb3JpZ2lu
CiB7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldFBhZ2VTY2FsZUZhY3RvcihzY2FsZSwgSW50UG9p
bnQob3JpZ2luKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oCShyZXZpc2lvbiAyMDYxOTYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxNyw2ICs4MTcsNyBAQCBDb3VsZCBi
ZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KICsgKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNT
ZWN1cmU6KE5TU3RyaW5nICopc2NoZW1lOwogKyAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0Fs
bG93aW5nTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3Npbmc6KE5TU3RyaW5nICopc2No
ZW1lOwogKyAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJ
blByaXZhdGVCcm93c2luZzooTlNTdHJpbmcgKilzY2hlbWU7CisrICh2b2lkKV9yZWdpc3RlclZh
bGlkU2VjdXJpdHlPcmlnaW5Qcm90b2NvbDooTlNTdHJpbmcgKilzY2hlbWU7CiAKIC0gKHZvaWQp
X3NjYWxlV2ViVmlldzooZmxvYXQpc2NhbGUgYXRPcmlnaW46KE5TUG9pbnQpb3JpZ2luOwogLSAo
ZmxvYXQpX3ZpZXdTY2FsZUZhY3RvcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>