<?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>177047</bug_id>
          
          <creation_ts>2017-09-16 23:28:53 -0700</creation_ts>
          <short_desc>[Cocoa] Upstream sandbox-related WebKitSystemInterface functions</short_desc>
          <delta_ts>2017-09-27 12:29:42 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>joepeck</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349715</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-16 23:28:53 -0700</bug_when>
    <thetext>[Cocoa] Upstream sandbox-related WebKitSystemInterface functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349716</commentid>
    <comment_count>1</comment_count>
      <attachid>321028</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-16 23:35:58 -0700</bug_when>
    <thetext>Created attachment 321028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349717</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-16 23:38:31 -0700</bug_when>
    <thetext>Attachment 321028 did not pass style-queue:


ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:52:  qtn_proc_apply_to_self is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:53:  qtn_proc_init_with_self is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:54:  qtn_proc_set_flags is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:55:  qtn_proc_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:56:  qtn_proc_free is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 5 in 17 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>1349718</commentid>
    <comment_count>3</comment_count>
      <attachid>321029</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-17 00:12:39 -0700</bug_when>
    <thetext>Created attachment 321029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349719</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-17 00:13:48 -0700</bug_when>
    <thetext>Attachment 321029 did not pass style-queue:


ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:52:  qtn_proc_apply_to_self is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:53:  qtn_proc_init_with_self is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:54:  qtn_proc_set_flags is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:55:  qtn_proc_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:56:  qtn_proc_free is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 5 in 17 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>1349730</commentid>
    <comment_count>5</comment_count>
      <attachid>321036</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-17 00:45:21 -0700</bug_when>
    <thetext>Created attachment 321036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349731</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-17 00:46:28 -0700</bug_when>
    <thetext>Attachment 321036 did not pass style-queue:


ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:52:  qtn_proc_apply_to_self is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:53:  qtn_proc_init_with_self is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:54:  qtn_proc_set_flags is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:55:  qtn_proc_alloc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit/Platform/spi/mac/QuarantineSPI.h:56:  qtn_proc_free is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 5 in 17 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>1349762</commentid>
    <comment_count>7</comment_count>
      <attachid>321036</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-17 09:46:31 -0700</bug_when>
    <thetext>Comment on attachment 321036
Patch

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

&gt; Source/WebKit/ChangeLog:12
&gt; +        (): Deleted.

What was deleted? Please file a bug to fix prepare-ChangeLog.

&gt; Source/WebKit/Shared/SandboxExtension.h:46
&gt; +    enum class Type {

I take it you feel creating this Type namespace improves readability?

&gt; Source/WebKit/Shared/mac/ChildProcessMac.mm:86
&gt; +    qtn_proc_t quarantineProperties = qtn_proc_alloc();

For your consideration I suggest we make this a std::unique_ptr with qtn_proc_free() as its custom deleter. Then we can simplify the implementation of this function because we can omit  the calls to qtn_proc_free() and this makes the implementation less error prone in the unlikely event that a new early return code path is added.

&gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:64
&gt; +    bool consume()

Would it make sense to add an attribute to warn if the return value is unused?

&gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:76
&gt; +        int error = sandbox_extension_release(m_handle);

We could use std::exchange(m_handle, 0) here and then reduce this function to one line.

&gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:81
&gt; +    const char* getSerializedFormat(size_t&amp; length)

Ditto.

&gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:92
&gt; +            m_token = sandbox_extension_issue_file(APP_SANDBOX_READ, path, 0);

I am not near my Mac. I am assuming the right-hand side expression allocates and returns a string that you take ownership of.

&gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:103
&gt; +    char* m_token { nullptr };

Can we make this a std::unique_ptr? Then we do not need an in-class data member initializer (as unique_ptr default constructs to nullptr) and we can remove the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349768</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-09-17 09:54:13 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #7)
&gt; 
&gt; &gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:81
&gt; &gt; +    const char* getSerializedFormat(size_t&amp; length)
&gt; 
&gt; Ditto.
&gt; 

I meant to write:

Would it make sense to add an attribute to warn if the return value is unused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350101</commentid>
    <comment_count>9</comment_count>
      <attachid>321134</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-18 14:52:26 -0700</bug_when>
    <thetext>Created attachment 321134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350104</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-18 14:57:01 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #7)
&gt; Comment on attachment 321036 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321036&amp;action=review
&gt; 
&gt; For your consideration I suggest we make this a std::unique_ptr with
&gt; qtn_proc_free() as its custom deleter. Then we can simplify the
&gt; implementation of this function because we can omit  the calls to
&gt; qtn_proc_free() and this makes the implementation less error prone in the
&gt; unlikely event that a new early return code path is added.

I used a ScopeGuard that calls qtn_proc_free(), which I think is a little cleaner than creating a custom deleter struct for unique_ptr.

&gt; 
&gt; &gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:64
&gt; &gt; +    bool consume()
&gt; 
&gt; Would it make sense to add an attribute to warn if the return value is
&gt; unused?

Done.

&gt; 
&gt; &gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:76
&gt; &gt; +        int error = sandbox_extension_release(m_handle);
&gt; 
&gt; We could use std::exchange(m_handle, 0) here and then reduce this function
&gt; to one line.

Done.

&gt; 
&gt; &gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:81
&gt; &gt; +    const char* getSerializedFormat(size_t&amp; length)
&gt; 
&gt; Ditto.

Marked with WARN_UNUSED_RETURN.

&gt; 
&gt; &gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:92
&gt; &gt; +            m_token = sandbox_extension_issue_file(APP_SANDBOX_READ, path, 0);
&gt; 
&gt; I am not near my Mac. I am assuming the right-hand side expression allocates
&gt; and returns a string that you take ownership of.

Yes.

&gt; 
&gt; &gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:103
&gt; &gt; +    char* m_token { nullptr };
&gt; 
&gt; Can we make this a std::unique_ptr? Then we do not need an in-class data
&gt; member initializer (as unique_ptr default constructs to nullptr) and we can
&gt; remove the destructor.

I left this as-is. I think having a destructor calling free() is simpler than creating a custom deleter struct. The class is designed to only assign to m_token during construction and free it during destruction, so there aren&apos;t weird lifetime issues that unique_ptr would help solve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350120</commentid>
    <comment_count>11</comment_count>
      <attachid>321134</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 15:35:41 -0700</bug_when>
    <thetext>Comment on attachment 321134
Patch

Clearing flags on attachment: 321134

Committed r222183: &lt;http://trac.webkit.org/changeset/222183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350121</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 15:35:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352108</commentid>
    <comment_count>13</comment_count>
      <attachid>321036</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-24 18:52:46 -0700</bug_when>
    <thetext>Comment on attachment 321036
Patch

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

&gt;&gt;&gt; Source/WebKit/Shared/mac/SandboxExtensionMac.mm:103
&gt;&gt;&gt; +    char* m_token { nullptr };
&gt;&gt; 
&gt;&gt; Can we make this a std::unique_ptr? Then we do not need an in-class data member initializer (as unique_ptr default constructs to nullptr) and we can remove the destructor.
&gt; 
&gt; I left this as-is. I think having a destructor calling free() is simpler than creating a custom deleter struct. The class is designed to only assign to m_token during construction and free it during destruction, so there aren&apos;t weird lifetime issues that unique_ptr would help solve.

Would be safer if you deleted the assignment operator and copy constructor so we don’t accidentally make a copy of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353426</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:29:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693377&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321028</attachid>
            <date>2017-09-16 23:35:58 -0700</date>
            <delta_ts>2017-09-17 00:12:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177047-20170916233557.patch</filename>
            <type>text/plain</type>
            <size>44862</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmZjBkOTg1M2RiMWUxZGIzNzEyMDFj
NzQ3NmVhYzAyM2ExZTY0MTAuLmRkZWRhZTUxNmM5YTkzM2IzMDg2YWZlMTI0NGIxNzlhNzg2OTIz
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oOgorCiAy
MDE3LTA5LTE1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBX
VEY6IHVzZSBGb3J3YXJkLmggd2hlbiBhcHByb3ByaWF0ZSBpbnN0ZWFkIG9mIFZlY3Rvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDRlNWZiMDM4ZDFkYjlkZmM1MjNjYjQ4MDdhMWRkYjgxOWVhNzRiYTEuLjVlZmRh
OGM1MzEwOThmMTQ5NjYxODk1ZjMzNWY5ZGQwODY4M2EzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjIgQEAKKzIwMTctMDktMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFj
ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaDogQWRkZWQu
CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmVuYWJsZVNhbmRib3hTdHlsZUZpbGVRdWFyYW50aW5lKToKKyAgICAgICAgKFdlYktp
dDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAgICAgICogU2hhcmVkL21h
Yy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbkltcGw6
OlNhbmRib3hFeHRlbnNpb25JbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bkltcGw6On5TYW5kYm94RXh0ZW5zaW9uSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb25JbXBsOjpjb25zdW1lKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bkltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uSW1w
bDo6Z2V0U2VyaWFsaXplZEZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlOjp+SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNF
eHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UpOgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KToKKyAgICAgICAgKFdlYktp
dDo6d2tTYW5kYm94RXh0ZW5zaW9uVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1By
b3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmlu
aXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2Ft
cGxlcik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorCiAyMDE3
LTA5LTE2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCB0aGUgVG9vbHMgYnVpbGQgd2l0aCBDTWFrZSBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL1NhbmRib3hTUEkuaAppbmRleCBiMzc4Nzk0MjUyOGU4MjRkYmE2OGQ1NGY2OThmZWE5
YzVlZTI1ZTMyLi5mYTE4YzllYTYzOTI2NGRiNzZkM2QyYmI3MGMyZjVmNDQ4NTJhYzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaApAQCAtNDIsMTEgKzQyLDE4IEBAIGVu
dW0gc2FuZGJveF9maWx0ZXJfdHlwZSB7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCitleHRlcm4g
Y29uc3QgY2hhciAqY29uc3QgQVBQX1NBTkRCT1hfUkVBRDsKK2V4dGVybiBjb25zdCBjaGFyICpj
b25zdCBBUFBfU0FOREJPWF9SRUFEX1dSSVRFOwogZXh0ZXJuIGNvbnN0IGVudW0gc2FuZGJveF9m
aWx0ZXJfdHlwZSBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVDsKKworY2hhciAqc2FuZGJveF9leHRl
bnNpb25faXNzdWVfZmlsZShjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIg
KnBhdGgsIHVpbnQzMl90IGZsYWdzKTsKK2NoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2dl
bmVyaWMoY29uc3QgY2hhciAqZXh0ZW5zaW9uX2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CiBpbnQg
c2FuZGJveF9jaGVjayhwaWRfdCwgY29uc3QgY2hhciAqb3BlcmF0aW9uLCBlbnVtIHNhbmRib3hf
ZmlsdGVyX3R5cGUsIC4uLik7CiBpbnQgc2FuZGJveF9jaGVja19ieV9hdWRpdF90b2tlbihhdWRp
dF90b2tlbl90LCBjb25zdCBjaGFyICpvcGVyYXRpb24sIGVudW0gc2FuZGJveF9maWx0ZXJfdHlw
ZSwgLi4uKTsKIGludCBzYW5kYm94X2NvbnRhaW5lcl9wYXRoX2Zvcl9waWQocGlkX3QsIGNoYXIg
KmJ1ZmZlciwgc2l6ZV90IGJ1ZnNpemUpOworaW50IHNhbmRib3hfZXh0ZW5zaW9uX3JlbGVhc2Uo
aW50NjRfdCBleHRlbnNpb25faGFuZGxlKTsKIGludCBzYW5kYm94X2luaXRfd2l0aF9wYXJhbWV0
ZXJzKGNvbnN0IGNoYXIgKnByb2ZpbGUsIHVpbnQ2NF90IGZsYWdzLCBjb25zdCBjaGFyICpjb25z
dCBwYXJhbWV0ZXJzW10sIGNoYXIgKiplcnJvcmJ1Zik7CitpbnQ2NF90IHNhbmRib3hfZXh0ZW5z
aW9uX2NvbnN1bWUoY29uc3QgY2hhciAqZXh0ZW5zaW9uX3Rva2VuKTsKIAogV1RGX0VYVEVSTl9D
X0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGZkZWU1ODE5Nzc5ZmU0NjIy
ZDM5ZTZkMTkzZDhkNDQ3ZGUwZWU2ZDMuLjcyMjI1OGNhYzg0OGRmYWYzOTBlYjlhZjcyZDJiNWE5
NDk1ZmY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1l
bnQgPSBlbGVtZW50c1tpXTsKICAgICAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBwYXRoID0gZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSA/IGVsZW1lbnQubV9n
ZW5lcmF0ZWRGaWxlbmFtZSA6IGVsZW1lbnQubV9maWxlbmFtZTsKLSAgICAgICAgICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVh
ZE9ubHksIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10pOwor
ICAgICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
c1tleHRlbnNpb25JbmRleCsrXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
ZW5jb2RlciA8PCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOwpAQCAtNjksNyArNjksNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSkg
ewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcmVxdWVzdFNhbmRib3hFeHRlbnNp
b247Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXF1ZXN0LnVybCgp
LmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCByZXF1ZXN0U2Fu
ZGJveEV4dGVuc2lvbik7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShy
ZXF1ZXN0LnVybCgpLmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCByZXF1ZXN0U2FuZGJveEV4dGVuc2lvbik7CiAgICAgICAgIGVuY29kZXIgPDwgcmVx
dWVzdFNhbmRib3hFeHRlbnNpb247CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzgwZmE0MGQwYjU3N2IwZGRj
NzZiNGU2NWQxYTcwMjU5NWNhYzdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8cXVhcmFudGluZS5oPgorCisjZWxzZQorCitlbnVt
IHF0bl9mbGFncyB7CisgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4MDAwMiwKK307CisKKyNkZWZp
bmUgcXRuX3Byb2NfYWxsb2MgX3F0bl9wcm9jX2FsbG9jCisjZGVmaW5lIHF0bl9wcm9jX2FwcGx5
X3RvX3NlbGYgX3F0bl9wcm9jX2FwcGx5X3RvX3NlbGYKKyNkZWZpbmUgcXRuX3Byb2NfZnJlZSBf
cXRuX3Byb2NfZnJlZQorI2RlZmluZSBxdG5fcHJvY19pbml0X3dpdGhfc2VsZiBfcXRuX3Byb2Nf
aW5pdF93aXRoX3NlbGYKKyNkZWZpbmUgcXRuX3Byb2Nfc2V0X2ZsYWdzIF9xdG5fcHJvY19zZXRf
ZmxhZ3MKKworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9xdG5fcHJvYyAqcXRuX3Byb2NfdDsK
KworV1RGX0VYVEVSTl9DX0JFR0lOCisKK2ludCBxdG5fcHJvY19hcHBseV90b19zZWxmKHF0bl9w
cm9jX3QpOworaW50IHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmKHF0bl9wcm9jX3QpOworaW50IHF0
bl9wcm9jX3NldF9mbGFncyhxdG5fcHJvY190LCB1aW50MzJfdCBmbGFncyk7CitxdG5fcHJvY190
IHF0bl9wcm9jX2FsbG9jKCk7Cit2b2lkIHF0bl9wcm9jX2ZyZWUocXRuX3Byb2NfdCk7CisKK1dU
Rl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCA1MTA1N2U0OTgyNzcxYmIzM2FlYWIxM2MzNTRk
MDYxNDFhN2UxNGJmLi4xNWI4MzQ5ZmJiMzIyMjc5YWZlMzA5ZGIxNGEyZTNmNzg0MWNmZGE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zMiwyMCArMzIsMTgg
QEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotdHlwZWRlZiBzdHJ1Y3QgX19X
S1NhbmRib3hFeHRlbnNpb24qIFdLU2FuZGJveEV4dGVuc2lvblJlZjsKLSNlbmRpZgotCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIEVuY29kZXI7CiBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKKyAgICAKK2NsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsOwogCiBjbGFzcyBT
YW5kYm94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewog
cHVibGljOgotICAgIGVudW0gVHlwZSB7CisgICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAg
UmVhZE9ubHksCiAgICAgICAgIFJlYWRXcml0ZSwKICAgICAgICAgR2VuZXJpYywKQEAgLTU1LDcg
KzUzLDcgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwog
ICAgIHB1YmxpYzoKICAgICAgICAgSGFuZGxlKCk7Ci0gICAgICAgIEhhbmRsZShIYW5kbGUmJikg
PSBkZWZhdWx0OworICAgICAgICBIYW5kbGUoSGFuZGxlJiYpOwogICAgICAgICB+SGFuZGxlKCk7
CiAKICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC02NCw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2FuZGJv
eEV4dGVuc2lvbjsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgICAgICBtdXRh
YmxlIFdLU2FuZGJveEV4dGVuc2lvblJlZiBtX3NhbmRib3hFeHRlbnNpb247CisgICAgICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBtX3NhbmRib3hFeHRl
bnNpb247CiAjZW5kaWYKICAgICB9OwogCkBAIC0xMDgsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYpOwogICAgICAgICAgICAg
ICAgICAgICAgCiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICBtdXRhYmxlIFdL
U2FuZGJveEV4dGVuc2lvblJlZiBtX3NhbmRib3hFeHRlbnNpb247CisgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IG1fc2FuZGJveEV4dGVuc2lvbjsKICAg
ICBzaXplX3QgbV91c2VDb3VudDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDgxYzdmN2E5ZTdlMmU0YzNhNjRjZTg0ZTUzN2Q3
MTZiNTU5YjdiMjUuLjM1ZWE3ODAwM2I2M2YyYWE1N2MxZTdkNTYwMjQ1N2NiZDlkM2RiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFn
ZVV0aWxzQ0YuaCIKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKICNpbXBvcnQgIlNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFj
ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC03OCw2ICs3OSwyOCBAQCB2
b2lkIENoaWxkUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBpbml0aWFsaXplVGlt
ZXJDb2FsZXNjaW5nUG9saWN5KCk7CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjaGFuZ2VDdXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZVBhdGhdXTsKIH0KKyAgICAKK3N0YXRpYyBPU1N0YXR1cyBlbmFibGVTYW5kYm94U3R5bGVGaWxl
UXVhcmFudGluZSgpCit7CisgICAgaW50IGVycm9yOworICAgIHF0bl9wcm9jX3QgcXVhcmFudGlu
ZVByb3BlcnRpZXMgPSBxdG5fcHJvY19hbGxvYygpOworICAgIGlmICgoZXJyb3IgPSBxdG5fcHJv
Y19pbml0X3dpdGhfc2VsZihxdWFyYW50aW5lUHJvcGVydGllcykpKSB7CisgICAgICAgIHF0bl9w
cm9jX2ZyZWUocXVhcmFudGluZVByb3BlcnRpZXMpOworICAgICAgICByZXR1cm4gZXJyb3I7Cisg
ICAgfQorICAgIAorICAgIGlmICgoZXJyb3IgPSBxdG5fcHJvY19zZXRfZmxhZ3MocXVhcmFudGlu
ZVByb3BlcnRpZXMsIFFUTl9GTEFHX1NBTkRCT1gpKSkgeworICAgICAgICBxdG5fcHJvY19mcmVl
KHF1YXJhbnRpbmVQcm9wZXJ0aWVzKTsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKyAg
ICAKKyAgICAvLyBRVE5fRkxBR19TQU5EQk9YIGlzIHNpbGVudGx5IGlnbm9yZWQgaWYgc2VjdXJp
dHkubWFjLnF0bi5zYW5kYm94X2VuZm9yY2Ugc3lzY3RsIGlzIDAuCisgICAgLy8gSW4gdGhhdCBj
YXNlLCBxdWFyYW50aW5lIGZhbGxzIGJhY2sgdG8gYWR2aXNvcnkgUVROX0ZMQUdfRE9XTkxPQUQu
CisgICAgZXJyb3IgPSBxdG5fcHJvY19hcHBseV90b19zZWxmKHF1YXJhbnRpbmVQcm9wZXJ0aWVz
KTsKKyAgICAKKyAgICBxdG5fcHJvY19mcmVlKHF1YXJhbnRpbmVQcm9wZXJ0aWVzKTsKKyAgICBy
ZXR1cm4gZXJyb3I7Cit9CiAKIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChj
b25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHNhbmRib3hQYXJhbWV0ZXJzKQogewpAQCAt
MTcxLDcgKzE5NCw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25z
dCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmCiAgICAgfQogCiAgICAgLy8g
VGhpcyB3aWxsIG92ZXJyaWRlIExTRmlsZVF1YXJhbnRpbmVFbmFibGVkIGZyb20gSW5mby5wbGlz
dCB1bmxlc3Mgc2FuZGJveCBxdWFyYW50aW5lIGlzIGdsb2JhbGx5IGRpc2FibGVkLgotICAgIE9T
U3RhdHVzIGVycm9yID0gV0tFbmFibGVTYW5kYm94U3R5bGVGaWxlUXVhcmFudGluZSgpOworICAg
IE9TU3RhdHVzIGVycm9yID0gZW5hYmxlU2FuZGJveFN0eWxlRmlsZVF1YXJhbnRpbmUoKTsKICAg
ICBpZiAoZXJyb3IpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgZW5hYmxl
IHNhbmRib3ggc3R5bGUgZmlsZSBxdWFyYW50aW5lOiAlbGRcbiIsIGdldHByb2duYW1lKCksIHN0
YXRpY19jYXN0PGxvbmc+KGVycm9yKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggNDQx
ZWIxZTE0ODA4MjMwYWFiNDA0ZjJkNjM5OGQ1MmZlNjRjNDA4OS4uYzg1NDI5ZDRkMjBmZDFiY2Nk
M2VjMDU4MjE3ZWZjZDY1OGZkOWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L1NhbmRib3hFeHRlbnNpb25NYWMubW0KQEAgLTM0LDIzICszNCw4NiBAQAogI2ltcG9ydCAiV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bXBvcnQgPHN5cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+
CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgewor
cHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+
IGNyZWF0ZShjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUpCisg
ICAgeworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGltcGwg
eyBuZXcgU2FuZGJveEV4dGVuc2lvbkltcGwocGF0aCwgdHlwZSkgfTsKKyAgICAgICAgaWYgKCFp
bXBsLT5tX3Rva2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVy
biBpbXBsOworICAgIH0KKworICAgIFNhbmRib3hFeHRlbnNpb25JbXBsKGNvbnN0IGNoYXIqIHNl
cmlhbGl6ZWRGb3JtYXQsIHNpemVfdCBsZW5ndGgpCisgICAgICAgIDogbV90b2tlbiB7IHN0cm5k
dXAoc2VyaWFsaXplZEZvcm1hdCwgbGVuZ3RoKSB9CisgICAgeworICAgIH0KKworICAgIH5TYW5k
Ym94RXh0ZW5zaW9uSW1wbCgpCisgICAgeworICAgICAgICBmcmVlKG1fdG9rZW4pOworICAgIH0K
KworICAgIGJvb2wgY29uc3VtZSgpCisgICAgeworICAgICAgICBtX2hhbmRsZSA9IHNhbmRib3hf
ZXh0ZW5zaW9uX2NvbnN1bWUobV90b2tlbik7CisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikK
KyAgICAgICAgcmV0dXJuICFzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAwLCBTQU5EQk9YX0ZJTFRF
Ul9OT05FKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBtX2hhbmRsZTsKKyNlbmRpZgorICAgIH0K
KworICAgIGJvb2wgaW52YWxpZGF0ZSgpCisgICAgeworICAgICAgICBpbnQgZXJyb3IgPSBzYW5k
Ym94X2V4dGVuc2lvbl9yZWxlYXNlKG1faGFuZGxlKTsKKyAgICAgICAgbV9oYW5kbGUgPSAwOwor
ICAgICAgICByZXR1cm4gIWVycm9yOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFNlcmlh
bGl6ZWRGb3JtYXQoc2l6ZV90JiBsZW5ndGgpCisgICAgeworICAgICAgICBsZW5ndGggPSBzdHJs
ZW4obV90b2tlbik7CisgICAgICAgIHJldHVybiBtX3Rva2VuOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBTYW5kYm94RXh0ZW5zaW9uSW1wbChjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlIHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAg
Y2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seToKKyAgICAgICAgICAgIG1fdG9r
ZW4gPSBzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9maWxlKEFQUF9TQU5EQk9YX1JFQUQsIHBhdGgs
IDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZToKKyAgICAgICAgICAgIG1fdG9rZW4gPSBzYW5kYm94X2V4dGVuc2lv
bl9pc3N1ZV9maWxlKEFQUF9TQU5EQk9YX1JFQURfV1JJVEUsIHBhdGgsIDApOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OkdlbmVyaWM6
CisgICAgICAgICAgICBtX3Rva2VuID0gc2FuZGJveF9leHRlbnNpb25faXNzdWVfZ2VuZXJpYyhw
YXRoLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNo
YXIqIG1fdG9rZW4geyBudWxscHRyIH07CisgICAgaW50NjRfdCBtX2hhbmRsZSB7IDAgfTsKK307
CisKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fc2FuZGJveEV4
dGVuc2lvbigwKQogewogfQotICAgIAorCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OkhhbmRs
ZShIYW5kbGUmJikgPSBkZWZhdWx0OworCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5k
bGUoKQogewotICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgV0tTYW5kYm94
RXh0ZW5zaW9uSW52YWxpZGF0ZShtX3NhbmRib3hFeHRlbnNpb24pOwotICAgICAgICBXS1NhbmRi
b3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgfQorICAgIGlmICht
X3NhbmRib3hFeHRlbnNpb24pCisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0
ZSgpOwogfQogCiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKQEAgLTYxLDEzICsxMjQsMTIgQEAgdm9pZCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
fQogCiAgICAgc2l6ZV90IGxlbmd0aCA9IDA7Ci0gICAgY29uc3QgY2hhciAqc2VyaWFsaXplZEZv
cm1hdCA9IFdLU2FuZGJveEV4dGVuc2lvbkdldFNlcmlhbGl6ZWRGb3JtYXQobV9zYW5kYm94RXh0
ZW5zaW9uLCAmbGVuZ3RoKTsKKyAgICBjb25zdCBjaGFyKiBzZXJpYWxpemVkRm9ybWF0ID0gbV9z
YW5kYm94RXh0ZW5zaW9uLT5nZXRTZXJpYWxpemVkRm9ybWF0KGxlbmd0aCk7CiAgICAgQVNTRVJU
KHNlcmlhbGl6ZWRGb3JtYXQpOwogCiAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2VyaWFsaXplZEZvcm1hdCksIGxlbmd0
aCk7CiAKICAgICAvLyBFbmNvZGluZyB3aWxsIGRlc3Ryb3kgdGhlIHNhbmRib3ggZXh0ZW5zaW9u
IGxvY2FsbHkuCi0gICAgV0tTYW5kYm94RXh0ZW5zaW9uRGVzdHJveShtX3NhbmRib3hFeHRlbnNp
b24pOwogICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IDA7CiB9CiAKQEAgLTgyLDcgKzE0NCw3IEBA
IGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBIYW5kbGUmIHJlc3VsdCkKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmVzdWx0Lm1fc2FuZGJveEV4dGVuc2lvbiA9IFdL
U2FuZGJveEV4dGVuc2lvbkNyZWF0ZUZyb21TZXJpYWxpemVkRm9ybWF0KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXpl
KCkpOworICAgIHJlc3VsdC5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNh
bmRib3hFeHRlbnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVm
ZXJlbmNlLmRhdGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTUyLDIxICsyMTQsNiBAQCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2FuZGJveEV4dGVuc2lvbihoYW5kbGUpKTsKIH0KIAotc3RhdGljIFdLU2FuZGJv
eEV4dGVuc2lvblR5cGUgd2tTYW5kYm94RXh0ZW5zaW9uVHlwZShTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTYW5kYm94RXh0ZW5z
aW9uOjpSZWFkT25seToKLSAgICAgICAgcmV0dXJuIFdLU2FuZGJveEV4dGVuc2lvblR5cGVSZWFk
T25seTsKLSAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZToKLSAgICAgICAgcmV0
dXJuIFdLU2FuZGJveEV4dGVuc2lvblR5cGVSZWFkV3JpdGU7Ci0gICAgY2FzZSBTYW5kYm94RXh0
ZW5zaW9uOjpHZW5lcmljOgotICAgICAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uVHlwZUdl
bmVyaWM7Ci0KLSAgICB9Ci0KLSAgICBDUkFTSCgpOwotfQotCiBzdGF0aWMgQ1N0cmluZyByZXNv
bHZlU3ltbGlua3NJblBhdGgoY29uc3QgQ1N0cmluZyYgcGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3Rh
dCBzdGF0QnVmOwpAQCAtMjQ1LDcgKzI5Miw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlCiB7
CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAotICAgIGhhbmRsZS5t
X3NhbmRib3hFeHRlbnNpb24gPSBXS1NhbmRib3hFeHRlbnNpb25DcmVhdGUocGF0aC51dGY4KCku
ZGF0YSgpLCB3a1NhbmRib3hFeHRlbnNpb25UeXBlKHR5cGUpKTsKKyAgICBoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShwYXRoLnV0ZjgoKS5k
YXRhKCksIHR5cGUpOwogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3Ig
JyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2
Niw3ICszMTMsNyBAQCBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRX
cml0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNhbgogICAgIGlmIChyZXNvbHZlZFBh
dGguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgs
IFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgaGFuZGxlKTsKKyAgICByZXR1cm4gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGhhbmRsZSk7CiB9CiAKIFN0cmlu
ZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBUeXBlIHR5cGUsIEhhbmRsZSYgaGFuZGxlKQpAQCAtMjg5LDcgKzMzNiw3
IEBAIFN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxl
KGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlCiAgICAgcGF0aC5hcHBlbmQocHJlZml4LnV0Zjgo
KS5kYXRhKCksIHByZWZpeC5sZW5ndGgoKSk7CiAgICAgcGF0aC5hcHBlbmQoJ1wwJyk7CiAgICAg
Ci0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFdLU2FuZGJveEV4dGVuc2lvbkNyZWF0
ZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEoKSwgd2tTYW5kYm94
RXh0ZW5zaW9uVHlwZSh0eXBlKSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgu
ZGF0YSgpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3gg
ZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzAy
LDcgKzM0OSw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJp
Y0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbkNsCiB7CiAgICAgQVNTRVJUKCFoYW5k
bGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24g
PSBXS1NhbmRib3hFeHRlbnNpb25DcmVhdGUoZXh0ZW5zaW9uQ2xhc3MudXRmOCgpLmRhdGEoKSwg
d2tTYW5kYm94RXh0ZW5zaW9uVHlwZShUeXBlOjpHZW5lcmljKSk7CisgICAgaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoZXh0ZW5zaW9uQ2xh
c3MudXRmOCgpLmRhdGEoKSwgVHlwZTo6R2VuZXJpYyk7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBh
ICclcycgc2FuZGJveCBleHRlbnNpb24iLCBleHRlbnNpb25DbGFzcy51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzEyLDEwICszNTksOSBAQCBib29sIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb25DbAogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uKGNvbnN0
IEhhbmRsZSYgaGFuZGxlKQotICAgIDogbV9zYW5kYm94RXh0ZW5zaW9uKGhhbmRsZS5tX3NhbmRi
b3hFeHRlbnNpb24pCisgICAgOiBtX3NhbmRib3hFeHRlbnNpb24oV1RGTW92ZShoYW5kbGUubV9z
YW5kYm94RXh0ZW5zaW9uKSkKICAgICAsIG1fdXNlQ291bnQoMCkKIHsKLSAgICBoYW5kbGUubV9z
YW5kYm94RXh0ZW5zaW9uID0gMDsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRl
bnNpb24oKQpAQCAtMzI0LDcgKzM3MCw2IEBAIFNhbmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0
ZW5zaW9uKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX3VzZUNvdW50KTsKLSAg
ICBXS1NhbmRib3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7CiB9CiAKIGJv
b2wgU2FuZGJveEV4dGVuc2lvbjo6cmV2b2tlKCkKQEAgLTMzNSw3ICszODAsNyBAQCBib29sIFNh
bmRib3hFeHRlbnNpb246OnJldm9rZSgpCiAgICAgaWYgKC0tbV91c2VDb3VudCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uSW52YWxpZGF0ZSht
X3NhbmRib3hFeHRlbnNpb24pOworICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNpb24tPmludmFs
aWRhdGUoKTsKIH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkKQEAgLTM0NSwx
OCArMzkwLDE3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSgpCiAgICAgaWYgKG1f
dXNlQ291bnQrKykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gV0tTYW5kYm94
RXh0ZW5zaW9uQ29uc3VtZShtX3NhbmRib3hFeHRlbnNpb24pOworICAgIHJldHVybiBtX3NhbmRi
b3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKIH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25z
dW1lUGVybWFuZW50bHkoKQogewogICAgIEFTU0VSVChtX3NhbmRib3hFeHRlbnNpb24pOwogCi0g
ICAgYm9vbCByZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25Db25zdW1lKG1fc2FuZGJveEV4dGVu
c2lvbik7CisgICAgYm9vbCByZXN1bHQgPSBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsK
IAogICAgIC8vIERlc3Ryb3kgdGhlIGV4dGVuc2lvbiB3aXRob3V0IGludmFsaWRhdGluZyBpdC4K
LSAgICBXS1NhbmRib3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAg
bV9zYW5kYm94RXh0ZW5zaW9uID0gMDsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRy
OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTM2NiwxMSArNDEwLDEwIEBAIGJvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IEhhbmRsZSYgaGFuZGxlKQog
ICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYm9vbCByZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25Db25zdW1lKGhhbmRsZS5t
X3NhbmRib3hFeHRlbnNpb24pOworICAgIGJvb2wgcmVzdWx0ID0gaGFuZGxlLm1fc2FuZGJveEV4
dGVuc2lvbi0+Y29uc3VtZSgpOwogICAgIAogICAgIC8vIERlc3Ryb3kgdGhlIGV4dGVuc2lvbiB3
aXRob3V0IGludmFsaWRhdGluZyBpdC4KLSAgICBXS1NhbmRib3hFeHRlbnNpb25EZXN0cm95KGhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24g
PSAwOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0KaW5kZXggZDUwYjMzZGNjY2Q5YTU0Yzc5ZjA0MDI1ZWY5MTI1YjJh
NGIyZTYzMC4uMjYxZTg1MTdjOTdhMTJhYTk1YzRiODE0OGU4ZTAwNTUyZTZjNzg5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
QEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNp
b25zSWZOZWVkZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLAogICAgIGlmIChmaWxlcy5z
aXplKCkgPT0gMSkgewogICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICBpZiAoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlz
RGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0gJiYgIWlzRGlyZWN0b3J5KSB7Ci0gICAgICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFk
T25seSwgZmlsZVJlYWRIYW5kbGUpOworICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVSZWFk
SGFuZGxlKTsKICAgICAgICAgICAgIHByb2Nlc3MoKS53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVS
ZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtOTksNyArOTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsCiAgICAgICAgIE5TU3RyaW5nICpmaWxlID0gZmlsZXNb
aV07CiAgICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOmZpbGVdKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwg
ZmlsZVVwbG9hZEhhbmRsZXNbaV0pOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoZmlsZSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVVcGxvYWRI
YW5kbGVzW2ldKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGJkNTdhN2NiN2Y5NjU3ZWY1MWJj
NTExZGVhNGNlMTU3ZWE4NzhlYmIuLjQ1Zjk5M2ZkMTg0MjgxYzMxZjViODhlZGI0MjU2NmJmZTA1
MDE4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZWFsbHkgYmUgY29uZmlndXJhYmxlOyB3
ZSBzaG91bGRuJ3QganVzdCBibGluZGx5IGFsbG93IHJlYWQgYWNjZXNzIHRvIHRoZSBVSSBwcm9j
ZXNzIGJ1bmRsZS4KICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCA9
IG1fcmVzb2x2ZWRQYXRocy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGg7Ci0gICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy51
aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBw
YXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFy
YW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVu
c2lvbkhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIg
PSBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cAppbmRleCBjMjYxOGEyMDdhMTBjZjM3MTUwYmUxZmJmYjgxNmVmN2I0NzFjZDhhLi40MzAzYjU0
YWRjYTI1NmYwNWY0ZTBhM2RhZjU2OGFiM2RlOGNiMDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFzeW5jKERvd25sb2FkSUQgZG93bmwKICAgICAKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKICAgICBpZiAoIWRlc3RpbmF0aW9uLmlz
TnVsbCgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRp
b24sIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
IAogICAgIGlmIChOZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0
aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
YWxsb3dPdmVyd3JpdGUpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDkxYmE5YTA2NjMyMzEwOGUx
Njc5NmFiNjQ2YzEzYmRkNDgyYjBhZDEuLmE2MGI0NDAyMWRiYTFkZGNiNGExNTM3NThiMTgxNWQz
ZWQwNDM4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JC
bG9icyh1aW50NjRfCiAgICAgZXh0ZW5zaW9ucy5hbGxvY2F0ZShwYXRocy5zaXplKCkpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgLy8g
UmVhZFdyaXRlIGlzIHJlcXVpcmVkIGZvciBjcmVhdGluZyBoYXJkIGxpbmtzIGFzIHdlbGwgYXMg
ZGVsZXRpbmcgdGhlIHRlbXBvcmFyeSBmaWxlLCB3aGljaCB0aGUgU3RvcmFnZVByb2Nlc3Mgd2ls
bCBkby4KLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGhzW2ldLCBT
YW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIGV4dGVuc2lvbnNbaV0pOworICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSwgZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzUG9v
bC5zZW5kVG9TdG9yYWdlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OlN0
b3JhZ2VQcm9jZXNzOjpHcmFudFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYnMocGF0aHMsIGV4dGVu
c2lvbnMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuY3BwCmluZGV4IGE1YWE4MTE4YzExNmFjZDkwZTIzY2Q3NjQ4MDUy
NjQyZjk2OTI2MGQuLjU1Y2ZmZjUzNTZlOGZlY2QzY2EzYzNjZWVhOWQzM2NiMmQ0MjI2YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94
eTo6Z2V0U2FuZGJveEV4dGVuc2lvbnNGb3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBj
CiAgICAgZXh0ZW5zaW9ucy5hbGxvY2F0ZShwYXRocy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgLy8gUmVhZFdyaXRlIGlz
IHJlcXVpcmVkIGZvciBjcmVhdGluZyBoYXJkIGxpbmtzLCB3aGljaCBpcyBzb21ldGhpbmcgdGhh
dCBtaWdodCBiZSBkb25lIHdpdGggdGhlc2UgZXh0ZW5zaW9ucy4KLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3Jp
dGUsIGV4dGVuc2lvbnNbaV0pOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgZXh0ZW5zaW9u
c1tpXSk7CiAgICAgfQogCiAgICAgc2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEdl
dFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKHJlcXVlc3RJRCwgZXh0ZW5zaW9ucyksIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTdjZmJjMDll
ZjMyZmUyMWZiZTU4NDIxNjExZDRlNzRjYTRhYzIyZi4uZDdlYzk4MzJlYWVlNGZhYWZmODIwNmU5
NTUyYTg5NjEzYTg0YzFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC04MTYsNyArODE2LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNhbmRib3gKICAgICAvLyBJ
bnNwZWN0b3IgcmVzb3VyY2VzIGFyZSBpbiBhIGRpcmVjdG9yeSB3aXRoIGFzc3VtZWQgYWNjZXNz
LgogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFXZWJLaXQ6OmlzSW5zcGVj
dG9yUGFnZSgqdGhpcykpOwogCi0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIv
IiwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwor
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtODkxLDcgKzg5MSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAg
bG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IGZpbGVVUkw7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9ICh1aW50NjRfdClTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdzsKICAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9
IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5n
ZXQoKSk7Ci0gICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0
b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIGxvYWRQYXJhbWV0ZXJzLnNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShy
ZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBs
b2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBhZGRQbGF0Zm9ybUxv
YWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTChyZXNvdXJjZURpcmVjdG9yeVVSTCk7CkBAIC00NzcxLDcgKzQ3NzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzKQogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGVz
LmFsbG9jYXRlKGZpbGVVUkxzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWxlVVJMcy5zaXplKCk7ICsraSkgewotICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVVSTHNbaV0sIFNhbmRib3hFeHRlbnNp
b246OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CisgICAgICAgIGJvb2wg
Y3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlVVJM
c1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25I
YW5kbGVzW2ldKTsKICAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5zaW9uKSB7CiAgICAgICAgICAg
ICAvLyBUaGlzIGNhbiBsZWdpdGltYXRlbHkgZmFpbCBpZiBhIGRpcmVjdG9yeSBjb250YWluaW5n
IHRoZSBmaWxlIGlzIGRlbGV0ZWQgYWZ0ZXIgdGhlIGZpbGUgd2FzIGNob3Nlbi4KICAgICAgICAg
ICAgIC8vIFdlIGFsc28gaGF2ZSByZXBvcnRzIG9mIGNhc2VzIHdoZXJlIHRoaXMgbGlrZWx5IGZh
aWxzIGZvciBzb21lIHVua25vd24gcmVhc29uLCA8cmRhcjovL3Byb2JsZW0vMTAxNTY3MTA+Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDk4ZjY4YTdk
NDc5ZTU4ZTYxNDgyNjQxMDI1NmFlNWE4MzE1MGZjOWYuLjMxZTZhNDZjY2ZjNWY3M2QzZjM3YjNk
MzJiYWMyMDVjZWJkNjRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTY2MSwxNyArNjYxLDE3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhCiAK
ICAgICBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCA9IG1fcmVzb2x2ZWRQYXRocy5pbmpl
Y3RlZEJ1bmRsZVBhdGg7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRS
ZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpSZWFkT25seSwgcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5k
bGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZE9ubHksIHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKIAogICAgIHBhcmFtZXRlcnMuYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVz
LmFsbG9jYXRlKG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRl
bnNpb25QYXRocy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbV9yZXNv
bHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNz
U2FuZGJveEV4dGVuc2lvblBhdGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgcGFy
YW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOworICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29s
dmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHNbaV0sIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CiAKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpOwogICAgIGlmIChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnku
aXNFbXB0eSgpKQogICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkg
PSBtX3Jlc29sdmVkUGF0aHMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIXBh
cmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRl
cnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRl
LCBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAogICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxl
U3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRG
aWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCkBAIC02NzksMTkgKzY3OSwxOSBAQCBXZWJQcm9jZXNz
UHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3Rv
cmUmIHdlYnNpdGVEYQogICAgIGlmIChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9
IG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBpZiAoIXBhcmFt
ZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFt
ZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0
ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
V3JpdGUsIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OwogCiAgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9y
ZS5yZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBpZiAocGFyYW1ldGVycy5tZWRp
YUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hl
RGlyZWN0b3J5ID0gbV9yZXNvbHZlZFBhdGhzLm1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgaWYg
KCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJz
Lm1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1l
dGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBh
cmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJh
bWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2
ZWRNZWRpYUtleXNEaXJlY3RvcnkoKTsKICAgICBpZiAocGFyYW1ldGVycy5tZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7CiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRo
KHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpS
ZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29s
dmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHNldEphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVsdHMoKTsKQEAgLTcwMCw3ICs3MDAs
NyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNz
KFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYQogICAgIGlmIChqYXZhU2NyaXB0Q29uZmlndXJh
dGlvbkZpbGVFbmFibGVkKCkpIHsKICAgICAgICAgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmln
dXJhdGlvbkRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRKYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMuamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5qYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRl
LCBwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRS
ZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAgICAgcGFy
YW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24gPSBtX3Nob3VsZFVzZVRlc3Rp
bmdOZXR3b3JrU2Vzc2lvbjsKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGU7ICAg
ICAgICAKICAgICAgICAgZG91YmxlIG5vdyA9IFdURjo6Y3VycmVudFRpbWUoKTsKICAgICAgICAg
U3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU3RyaW5nOjpmb3JtYXQoIldlYlByb2Nlc3MlbGx1
cGlkJWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG5vdyksIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwotICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgs
IFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7Cisg
ICAgICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yVGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlw
ZTo6UmVhZFdyaXRlLCBzYW1wbGVMb2dTYW5kYm94SGFuZGxlKTsKICAgICAgICAgCiAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxlcihz
YW1wbGVMb2dTYW5kYm94SGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0aCwgbV9tZW1vcnlTYW1wbGVy
SW50ZXJ2YWwpLCAwKTsKICAgICB9CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBEb3dubG9hZFByb3h5
KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRhKiByZXN1bWVE
YXRhLCBjb25zdAogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOwogCiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgLy8g
RklYTUU6IElmIHdlIHN0YXJ0ZWQgYSBkb3dubG9hZCBpbiBhbiBlcGhlbWVyYWwgc2Vzc2lvbiBh
bmQgdGhhdCBzZXNzaW9uIHN0aWxsIGV4aXN0cywgd2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gdXNl
IHRoYXQgc2FtZSBzZXNzaW9uLgpAQCAtMTI3Niw3ICsxMjc2LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6c3RhcnRNZW1vcnlTYW1wbGVyKGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkKICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nU2FuZGJveEhhbmRsZTsgICAgCiAgICAgZG91
YmxlIG5vdyA9IFdURjo6Y3VycmVudFRpbWUoKTsKICAgICBTdHJpbmcgc2FtcGxlTG9nRmlsZVBh
dGggPSBTdHJpbmc6OmZvcm1hdCgiV2ViUHJvY2VzcyVsbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KG5vdykpOwotICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW1wbGVMb2dTYW5kYm94SGFuZGxlKTsKKyAgICBz
YW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBv
cmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRX
cml0ZSwgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7CiAgICAgCiAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2Fu
ZGJveEhhbmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgsIGludGVydmFsKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmZDE5OWQ5NTQw
MWE5YTA5NTBhYjUwMTUwZWFhNjk5MTM1NTE4MTdjLi45ZGIxZmJjOWEzYjViYzZmZTJjZTk0ZWEx
YWZjN2M1MTZjMmU1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTg5LDggKzg5LDggQEAKIAkJMEY4NTBGRTYxRUQ3QzM5RjAwRkI3
N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1MEZFNDFFRDdDMzlGMDBGQjc3QTcgLyog
V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcCAqLzsgfTsKIAkJMEY4NTBGRTcxRUQ3QzM5
RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NTBGRTUxRUQ3QzM5RjAwRkI3N0E3
IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oICovOyB9OwogCQkwRjkzMUMxQzE4QzU3
MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUExOEM1
NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCAq
LzsgfTsKLQkJMEY5MzFDMUQxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLzsgfTsKIAkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMxQzFBMThDNTcxMTkwMERCQjhE
NCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi87IH07CisJCTBG
OTMxQzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MubW0gKi87IH07CiAJCTBGOTMxQzFEMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi87IH07CiAJCTBGQjY1OTIzMTIw
OEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3
aW5nQXJlYUluZm8uaCAqLzsgfTsKIAkJMEZDQjRFNDYxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VD
bGllbnRJbXBsSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkNCNEUzNjE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCAqLzsg
fTsKQEAgLTE0OTIsNiArMTQ5Miw3IEBACiAJCUExRDQyMDQ3MURCNTU3ODUwMEJCNkIwRCAvKiBX
S0NvbnRleHRNZW51TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVM
aXN0ZW5lci5jcHAgKi87IH07CiAJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9h
ZENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExREY2MzEwMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLzsgfTsKIAkJ
QTFERjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMTE4RTBCN0M4MDAzQTNF
MkEgLyogRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKKwkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2
IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi87
IH07CiAJCUExRUEwMjM4MURBQkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjM2
MURBQkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUVBMDIzRjFEQUMzMURCMDA5
NjAyMUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjNEMURBQzMxREIwMDk2MDIxRiAv
KiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwICovOyB9OwogCQlBMUVBMDI0MDFEQUMz
MURCMDA5NjAyMUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVBMDIzRTFEQUMzMURCMDA5NjAy
MUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmggKi87IH07CkBAIC0yMjk4LDggKzIy
OTksOCBAQAogCQkwRjg1MEZFNDFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dn
aW5nQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBl
cmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGVyZm9ybWFuY2VMb2dnaW5n
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFBMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY5MzFDMUIxOEM1NzEx
OTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkz
MUMxQTE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0Fy
ZWFJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwODU2RTE4N0NFMEE5MDA3ODBE
ODYgLyogX19pbml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBfX2luaXRfXy5weTsgcGF0aCA9
IHdlYmtpdC9fX2luaXRfXy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NDMs
NiArMzg0NCw3IEBACiAJCUExQzUxMkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlByZXZpZXdM
b2FkZXJDbGllbnQuaDsgcGF0aCA9IGlvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExREY2MzEwMThFMEI3QzgwMDNBM0UyQSAvKiBEb3du
bG9hZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERv
d25sb2FkQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMURGNjMxMTE4
RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTFFNjg4NkYxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUXVhcmFudGluZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUVB
MDIzNTFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUEwMjM2MURBQkZGN0UwMDk2MDIxRiAv
KiBXS0NvbnRleHRNZW51TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tDb250ZXh0TWVudUxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExRUEwMjNEMURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnVM
aXN0ZW5lclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY2NjUsNiAr
NjY2NywxNCBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUExRTY4ODZFMUY2RTJCODIwMDcwMDZBNiAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUExRTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAv
KiBRdWFyYW50aW5lU1BJLmggKi8sCisJCQkpOworCQkJcGF0aCA9IG1hYzsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE3OENDREQ1MTkzQUM5RTMwMDVFQ0MyNSAvKiBTYW5k
Ym94UHJvZmlsZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtODE0Miw2ICs4MTUyLDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTM3NTRENTQxMUIzQTI5
OTgwMDNBNEM3RiAvKiBDb2NvYSAqLywKIAkJCQlDRTFBMEJDQjFBNDhFNkM2MDA1NEVGNzQgLyog
aW9zICovLAorCQkJCUExRTY4ODZFMUY2RTJCODIwMDcwMDZBNiAvKiBtYWMgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IHNwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04Njk0LDYgKzg3
MDUsNyBAQAogCQkJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAvKiBQcm9jZXNzVGVybWluYXRp
b25SZWFzb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTY3QTI1MTkxMEI5RDEwMDAwNEFCNyAv
KiBQcm9jZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzA0OEFFNjFBQ0E0NURD
MDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAw
NEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKaW5kZXggMzQ2ZDI0OTQ3NWE1MzkzMWQ1YWZmMTU3NTliODM4NDUyYTY2
NjMwOS4uYWRmODUyMjZhNzVkMzJmYjQ4ZTA5N2VmMTg1YjU0YmQyN2U1YzIwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
LmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckZp
bGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBSZWY8QmxvYkRhdAogCiAgICAgLy8g
RmlsZSBwYXRoIGNhbiBiZSBlbXB0eSB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtIGZpbGUgaW5wdXQg
d2l0aG91dCBhIGZpbGUsIHNlZSBidWcgMTExNzc4LgogICAgIGlmICghZmlsZS0+cGF0aCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUtPnBh
dGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIGV4dGVuc2lvbkhhbmRsZSk7CisgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwogCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JV
UkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321029</attachid>
            <date>2017-09-17 00:12:39 -0700</date>
            <delta_ts>2017-09-17 00:45:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177047-20170917001239.patch</filename>
            <type>text/plain</type>
            <size>47445</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmZjBkOTg1M2RiMWUxZGIzNzEyMDFj
NzQ3NmVhYzAyM2ExZTY0MTAuLmRkZWRhZTUxNmM5YTkzM2IzMDg2YWZlMTI0NGIxNzlhNzg2OTIz
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oOgorCiAy
MDE3LTA5LTE1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBX
VEY6IHVzZSBGb3J3YXJkLmggd2hlbiBhcHByb3ByaWF0ZSBpbnN0ZWFkIG9mIFZlY3Rvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDRlNWZiMDM4ZDFkYjlkZmM1MjNjYjQ4MDdhMWRkYjgxOWVhNzRiYTEuLjVlZmRh
OGM1MzEwOThmMTQ5NjYxODk1ZjMzNWY5ZGQwODY4M2EzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjIgQEAKKzIwMTctMDktMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFj
ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaDogQWRkZWQu
CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmVuYWJsZVNhbmRib3hTdHlsZUZpbGVRdWFyYW50aW5lKToKKyAgICAgICAgKFdlYktp
dDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAgICAgICogU2hhcmVkL21h
Yy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbkltcGw6
OlNhbmRib3hFeHRlbnNpb25JbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bkltcGw6On5TYW5kYm94RXh0ZW5zaW9uSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb25JbXBsOjpjb25zdW1lKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bkltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uSW1w
bDo6Z2V0U2VyaWFsaXplZEZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlOjp+SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNF
eHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UpOgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KToKKyAgICAgICAgKFdlYktp
dDo6d2tTYW5kYm94RXh0ZW5zaW9uVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1By
b3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmlu
aXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2Ft
cGxlcik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorCiAyMDE3
LTA5LTE2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCB0aGUgVG9vbHMgYnVpbGQgd2l0aCBDTWFrZSBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL1NhbmRib3hTUEkuaAppbmRleCBiMzc4Nzk0MjUyOGU4MjRkYmE2OGQ1NGY2OThmZWE5
YzVlZTI1ZTMyLi5mYTE4YzllYTYzOTI2NGRiNzZkM2QyYmI3MGMyZjVmNDQ4NTJhYzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaApAQCAtNDIsMTEgKzQyLDE4IEBAIGVu
dW0gc2FuZGJveF9maWx0ZXJfdHlwZSB7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCitleHRlcm4g
Y29uc3QgY2hhciAqY29uc3QgQVBQX1NBTkRCT1hfUkVBRDsKK2V4dGVybiBjb25zdCBjaGFyICpj
b25zdCBBUFBfU0FOREJPWF9SRUFEX1dSSVRFOwogZXh0ZXJuIGNvbnN0IGVudW0gc2FuZGJveF9m
aWx0ZXJfdHlwZSBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVDsKKworY2hhciAqc2FuZGJveF9leHRl
bnNpb25faXNzdWVfZmlsZShjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIg
KnBhdGgsIHVpbnQzMl90IGZsYWdzKTsKK2NoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2dl
bmVyaWMoY29uc3QgY2hhciAqZXh0ZW5zaW9uX2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CiBpbnQg
c2FuZGJveF9jaGVjayhwaWRfdCwgY29uc3QgY2hhciAqb3BlcmF0aW9uLCBlbnVtIHNhbmRib3hf
ZmlsdGVyX3R5cGUsIC4uLik7CiBpbnQgc2FuZGJveF9jaGVja19ieV9hdWRpdF90b2tlbihhdWRp
dF90b2tlbl90LCBjb25zdCBjaGFyICpvcGVyYXRpb24sIGVudW0gc2FuZGJveF9maWx0ZXJfdHlw
ZSwgLi4uKTsKIGludCBzYW5kYm94X2NvbnRhaW5lcl9wYXRoX2Zvcl9waWQocGlkX3QsIGNoYXIg
KmJ1ZmZlciwgc2l6ZV90IGJ1ZnNpemUpOworaW50IHNhbmRib3hfZXh0ZW5zaW9uX3JlbGVhc2Uo
aW50NjRfdCBleHRlbnNpb25faGFuZGxlKTsKIGludCBzYW5kYm94X2luaXRfd2l0aF9wYXJhbWV0
ZXJzKGNvbnN0IGNoYXIgKnByb2ZpbGUsIHVpbnQ2NF90IGZsYWdzLCBjb25zdCBjaGFyICpjb25z
dCBwYXJhbWV0ZXJzW10sIGNoYXIgKiplcnJvcmJ1Zik7CitpbnQ2NF90IHNhbmRib3hfZXh0ZW5z
aW9uX2NvbnN1bWUoY29uc3QgY2hhciAqZXh0ZW5zaW9uX3Rva2VuKTsKIAogV1RGX0VYVEVSTl9D
X0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGZkZWU1ODE5Nzc5ZmU0NjIy
ZDM5ZTZkMTkzZDhkNDQ3ZGUwZWU2ZDMuLjcyMjI1OGNhYzg0OGRmYWYzOTBlYjlhZjcyZDJiNWE5
NDk1ZmY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1l
bnQgPSBlbGVtZW50c1tpXTsKICAgICAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBwYXRoID0gZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSA/IGVsZW1lbnQubV9n
ZW5lcmF0ZWRGaWxlbmFtZSA6IGVsZW1lbnQubV9maWxlbmFtZTsKLSAgICAgICAgICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVh
ZE9ubHksIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10pOwor
ICAgICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
c1tleHRlbnNpb25JbmRleCsrXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
ZW5jb2RlciA8PCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOwpAQCAtNjksNyArNjksNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSkg
ewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcmVxdWVzdFNhbmRib3hFeHRlbnNp
b247Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXF1ZXN0LnVybCgp
LmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCByZXF1ZXN0U2Fu
ZGJveEV4dGVuc2lvbik7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShy
ZXF1ZXN0LnVybCgpLmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCByZXF1ZXN0U2FuZGJveEV4dGVuc2lvbik7CiAgICAgICAgIGVuY29kZXIgPDwgcmVx
dWVzdFNhbmRib3hFeHRlbnNpb247CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzgwZmE0MGQwYjU3N2IwZGRj
NzZiNGU2NWQxYTcwMjU5NWNhYzdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8cXVhcmFudGluZS5oPgorCisjZWxzZQorCitlbnVt
IHF0bl9mbGFncyB7CisgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4MDAwMiwKK307CisKKyNkZWZp
bmUgcXRuX3Byb2NfYWxsb2MgX3F0bl9wcm9jX2FsbG9jCisjZGVmaW5lIHF0bl9wcm9jX2FwcGx5
X3RvX3NlbGYgX3F0bl9wcm9jX2FwcGx5X3RvX3NlbGYKKyNkZWZpbmUgcXRuX3Byb2NfZnJlZSBf
cXRuX3Byb2NfZnJlZQorI2RlZmluZSBxdG5fcHJvY19pbml0X3dpdGhfc2VsZiBfcXRuX3Byb2Nf
aW5pdF93aXRoX3NlbGYKKyNkZWZpbmUgcXRuX3Byb2Nfc2V0X2ZsYWdzIF9xdG5fcHJvY19zZXRf
ZmxhZ3MKKworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9xdG5fcHJvYyAqcXRuX3Byb2NfdDsK
KworV1RGX0VYVEVSTl9DX0JFR0lOCisKK2ludCBxdG5fcHJvY19hcHBseV90b19zZWxmKHF0bl9w
cm9jX3QpOworaW50IHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmKHF0bl9wcm9jX3QpOworaW50IHF0
bl9wcm9jX3NldF9mbGFncyhxdG5fcHJvY190LCB1aW50MzJfdCBmbGFncyk7CitxdG5fcHJvY190
IHF0bl9wcm9jX2FsbG9jKCk7Cit2b2lkIHF0bl9wcm9jX2ZyZWUocXRuX3Byb2NfdCk7CisKK1dU
Rl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCA1MTA1N2U0OTgyNzcxYmIzM2FlYWIxM2MzNTRk
MDYxNDFhN2UxNGJmLi4yMmE5NmUzZjA3ZThkMmNhN2Y4YzQ0MDIzNmQzNmUyMDA5MjVmN2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zMiwyMCArMzIsMTgg
QEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotdHlwZWRlZiBzdHJ1Y3QgX19X
S1NhbmRib3hFeHRlbnNpb24qIFdLU2FuZGJveEV4dGVuc2lvblJlZjsKLSNlbmRpZgotCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIEVuY29kZXI7CiBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKKyAgICAKK2NsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsOwogCiBjbGFzcyBT
YW5kYm94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewog
cHVibGljOgotICAgIGVudW0gVHlwZSB7CisgICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAg
UmVhZE9ubHksCiAgICAgICAgIFJlYWRXcml0ZSwKICAgICAgICAgR2VuZXJpYywKQEAgLTU1LDcg
KzUzLDExIEBAIHB1YmxpYzoKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEhhbmRsZSgpOworI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVO
U0lPTlMpCisgICAgICAgIEhhbmRsZShIYW5kbGUmJik7CisjZWxzZQogICAgICAgICBIYW5kbGUo
SGFuZGxlJiYpID0gZGVmYXVsdDsKKyNlbmRpZgogICAgICAgICB+SGFuZGxlKCk7CiAKICAgICAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC02NCw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2FuZGJveEV4dGVuc2lv
bjsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgICAgICBtdXRhYmxlIFdLU2Fu
ZGJveEV4dGVuc2lvblJlZiBtX3NhbmRib3hFeHRlbnNpb247CisgICAgICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBtX3NhbmRib3hFeHRlbnNpb247CiAj
ZW5kaWYKICAgICB9OwogCkBAIC0xMDgsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNp
dCBTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYpOwogICAgICAgICAgICAgICAgICAgICAg
CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICBtdXRhYmxlIFdLU2FuZGJveEV4
dGVuc2lvblJlZiBtX3NhbmRib3hFeHRlbnNpb247CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IG1fc2FuZGJveEV4dGVuc2lvbjsKICAgICBzaXplX3Qg
bV91c2VDb3VudDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQ
cm9jZXNzTWFjLm1tCmluZGV4IDgxYzdmN2E5ZTdlMmU0YzNhNjRjZTg0ZTUzN2Q3MTZiNTU5Yjdi
MjUuLjM1ZWE3ODAwM2I2M2YyYWE1N2MxZTdkNTYwMjQ1N2NiZDlkM2RiMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZVV0aWxzQ0Yu
aCIKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC03OCw2ICs3OSwyOCBAQCB2b2lkIENoaWxk
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBpbml0aWFsaXplVGltZXJDb2FsZXNj
aW5nUG9saWN5KCk7CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjaGFuZ2VD
dXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZVBhdGhdXTsK
IH0KKyAgICAKK3N0YXRpYyBPU1N0YXR1cyBlbmFibGVTYW5kYm94U3R5bGVGaWxlUXVhcmFudGlu
ZSgpCit7CisgICAgaW50IGVycm9yOworICAgIHF0bl9wcm9jX3QgcXVhcmFudGluZVByb3BlcnRp
ZXMgPSBxdG5fcHJvY19hbGxvYygpOworICAgIGlmICgoZXJyb3IgPSBxdG5fcHJvY19pbml0X3dp
dGhfc2VsZihxdWFyYW50aW5lUHJvcGVydGllcykpKSB7CisgICAgICAgIHF0bl9wcm9jX2ZyZWUo
cXVhcmFudGluZVByb3BlcnRpZXMpOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorICAg
IAorICAgIGlmICgoZXJyb3IgPSBxdG5fcHJvY19zZXRfZmxhZ3MocXVhcmFudGluZVByb3BlcnRp
ZXMsIFFUTl9GTEFHX1NBTkRCT1gpKSkgeworICAgICAgICBxdG5fcHJvY19mcmVlKHF1YXJhbnRp
bmVQcm9wZXJ0aWVzKTsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKyAgICAKKyAgICAv
LyBRVE5fRkxBR19TQU5EQk9YIGlzIHNpbGVudGx5IGlnbm9yZWQgaWYgc2VjdXJpdHkubWFjLnF0
bi5zYW5kYm94X2VuZm9yY2Ugc3lzY3RsIGlzIDAuCisgICAgLy8gSW4gdGhhdCBjYXNlLCBxdWFy
YW50aW5lIGZhbGxzIGJhY2sgdG8gYWR2aXNvcnkgUVROX0ZMQUdfRE9XTkxPQUQuCisgICAgZXJy
b3IgPSBxdG5fcHJvY19hcHBseV90b19zZWxmKHF1YXJhbnRpbmVQcm9wZXJ0aWVzKTsKKyAgICAK
KyAgICBxdG5fcHJvY19mcmVlKHF1YXJhbnRpbmVQcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gZXJy
b3I7Cit9CiAKIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGls
ZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmIHNhbmRib3hQYXJhbWV0ZXJzKQogewpAQCAtMTcxLDcgKzE5
NCw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmCiAgICAgfQogCiAgICAgLy8gVGhpcyB3aWxs
IG92ZXJyaWRlIExTRmlsZVF1YXJhbnRpbmVFbmFibGVkIGZyb20gSW5mby5wbGlzdCB1bmxlc3Mg
c2FuZGJveCBxdWFyYW50aW5lIGlzIGdsb2JhbGx5IGRpc2FibGVkLgotICAgIE9TU3RhdHVzIGVy
cm9yID0gV0tFbmFibGVTYW5kYm94U3R5bGVGaWxlUXVhcmFudGluZSgpOworICAgIE9TU3RhdHVz
IGVycm9yID0gZW5hYmxlU2FuZGJveFN0eWxlRmlsZVF1YXJhbnRpbmUoKTsKICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgZW5hYmxlIHNhbmRib3gg
c3R5bGUgZmlsZSBxdWFyYW50aW5lOiAlbGRcbiIsIGdldHByb2duYW1lKCksIHN0YXRpY19jYXN0
PGxvbmc+KGVycm9yKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggNDQxZWIxZTE0ODA4
MjMwYWFiNDA0ZjJkNjM5OGQ1MmZlNjRjNDA4OS4uYzg1NDI5ZDRkMjBmZDFiY2NkM2VjMDU4MjE3
ZWZjZDY1OGZkOWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRi
b3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hF
eHRlbnNpb25NYWMubW0KQEAgLTM0LDIzICszNCw4NiBAQAogI2ltcG9ydCAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHN5
cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgeworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShj
b25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUpCisgICAgeworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGltcGwgeyBuZXcgU2Fu
ZGJveEV4dGVuc2lvbkltcGwocGF0aCwgdHlwZSkgfTsKKyAgICAgICAgaWYgKCFpbXBsLT5tX3Rv
a2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBpbXBsOwor
ICAgIH0KKworICAgIFNhbmRib3hFeHRlbnNpb25JbXBsKGNvbnN0IGNoYXIqIHNlcmlhbGl6ZWRG
b3JtYXQsIHNpemVfdCBsZW5ndGgpCisgICAgICAgIDogbV90b2tlbiB7IHN0cm5kdXAoc2VyaWFs
aXplZEZvcm1hdCwgbGVuZ3RoKSB9CisgICAgeworICAgIH0KKworICAgIH5TYW5kYm94RXh0ZW5z
aW9uSW1wbCgpCisgICAgeworICAgICAgICBmcmVlKG1fdG9rZW4pOworICAgIH0KKworICAgIGJv
b2wgY29uc3VtZSgpCisgICAgeworICAgICAgICBtX2hhbmRsZSA9IHNhbmRib3hfZXh0ZW5zaW9u
X2NvbnN1bWUobV90b2tlbik7CisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyAgICAgICAg
cmV0dXJuICFzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAwLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsK
KyNlbHNlCisgICAgICAgIHJldHVybiBtX2hhbmRsZTsKKyNlbmRpZgorICAgIH0KKworICAgIGJv
b2wgaW52YWxpZGF0ZSgpCisgICAgeworICAgICAgICBpbnQgZXJyb3IgPSBzYW5kYm94X2V4dGVu
c2lvbl9yZWxlYXNlKG1faGFuZGxlKTsKKyAgICAgICAgbV9oYW5kbGUgPSAwOworICAgICAgICBy
ZXR1cm4gIWVycm9yOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFNlcmlhbGl6ZWRGb3Jt
YXQoc2l6ZV90JiBsZW5ndGgpCisgICAgeworICAgICAgICBsZW5ndGggPSBzdHJsZW4obV90b2tl
bik7CisgICAgICAgIHJldHVybiBtX3Rva2VuOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uSW1wbChjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
IHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seToKKyAgICAgICAgICAgIG1fdG9rZW4gPSBzYW5k
Ym94X2V4dGVuc2lvbl9pc3N1ZV9maWxlKEFQUF9TQU5EQk9YX1JFQUQsIHBhdGgsIDApOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZToKKyAgICAgICAgICAgIG1fdG9rZW4gPSBzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9m
aWxlKEFQUF9TQU5EQk9YX1JFQURfV1JJVEUsIHBhdGgsIDApOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OkdlbmVyaWM6CisgICAgICAg
ICAgICBtX3Rva2VuID0gc2FuZGJveF9leHRlbnNpb25faXNzdWVfZ2VuZXJpYyhwYXRoLCAwKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNoYXIqIG1fdG9r
ZW4geyBudWxscHRyIH07CisgICAgaW50NjRfdCBtX2hhbmRsZSB7IDAgfTsKK307CisKIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fc2FuZGJveEV4dGVuc2lvbigw
KQogewogfQotICAgIAorCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OkhhbmRsZShIYW5kbGUm
JikgPSBkZWZhdWx0OworCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKQogewot
ICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgV0tTYW5kYm94RXh0ZW5zaW9u
SW52YWxpZGF0ZShtX3NhbmRib3hFeHRlbnNpb24pOwotICAgICAgICBXS1NhbmRib3hFeHRlbnNp
b25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgfQorICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pCisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwogfQog
CiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKQEAgLTYxLDEzICsxMjQsMTIgQEAgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgfQogCiAgICAg
c2l6ZV90IGxlbmd0aCA9IDA7Ci0gICAgY29uc3QgY2hhciAqc2VyaWFsaXplZEZvcm1hdCA9IFdL
U2FuZGJveEV4dGVuc2lvbkdldFNlcmlhbGl6ZWRGb3JtYXQobV9zYW5kYm94RXh0ZW5zaW9uLCAm
bGVuZ3RoKTsKKyAgICBjb25zdCBjaGFyKiBzZXJpYWxpemVkRm9ybWF0ID0gbV9zYW5kYm94RXh0
ZW5zaW9uLT5nZXRTZXJpYWxpemVkRm9ybWF0KGxlbmd0aCk7CiAgICAgQVNTRVJUKHNlcmlhbGl6
ZWRGb3JtYXQpOwogCiAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2VyaWFsaXplZEZvcm1hdCksIGxlbmd0aCk7CiAKICAg
ICAvLyBFbmNvZGluZyB3aWxsIGRlc3Ryb3kgdGhlIHNhbmRib3ggZXh0ZW5zaW9uIGxvY2FsbHku
Ci0gICAgV0tTYW5kYm94RXh0ZW5zaW9uRGVzdHJveShtX3NhbmRib3hFeHRlbnNpb24pOwogICAg
IG1fc2FuZGJveEV4dGVuc2lvbiA9IDA7CiB9CiAKQEAgLTgyLDcgKzE0NCw3IEBAIGJvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5k
bGUmIHJlc3VsdCkKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgcmVzdWx0Lm1fc2FuZGJveEV4dGVuc2lvbiA9IFdLU2FuZGJveEV4
dGVuc2lvbkNyZWF0ZUZyb21TZXJpYWxpemVkRm9ybWF0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAg
IHJlc3VsdC5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRl
bnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRh
dGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTUyLDIxICsyMTQsNiBAQCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2FuZGJveEV4dGVuc2lvbihoYW5kbGUpKTsKIH0KIAotc3RhdGljIFdLU2FuZGJveEV4dGVuc2lv
blR5cGUgd2tTYW5kYm94RXh0ZW5zaW9uVHlwZShTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUp
Ci17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpSZWFk
T25seToKLSAgICAgICAgcmV0dXJuIFdLU2FuZGJveEV4dGVuc2lvblR5cGVSZWFkT25seTsKLSAg
ICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZToKLSAgICAgICAgcmV0dXJuIFdLU2Fu
ZGJveEV4dGVuc2lvblR5cGVSZWFkV3JpdGU7Ci0gICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpH
ZW5lcmljOgotICAgICAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uVHlwZUdlbmVyaWM7Ci0K
LSAgICB9Ci0KLSAgICBDUkFTSCgpOwotfQotCiBzdGF0aWMgQ1N0cmluZyByZXNvbHZlU3ltbGlu
a3NJblBhdGgoY29uc3QgQ1N0cmluZyYgcGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBzdGF0QnVm
OwpAQCAtMjQ1LDcgKzI5Miw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlCiB7CiAgICAgQVNT
RVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAotICAgIGhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24gPSBXS1NhbmRib3hFeHRlbnNpb25DcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCB3
a1NhbmRib3hFeHRlbnNpb25UeXBlKHR5cGUpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShwYXRoLnV0ZjgoKS5kYXRhKCksIHR5
cGUpOwogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBh
dGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2Niw3ICszMTMs
NyBAQCBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNhbgogICAgIGlmIChyZXNvbHZlZFBhdGguaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNhbmRib3hF
eHRlbnNpb246OlJlYWRXcml0ZSwgaGFuZGxlKTsKKyAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGhhbmRsZSk7CiB9CiAKIFN0cmluZyBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBUeXBlIHR5cGUsIEhhbmRsZSYgaGFuZGxlKQpAQCAtMjg5LDcgKzMzNiw3IEBAIFN0cmlu
ZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBUeXBlCiAgICAgcGF0aC5hcHBlbmQocHJlZml4LnV0ZjgoKS5kYXRhKCks
IHByZWZpeC5sZW5ndGgoKSk7CiAgICAgcGF0aC5hcHBlbmQoJ1wwJyk7CiAgICAgCi0gICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFdLU2FuZGJveEV4dGVuc2lvbkNyZWF0ZShmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEoKSwgd2tTYW5kYm94RXh0ZW5zaW9u
VHlwZSh0eXBlKSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb25JbXBsOjpjcmVhdGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGguZGF0YSgpKS5k
YXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9u
IGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzAyLDcgKzM0OSw3
IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbkNsCiB7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uKTsKIAotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBXS1NhbmRi
b3hFeHRlbnNpb25DcmVhdGUoZXh0ZW5zaW9uQ2xhc3MudXRmOCgpLmRhdGEoKSwgd2tTYW5kYm94
RXh0ZW5zaW9uVHlwZShUeXBlOjpHZW5lcmljKSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoZXh0ZW5zaW9uQ2xhc3MudXRmOCgp
LmRhdGEoKSwgVHlwZTo6R2VuZXJpYyk7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhICclcycgc2Fu
ZGJveCBleHRlbnNpb24iLCBleHRlbnNpb25DbGFzcy51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzEyLDEwICszNTksOSBAQCBib29sIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25D
bAogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYg
aGFuZGxlKQotICAgIDogbV9zYW5kYm94RXh0ZW5zaW9uKGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24pCisgICAgOiBtX3NhbmRib3hFeHRlbnNpb24oV1RGTW92ZShoYW5kbGUubV9zYW5kYm94RXh0
ZW5zaW9uKSkKICAgICAsIG1fdXNlQ291bnQoMCkKIHsKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0
ZW5zaW9uID0gMDsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKQpA
QCAtMzI0LDcgKzM3MCw2IEBAIFNhbmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0ZW5zaW9uKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX3VzZUNvdW50KTsKLSAgICBXS1NhbmRi
b3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7CiB9CiAKIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6cmV2b2tlKCkKQEAgLTMzNSw3ICszODAsNyBAQCBib29sIFNhbmRib3hFeHRl
bnNpb246OnJldm9rZSgpCiAgICAgaWYgKC0tbV91c2VDb3VudCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uSW52YWxpZGF0ZShtX3NhbmRib3hF
eHRlbnNpb24pOworICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsK
IH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkKQEAgLTM0NSwxOCArMzkwLDE3
IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSgpCiAgICAgaWYgKG1fdXNlQ291bnQr
KykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9u
Q29uc3VtZShtX3NhbmRib3hFeHRlbnNpb24pOworICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNp
b24tPmNvbnN1bWUoKTsKIH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkoKQogewogICAgIEFTU0VSVChtX3NhbmRib3hFeHRlbnNpb24pOwogCi0gICAgYm9vbCBy
ZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25Db25zdW1lKG1fc2FuZGJveEV4dGVuc2lvbik7Cisg
ICAgYm9vbCByZXN1bHQgPSBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKIAogICAgIC8v
IERlc3Ryb3kgdGhlIGV4dGVuc2lvbiB3aXRob3V0IGludmFsaWRhdGluZyBpdC4KLSAgICBXS1Nh
bmRib3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgbV9zYW5kYm94
RXh0ZW5zaW9uID0gMDsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTM2NiwxMSArNDEwLDEwIEBAIGJvb2wgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIGlmICgh
aGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ym9vbCByZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25Db25zdW1lKGhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pOworICAgIGJvb2wgcmVzdWx0ID0gaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbi0+
Y29uc3VtZSgpOwogICAgIAogICAgIC8vIERlc3Ryb3kgdGhlIGV4dGVuc2lvbiB3aXRob3V0IGlu
dmFsaWRhdGluZyBpdC4KLSAgICBXS1NhbmRib3hFeHRlbnNpb25EZXN0cm95KGhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pOwotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSAwOworICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggZDUwYjMzZGNjY2Q5YTU0Yzc5ZjA0MDI1ZWY5MTI1YjJhNGIyZTYzMC4u
MjYxZTg1MTdjOTdhMTJhYTk1YzRiODE0OGU4ZTAwNTUyZTZjNzg5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVk
ZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLAogICAgIGlmIChmaWxlcy5zaXplKCkgPT0g
MSkgewogICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICBpZiAoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5
OiZpc0RpcmVjdG9yeV0gJiYgIWlzRGlyZWN0b3J5KSB7Ci0gICAgICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgZmls
ZVJlYWRIYW5kbGUpOworICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVSZWFkSGFuZGxlKTsK
ICAgICAgICAgICAgIHByb2Nlc3MoKS53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZXMsCiAgICAgICAgIE5TU3RyaW5nICpmaWxlID0gZmlsZXNbaV07CiAgICAg
ICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OmZpbGVdKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgZmlsZVVwbG9h
ZEhhbmRsZXNbaV0pOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmls
ZSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVVcGxvYWRIYW5kbGVzW2ld
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGJkNTdhN2NiN2Y5NjU3ZWY1MWJjNTExZGVhNGNl
MTU3ZWE4NzhlYmIuLmYwN2JiZmJkZThkODAxYjIyZjk0M2RhYmJlYjNiZTFkMGMwZDFmNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQpAQCAtMjAxLDE5ICsyMDEsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJgogCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBjb25maWd1cmFibGU7IHdlIHNob3Vs
ZG4ndCBqdXN0IGJsaW5kbHkgYWxsb3cgcmVhZCBhY2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MgYnVu
ZGxlLgogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gbV9yZXNv
bHZlZFBhdGhzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aDsKLSAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLnVpUHJvY2Vz
c0J1bmRsZVJlc291cmNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRl
cnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJz
LnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZE9ubHksIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKIAogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0cmlu
ZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIAogI2lmIFBMQVRG
T1JNKElPUykKICAgICBpZiAoIW1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91
dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIFNh
bmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmICghbV9yZXNvbHZl
ZFBhdGhzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQ
YXRocy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0
ZSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aChtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmICghbV9yZXNvbHZlZFBhdGhzLmNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJU
ZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVy
cy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29s
dmVkUGF0aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0g
bV9mb250V2hpdGVsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IGMyNjE4YTIwN2ExMGNmMzcxNTBiZTFmYmZiODE2
ZWY3YjQ3MWNkOGEuLjdkOTI1ZGQ5NjAzMjc3YzYxYmMwMGUwYjdmYTYxNjhlMzA0OGU4MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3dubAogICAgIAog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAg
IGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdv
cmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAgbmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZURlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSksIDApOwpAQCAtMjI0LDcgKzIyNCw3
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtCiAgICAgZGVzdGluYXRpb24gPSBtX3Byb2Nlc3NQ
b29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBhbGxvd092
ZXJ3cml0ZSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCA5MWJhOWEwNjYzMjMxMDhlMTY3OTZhYjY0NmMxM2JkZDQ4MmIwYWQxLi5hNjBi
NDQwMjFkYmExZGRjYjRhMTUzNzU4YjE4MTVkM2VkMDQzOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTI5Niw3ICsyOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0XwogICAgIGV4dGVuc2lvbnMu
YWxsb2NhdGUocGF0aHMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIC8vIFJlYWRXcml0ZSBpcyByZXF1aXJlZCBmb3IgY3Jl
YXRpbmcgaGFyZCBsaW5rcyBhcyB3ZWxsIGFzIGRlbGV0aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSwg
d2hpY2ggdGhlIFN0b3JhZ2VQcm9jZXNzIHdpbGwgZG8uCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShwYXRoc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBl
eHRlbnNpb25zW2ldKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBh
dGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGV4dGVuc2lvbnNbaV0p
OwogICAgIH0KIAogICAgIG1fcHJvY2Vzc1Bvb2wuc2VuZFRvU3RvcmFnZVByb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6R3JhbnRTYW5kYm94RXh0
ZW5zaW9uc0ZvckJsb2JzKHBhdGhzLCBleHRlbnNpb25zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
NWFhODExOGMxMTZhY2Q5MGUyM2NkNzY0ODA1MjY0MmY5NjkyNjBkLi41NWNmZmY1MzU2ZThmZWNk
M2NhM2MzY2VlYTlkMzNjYjJkNDIyNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTE5OCw3ICsxOTgs
NyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxv
YkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgYwogICAgIGV4dGVuc2lvbnMuYWxsb2NhdGUocGF0
aHMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIC8vIFJlYWRXcml0ZSBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcgaGFyZCBs
aW5rcywgd2hpY2ggaXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZG9uZSB3aXRoIHRoZXNlIGV4
dGVuc2lvbnMuCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoc1tp
XSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBleHRlbnNpb25zW2ldKTsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkV3JpdGUsIGV4dGVuc2lvbnNbaV0pOwogICAgIH0KIAogICAgIHNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxl
cyhyZXF1ZXN0SUQsIGV4dGVuc2lvbnMpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDU3Y2ZiYzA5ZWYzMmZlMjFmYmU1ODQyMTYxMWQ0ZTc0Y2E0YWMy
MmYuLmE3OTk4ZWJhODgxYTRlY2Q1NzZjNmRkMDM5OWJhZmJiMTU2Y2Y1NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODE2LDcgKzgxNiw3IEBAIGJvb2wg
V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0
IFVSTCYgdXJsLCBTYW5kYm94CiAgICAgLy8gSW5zcGVjdG9yIHJlc291cmNlcyBhcmUgaW4gYSBk
aXJlY3Rvcnkgd2l0aCBhc3N1bWVkIGFjY2Vzcy4KICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTighV2ViS2l0Ojppc0luc3BlY3RvclBhZ2UoKnRoaXMpKTsKIAotICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg5MSw3ICs4OTEsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBmaWxl
VVJMOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAo
dWludDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c7CiAg
ICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwotICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJl
YWRPbmx5LCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3VyY2VEaXJlY3RvcnlQYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7
CiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwocmVzb3VyY2VEaXJl
Y3RvcnlVUkwpOwpAQCAtNDc1MCw3ICs0NzUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
czsKICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShmaWxlVVJMcy5zaXplKCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVVSTHMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlVVJMc1tpXSwgU2FuZGJveEV4
dGVuc2lvbjo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKTsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNG
cm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOwogI2VuZGlm
CkBAIC00NzcxLDcgKzQ3NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzKQogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKGZpbGVVUkxzLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkgewotICAgICAgICBib29sIGNy
ZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVVSTHNb
aV0sIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tp
XSk7CisgICAgICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShmaWxlVVJMc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHks
IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKTsKICAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5z
aW9uKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGNhbiBsZWdpdGltYXRlbHkgZmFpbCBpZiBhIGRp
cmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlIGlzIGRlbGV0ZWQgYWZ0ZXIgdGhlIGZpbGUgd2Fz
IGNob3Nlbi4KICAgICAgICAgICAgIC8vIFdlIGFsc28gaGF2ZSByZXBvcnRzIG9mIGNhc2VzIHdo
ZXJlIHRoaXMgbGlrZWx5IGZhaWxzIGZvciBzb21lIHVua25vd24gcmVhc29uLCA8cmRhcjovL3By
b2JsZW0vMTAxNTY3MTA+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDk4ZjY4YTdkNDc5ZTU4ZTYxNDgyNjQxMDI1NmFlNWE4MzE1MGZjOWYuLjMxZTZh
NDZjY2ZjNWY3M2QzZjM3YjNkMzJiYWMyMDVjZWJkNjRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTY2MSwxNyArNjYxLDE3IEBAIFdlYlByb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFT
dG9yZSYgd2Vic2l0ZURhCiAKICAgICBwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCA9IG1f
cmVzb2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlu
amVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQ
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRs
ZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5k
bGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIHBhcmFtZXRlcnMuYWRkaXRpb25hbFNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2Vi
UHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBzaXplID0gbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4
dGVuc2lvblBhdGhzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmFk
ZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzW2ldLCBTYW5kYm94RXh0ZW5z
aW9uOjpSZWFkT25seSwgcGFyYW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXNbaV0pOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVz
b2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0
ZW5zaW9uUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0
ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CiAKICAgICBwYXJhbWV0
ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVk
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIGlmIChwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMuYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeTsKICAgICBpZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNv
bHZpbmdQYXRoKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4
dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVX
aXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIHBhcmFtZXRlcnMuYXBwbGlj
YXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1fY29uZmlndXJhdGlvbi0+YXBw
bGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgpOwogCkBAIC02NzksMTkgKzY3
OSwxOSBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYQogICAgIGlmIChwYXJhbWV0ZXJzLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcGFyYW1ldGVycy53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eTsKICAgICBpZiAoIXBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgp
KQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5n
UGF0aChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9u
OjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVz
b2x2aW5nUGF0aChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5
ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBp
ZiAocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcGFy
YW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9yZXNvbHZlZFBhdGhzLm1lZGlhQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2
aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246
OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmlu
Z1BhdGgocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IHdlYnNp
dGVEYXRhU3RvcmUucmVzb2x2ZWRNZWRpYUtleXNEaXJlY3RvcnkoKTsKICAgICBpZiAocGFyYW1l
dGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBwYXJhbWV0
ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy5tZWRpYUtleVN0
b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBT
YW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVuYWJsZWRGcm9tRGVmYXVsdHMo
KTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpj
cmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYQogICAgIGlmIChq
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKCkpIHsKICAgICAgICAgcGFyYW1ldGVy
cy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVz
b2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogICAgICAgICBpZiAoIXBh
cmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1Bh
dGgocGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSwgU2FuZGJveEV4
dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFy
YW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24g
PSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKQEAgLTg1NCw3ICs4NTQsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcykKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBsZUxv
Z1NhbmRib3hIYW5kbGU7ICAgICAgICAKICAgICAgICAgZG91YmxlIG5vdyA9IFdURjo6Y3VycmVu
dFRpbWUoKTsKICAgICAgICAgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU3RyaW5nOjpmb3Jt
YXQoIldlYlByb2Nlc3MlbGx1cGlkJWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KG5vdyksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgICAgICBzYW1wbGVMb2dG
aWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUo
c2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FtcGxlTG9n
U2FuZGJveEhhbmRsZSk7CisgICAgICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW1wbGVMb2dTYW5kYm94SGFuZGxlKTsK
ICAgICAgICAgCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0
YXJ0TWVtb3J5U2FtcGxlcihzYW1wbGVMb2dTYW5kYm94SGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0
aCwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwpLCAwKTsKICAgICB9CkBAIC0xMDM1LDcgKzEwMzUs
NyBAQCBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoY29uc3Qg
QVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25zdAogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
V3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKG5ldHdvcmtQcm9jZXNz
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IElmIHdlIHN0YXJ0ZWQgYSBkb3dubG9hZCBpbiBhbiBl
cGhlbWVyYWwgc2Vzc2lvbiBhbmQgdGhhdCBzZXNzaW9uIHN0aWxsIGV4aXN0cywgd2Ugc2hvdWxk
IGZpbmQgYSB3YXkgdG8gdXNlIHRoYXQgc2FtZSBzZXNzaW9uLgpAQCAtMTI3Niw3ICsxMjc2LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnRNZW1vcnlTYW1wbGVyKGNvbnN0IGRvdWJsZSBp
bnRlcnZhbCkKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FtcGxlTG9nU2FuZGJveEhh
bmRsZTsgICAgCiAgICAgZG91YmxlIG5vdyA9IFdURjo6Y3VycmVudFRpbWUoKTsKICAgICBTdHJp
bmcgc2FtcGxlTG9nRmlsZVBhdGggPSBTdHJpbmc6OmZvcm1hdCgiV2ViUHJvY2VzcyVsbHUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG5vdykpOwotICAgIHNhbXBsZUxvZ0ZpbGVQ
YXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShzYW1w
bGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW1wbGVMb2dTYW5k
Ym94SGFuZGxlKTsKKyAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7CiAgICAgCiAg
ICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNh
bXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRsZSwgc2FtcGxlTG9nRmlsZVBhdGgsIGludGVydmFs
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmZDE5OWQ5NTQwMWE5YTA5NTBhYjUwMTUwZWFhNjk5MTM1NTE4MTdjLi45ZGIxZmJj
OWEzYjViYzZmZTJjZTk0ZWExYWZjN2M1MTZjMmU1MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5LDggKzg5LDggQEAKIAkJMEY4
NTBGRTYxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1MEZFNDFF
RDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcCAqLzsgfTsK
IAkJMEY4NTBGRTcxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NTBG
RTUxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oICovOyB9
OwogCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5MzFDMUExOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MuaCAqLzsgfTsKLQkJMEY5MzFDMUQxOEM1NzExOTAwREJBN0MzIC8qIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyog
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLzsgfTsKIAkJMEY5MzFD
MUMxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMx
QzFBMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLmggKi87IH07CisJCTBGOTMxQzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi87IH07CiAJCTBGOTMxQzFEMThDNTcxMTkw
MERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUIxOEM1NzEx
OTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi87
IH07CiAJCTBGQjY1OTIzMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjY1OTIyMTIwOEI0
REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAqLzsgfTsKIAkJMEZDQjRFNDYxOEJCRTA0
NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNCNEUzNjE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNs
aWVudEltcGxJT1MuaCAqLzsgfTsKQEAgLTE0OTIsNiArMTQ5Miw3IEBACiAJCUExRDQyMDQ3MURC
NTU3ODUwMEJCNkIwRCAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFG
IC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHAgKi87IH07CiAJCUExREY2MzEyMThFMEI3Qzgw
MDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzEwMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENs
aWVudC5tbSAqLzsgfTsKIAkJQTFERjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURG
NjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKKwkJQTFFNjg4
NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAvKiBR
dWFyYW50aW5lU1BJLmggKi87IH07CiAJCUExRUEwMjM4MURBQkZGN0UwMDk2MDIxRiAvKiBXS0Nv
bnRleHRNZW51TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExRUEwMjM2MURBQkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVu
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlB
MUVBMDIzRjFEQUMzMURCMDA5NjAyMUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjNE
MURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwICovOyB9
OwogCQlBMUVBMDI0MDFEQUMzMURCMDA5NjAyMUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVB
MDIzRTFEQUMzMURCMDA5NjAyMUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmggKi87
IH07CkBAIC0yMjk4LDggKzIyOTksOCBAQAogCQkwRjg1MEZFNDFFRDdDMzlGMDBGQjc3QTcgLyog
V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3Jt
YW5jZUxvZ2dpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkzMUMxQTE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0
NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERyYXdpbmdBcmVhSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMw
ODU2RTE4N0NFMEE5MDA3ODBEODYgLyogX19pbml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBf
X2luaXRfXy5weTsgcGF0aCA9IHdlYmtpdC9fX2luaXRfXy5weTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTM4NDMsNiArMzg0NCw3IEBACiAJCUExQzUxMkM3MTkwNjU2RTUwMDQ0ODkx
NCAvKiBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYlByZXZpZXdMb2FkZXJDbGllbnQuaDsgcGF0aCA9IGlvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExREY2MzEwMThFMEI3
QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERvd25sb2FkQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFFNjg4NkYxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRp
bmVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhcmFudGluZVNQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUVBMDIzNTFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVudUxp
c3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQ29udGV4
dE1lbnVMaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUEwMjM2
MURBQkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0TWVudUxpc3RlbmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExRUEwMjNEMURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250ZXh0
TWVudUxpc3RlbmVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTY2NjUsNiArNjY2NywxNCBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUExRTY4ODZFMUY2RTJCODIwMDcwMDZBNiAvKiBtYWMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUExRTY4ODZG
MUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi8sCisJCQkpOworCQkJcGF0aCA9
IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUE3OENDREQ1MTkzQUM5
RTMwMDVFQ0MyNSAvKiBTYW5kYm94UHJvZmlsZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtODE0Miw2ICs4MTUyLDcgQEAKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTM3NTRENTQxMUIzQTI5OTgwMDNBNEM3RiAvKiBDb2NvYSAqLywKIAkJCQlDRTFBMEJDQjFB
NDhFNkM2MDA1NEVGNzQgLyogaW9zICovLAorCQkJCUExRTY4ODZFMUY2RTJCODIwMDcwMDZBNiAv
KiBtYWMgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNwaTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC04Njk0LDYgKzg3MDUsNyBAQAogCQkJCTQ2M0ZENDgyMUVCOTRFQzAwMEEyOTgyQyAv
KiBQcm9jZXNzVGVybWluYXRpb25SZWFzb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTY3QTI1
MTkxMEI5RDEwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJhbnRpbmVT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlj
a0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUw
MDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggMzQ2ZDI0OTQ3NWE1MzkzMWQ1
YWZmMTU3NTliODM4NDUyYTY2NjMwOS4uYWRmODUyMjZhNzVkMzJmYjQ4ZTA5N2VmMTg1YjU0YmQy
N2U1YzIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJ
L0Jsb2JSZWdpc3RyeVByb3h5LmNwcApAQCAtNDIsNyArNDIsNyBAQCB2b2lkIEJsb2JSZWdpc3Ry
eVByb3h5OjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBSZWY8
QmxvYkRhdAogCiAgICAgLy8gRmlsZSBwYXRoIGNhbiBiZSBlbXB0eSB3aGVuIHN1Ym1pdHRpbmcg
YSBmb3JtIGZpbGUgaW5wdXQgd2l0aG91dCBhIGZpbGUsIHNlZSBidWcgMTExNzc4LgogICAgIGlm
ICghZmlsZS0+cGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGZpbGUtPnBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIGV4dGVu
c2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxl
LT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBleHRlbnNpb25IYW5k
bGUpOwogCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwg
Y29udGVudFR5cGUpLCAwKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321036</attachid>
            <date>2017-09-17 00:45:21 -0700</date>
            <delta_ts>2017-09-18 14:52:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177047-20170917004520.patch</filename>
            <type>text/plain</type>
            <size>47971</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmZjBkOTg1M2RiMWUxZGIzNzEyMDFj
NzQ3NmVhYzAyM2ExZTY0MTAuLmRkZWRhZTUxNmM5YTkzM2IzMDg2YWZlMTI0NGIxNzlhNzg2OTIz
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oOgorCiAy
MDE3LTA5LTE1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBX
VEY6IHVzZSBGb3J3YXJkLmggd2hlbiBhcHByb3ByaWF0ZSBpbnN0ZWFkIG9mIFZlY3Rvci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDRlNWZiMDM4ZDFkYjlkZmM1MjNjYjQ4MDdhMWRkYjgxOWVhNzRiYTEuLjVlZmRh
OGM1MzEwOThmMTQ5NjYxODk1ZjMzNWY5ZGQwODY4M2EzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjIgQEAKKzIwMTctMDktMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFj
ZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaDogQWRkZWQu
CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmVuYWJsZVNhbmRib3hTdHlsZUZpbGVRdWFyYW50aW5lKToKKyAgICAgICAgKFdlYktp
dDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAgICAgICogU2hhcmVkL21h
Yy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbkltcGw6
OlNhbmRib3hFeHRlbnNpb25JbXBsKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bkltcGw6On5TYW5kYm94RXh0ZW5zaW9uSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb25JbXBsOjpjb25zdW1lKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bkltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uSW1w
bDo6Z2V0U2VyaWFsaXplZEZvcm1hdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlOjp+SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNF
eHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRl
bnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpyZXZva2UpOgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KToKKyAgICAgICAgKFdlYktp
dDo6d2tTYW5kYm94RXh0ZW5zaW9uVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4dGVuc2lvbnNU
b1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzc1By
b3h5OjpnZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bG9hZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmlu
aXNoTGF1bmNoaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2Ft
cGxlcik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorCiAyMDE3
LTA5LTE2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCB0aGUgVG9vbHMgYnVpbGQgd2l0aCBDTWFrZSBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmggYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL1NhbmRib3hTUEkuaAppbmRleCBiMzc4Nzk0MjUyOGU4MjRkYmE2OGQ1NGY2OThmZWE5
YzVlZTI1ZTMyLi5mYTE4YzllYTYzOTI2NGRiNzZkM2QyYmI3MGMyZjVmNDQ4NTJhYzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaApAQCAtNDIsMTEgKzQyLDE4IEBAIGVu
dW0gc2FuZGJveF9maWx0ZXJfdHlwZSB7CiAKIFdURl9FWFRFUk5fQ19CRUdJTgogCitleHRlcm4g
Y29uc3QgY2hhciAqY29uc3QgQVBQX1NBTkRCT1hfUkVBRDsKK2V4dGVybiBjb25zdCBjaGFyICpj
b25zdCBBUFBfU0FOREJPWF9SRUFEX1dSSVRFOwogZXh0ZXJuIGNvbnN0IGVudW0gc2FuZGJveF9m
aWx0ZXJfdHlwZSBTQU5EQk9YX0NIRUNLX05PX1JFUE9SVDsKKworY2hhciAqc2FuZGJveF9leHRl
bnNpb25faXNzdWVfZmlsZShjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIg
KnBhdGgsIHVpbnQzMl90IGZsYWdzKTsKK2NoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2dl
bmVyaWMoY29uc3QgY2hhciAqZXh0ZW5zaW9uX2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CiBpbnQg
c2FuZGJveF9jaGVjayhwaWRfdCwgY29uc3QgY2hhciAqb3BlcmF0aW9uLCBlbnVtIHNhbmRib3hf
ZmlsdGVyX3R5cGUsIC4uLik7CiBpbnQgc2FuZGJveF9jaGVja19ieV9hdWRpdF90b2tlbihhdWRp
dF90b2tlbl90LCBjb25zdCBjaGFyICpvcGVyYXRpb24sIGVudW0gc2FuZGJveF9maWx0ZXJfdHlw
ZSwgLi4uKTsKIGludCBzYW5kYm94X2NvbnRhaW5lcl9wYXRoX2Zvcl9waWQocGlkX3QsIGNoYXIg
KmJ1ZmZlciwgc2l6ZV90IGJ1ZnNpemUpOworaW50IHNhbmRib3hfZXh0ZW5zaW9uX3JlbGVhc2Uo
aW50NjRfdCBleHRlbnNpb25faGFuZGxlKTsKIGludCBzYW5kYm94X2luaXRfd2l0aF9wYXJhbWV0
ZXJzKGNvbnN0IGNoYXIgKnByb2ZpbGUsIHVpbnQ2NF90IGZsYWdzLCBjb25zdCBjaGFyICpjb25z
dCBwYXJhbWV0ZXJzW10sIGNoYXIgKiplcnJvcmJ1Zik7CitpbnQ2NF90IHNhbmRib3hfZXh0ZW5z
aW9uX2NvbnN1bWUoY29uc3QgY2hhciAqZXh0ZW5zaW9uX3Rva2VuKTsKIAogV1RGX0VYVEVSTl9D
X0VORAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGZkZWU1ODE5Nzc5ZmU0NjIy
ZDM5ZTZkMTkzZDhkNDQ3ZGUwZWU2ZDMuLjcyMjI1OGNhYzg0OGRmYWYzOTBlYjlhZjcyZDJiNWE5
NDk1ZmY2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1l
bnQgPSBlbGVtZW50c1tpXTsKICAgICAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBwYXRoID0gZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSA/IGVsZW1lbnQubV9n
ZW5lcmF0ZWRGaWxlbmFtZSA6IGVsZW1lbnQubV9maWxlbmFtZTsKLSAgICAgICAgICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVh
ZE9ubHksIHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnNbZXh0ZW5zaW9uSW5kZXgrK10pOwor
ICAgICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9u
c1tleHRlbnNpb25JbmRleCsrXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
ZW5jb2RlciA8PCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25zOwpAQCAtNjksNyArNjksNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSkg
ewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgcmVxdWVzdFNhbmRib3hFeHRlbnNp
b247Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXF1ZXN0LnVybCgp
LmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCByZXF1ZXN0U2Fu
ZGJveEV4dGVuc2lvbik7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShy
ZXF1ZXN0LnVybCgpLmZpbGVTeXN0ZW1QYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5LCByZXF1ZXN0U2FuZGJveEV4dGVuc2lvbik7CiAgICAgICAgIGVuY29kZXIgPDwgcmVx
dWVzdFNhbmRib3hFeHRlbnNpb247CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzgwZmE0MGQwYjU3N2IwZGRj
NzZiNGU2NWQxYTcwMjU5NWNhYzdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvbWFjL1F1YXJhbnRpbmVTUEkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8cXVhcmFudGluZS5oPgorCisjZWxzZQorCitlbnVt
IHF0bl9mbGFncyB7CisgICAgUVROX0ZMQUdfU0FOREJPWCA9IDB4MDAwMiwKK307CisKKyNkZWZp
bmUgcXRuX3Byb2NfYWxsb2MgX3F0bl9wcm9jX2FsbG9jCisjZGVmaW5lIHF0bl9wcm9jX2FwcGx5
X3RvX3NlbGYgX3F0bl9wcm9jX2FwcGx5X3RvX3NlbGYKKyNkZWZpbmUgcXRuX3Byb2NfZnJlZSBf
cXRuX3Byb2NfZnJlZQorI2RlZmluZSBxdG5fcHJvY19pbml0X3dpdGhfc2VsZiBfcXRuX3Byb2Nf
aW5pdF93aXRoX3NlbGYKKyNkZWZpbmUgcXRuX3Byb2Nfc2V0X2ZsYWdzIF9xdG5fcHJvY19zZXRf
ZmxhZ3MKKworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9xdG5fcHJvYyAqcXRuX3Byb2NfdDsK
KworV1RGX0VYVEVSTl9DX0JFR0lOCisKK2ludCBxdG5fcHJvY19hcHBseV90b19zZWxmKHF0bl9w
cm9jX3QpOworaW50IHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmKHF0bl9wcm9jX3QpOworaW50IHF0
bl9wcm9jX3NldF9mbGFncyhxdG5fcHJvY190LCB1aW50MzJfdCBmbGFncyk7CitxdG5fcHJvY190
IHF0bl9wcm9jX2FsbG9jKCk7Cit2b2lkIHF0bl9wcm9jX2ZyZWUocXRuX3Byb2NfdCk7CisKK1dU
Rl9FWFRFUk5fQ19FTkQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCA1MTA1N2U0OTgyNzcxYmIzM2FlYWIxM2MzNTRk
MDYxNDFhN2UxNGJmLi4yMmE5NmUzZjA3ZThkMmNhN2Y4YzQ0MDIzNmQzNmUyMDA5MjVmN2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zMiwyMCArMzIsMTgg
QEAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotdHlwZWRlZiBzdHJ1Y3QgX19X
S1NhbmRib3hFeHRlbnNpb24qIFdLU2FuZGJveEV4dGVuc2lvblJlZjsKLSNlbmRpZgotCiBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIEVuY29kZXI7CiBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKKyAgICAKK2NsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsOwogCiBjbGFzcyBT
YW5kYm94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewog
cHVibGljOgotICAgIGVudW0gVHlwZSB7CisgICAgZW51bSBjbGFzcyBUeXBlIHsKICAgICAgICAg
UmVhZE9ubHksCiAgICAgICAgIFJlYWRXcml0ZSwKICAgICAgICAgR2VuZXJpYywKQEAgLTU1LDcg
KzUzLDExIEBAIHB1YmxpYzoKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsK
ICAgICBwdWJsaWM6CiAgICAgICAgIEhhbmRsZSgpOworI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVO
U0lPTlMpCisgICAgICAgIEhhbmRsZShIYW5kbGUmJik7CisjZWxzZQogICAgICAgICBIYW5kbGUo
SGFuZGxlJiYpID0gZGVmYXVsdDsKKyNlbmRpZgogICAgICAgICB+SGFuZGxlKCk7CiAKICAgICAg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CkBAIC02NCw3ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2FuZGJveEV4dGVuc2lv
bjsKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgICAgICBtdXRhYmxlIFdLU2Fu
ZGJveEV4dGVuc2lvblJlZiBtX3NhbmRib3hFeHRlbnNpb247CisgICAgICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPFNhbmRib3hFeHRlbnNpb25JbXBsPiBtX3NhbmRib3hFeHRlbnNpb247CiAj
ZW5kaWYKICAgICB9OwogCkBAIC0xMDgsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNp
dCBTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYpOwogICAgICAgICAgICAgICAgICAgICAg
CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICBtdXRhYmxlIFdLU2FuZGJveEV4
dGVuc2lvblJlZiBtX3NhbmRib3hFeHRlbnNpb247CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9w
dHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IG1fc2FuZGJveEV4dGVuc2lvbjsKICAgICBzaXplX3Qg
bV91c2VDb3VudDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQ
cm9jZXNzTWFjLm1tCmluZGV4IDgxYzdmN2E5ZTdlMmU0YzNhNjRjZTg0ZTUzN2Q3MTZiNTU5Yjdi
MjUuLjM1ZWE3ODAwM2I2M2YyYWE1N2MxZTdkNTYwMjQ1N2NiZDlkM2RiMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZVV0aWxzQ0Yu
aCIKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CkBAIC03OCw2ICs3OSwyOCBAQCB2b2lkIENoaWxk
UHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBpbml0aWFsaXplVGltZXJDb2FsZXNj
aW5nUG9saWN5KCk7CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjaGFuZ2VD
dXJyZW50RGlyZWN0b3J5UGF0aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZVBhdGhdXTsK
IH0KKyAgICAKK3N0YXRpYyBPU1N0YXR1cyBlbmFibGVTYW5kYm94U3R5bGVGaWxlUXVhcmFudGlu
ZSgpCit7CisgICAgaW50IGVycm9yOworICAgIHF0bl9wcm9jX3QgcXVhcmFudGluZVByb3BlcnRp
ZXMgPSBxdG5fcHJvY19hbGxvYygpOworICAgIGlmICgoZXJyb3IgPSBxdG5fcHJvY19pbml0X3dp
dGhfc2VsZihxdWFyYW50aW5lUHJvcGVydGllcykpKSB7CisgICAgICAgIHF0bl9wcm9jX2ZyZWUo
cXVhcmFudGluZVByb3BlcnRpZXMpOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorICAg
IAorICAgIGlmICgoZXJyb3IgPSBxdG5fcHJvY19zZXRfZmxhZ3MocXVhcmFudGluZVByb3BlcnRp
ZXMsIFFUTl9GTEFHX1NBTkRCT1gpKSkgeworICAgICAgICBxdG5fcHJvY19mcmVlKHF1YXJhbnRp
bmVQcm9wZXJ0aWVzKTsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKyAgICAKKyAgICAv
LyBRVE5fRkxBR19TQU5EQk9YIGlzIHNpbGVudGx5IGlnbm9yZWQgaWYgc2VjdXJpdHkubWFjLnF0
bi5zYW5kYm94X2VuZm9yY2Ugc3lzY3RsIGlzIDAuCisgICAgLy8gSW4gdGhhdCBjYXNlLCBxdWFy
YW50aW5lIGZhbGxzIGJhY2sgdG8gYWR2aXNvcnkgUVROX0ZMQUdfRE9XTkxPQUQuCisgICAgZXJy
b3IgPSBxdG5fcHJvY19hcHBseV90b19zZWxmKHF1YXJhbnRpbmVQcm9wZXJ0aWVzKTsKKyAgICAK
KyAgICBxdG5fcHJvY19mcmVlKHF1YXJhbnRpbmVQcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gZXJy
b3I7Cit9CiAKIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGls
ZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmIHNhbmRib3hQYXJhbWV0ZXJzKQogewpAQCAtMTcxLDcgKzE5
NCw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmCiAgICAgfQogCiAgICAgLy8gVGhpcyB3aWxs
IG92ZXJyaWRlIExTRmlsZVF1YXJhbnRpbmVFbmFibGVkIGZyb20gSW5mby5wbGlzdCB1bmxlc3Mg
c2FuZGJveCBxdWFyYW50aW5lIGlzIGdsb2JhbGx5IGRpc2FibGVkLgotICAgIE9TU3RhdHVzIGVy
cm9yID0gV0tFbmFibGVTYW5kYm94U3R5bGVGaWxlUXVhcmFudGluZSgpOworICAgIE9TU3RhdHVz
IGVycm9yID0gZW5hYmxlU2FuZGJveFN0eWxlRmlsZVF1YXJhbnRpbmUoKTsKICAgICBpZiAoZXJy
b3IpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgZW5hYmxlIHNhbmRib3gg
c3R5bGUgZmlsZSBxdWFyYW50aW5lOiAlbGRcbiIsIGdldHByb2duYW1lKCksIHN0YXRpY19jYXN0
PGxvbmc+KGVycm9yKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggNDQxZWIxZTE0ODA4
MjMwYWFiNDA0ZjJkNjM5OGQ1MmZlNjRjNDA4OS4uYzg1NDI5ZDRkMjBmZDFiY2NkM2VjMDU4MjE3
ZWZjZDY1OGZkOWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRi
b3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hF
eHRlbnNpb25NYWMubW0KQEAgLTM0LDIzICszNCw4NiBAQAogI2ltcG9ydCAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHN5
cy9zdGF0Lmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgeworcHVibGljOgor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGNyZWF0ZShj
b25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUpCisgICAgeworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IGltcGwgeyBuZXcgU2Fu
ZGJveEV4dGVuc2lvbkltcGwocGF0aCwgdHlwZSkgfTsKKyAgICAgICAgaWYgKCFpbXBsLT5tX3Rv
a2VuKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBpbXBsOwor
ICAgIH0KKworICAgIFNhbmRib3hFeHRlbnNpb25JbXBsKGNvbnN0IGNoYXIqIHNlcmlhbGl6ZWRG
b3JtYXQsIHNpemVfdCBsZW5ndGgpCisgICAgICAgIDogbV90b2tlbiB7IHN0cm5kdXAoc2VyaWFs
aXplZEZvcm1hdCwgbGVuZ3RoKSB9CisgICAgeworICAgIH0KKworICAgIH5TYW5kYm94RXh0ZW5z
aW9uSW1wbCgpCisgICAgeworICAgICAgICBmcmVlKG1fdG9rZW4pOworICAgIH0KKworICAgIGJv
b2wgY29uc3VtZSgpCisgICAgeworICAgICAgICBtX2hhbmRsZSA9IHNhbmRib3hfZXh0ZW5zaW9u
X2NvbnN1bWUobV90b2tlbik7CisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyAgICAgICAg
cmV0dXJuICFzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAwLCBTQU5EQk9YX0ZJTFRFUl9OT05FKTsK
KyNlbHNlCisgICAgICAgIHJldHVybiBtX2hhbmRsZTsKKyNlbmRpZgorICAgIH0KKworICAgIGJv
b2wgaW52YWxpZGF0ZSgpCisgICAgeworICAgICAgICBpbnQgZXJyb3IgPSBzYW5kYm94X2V4dGVu
c2lvbl9yZWxlYXNlKG1faGFuZGxlKTsKKyAgICAgICAgbV9oYW5kbGUgPSAwOworICAgICAgICBy
ZXR1cm4gIWVycm9yOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFNlcmlhbGl6ZWRGb3Jt
YXQoc2l6ZV90JiBsZW5ndGgpCisgICAgeworICAgICAgICBsZW5ndGggPSBzdHJsZW4obV90b2tl
bik7CisgICAgICAgIHJldHVybiBtX3Rva2VuOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uSW1wbChjb25zdCBjaGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
IHR5cGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seToKKyAgICAgICAgICAgIG1fdG9rZW4gPSBzYW5k
Ym94X2V4dGVuc2lvbl9pc3N1ZV9maWxlKEFQUF9TQU5EQk9YX1JFQUQsIHBhdGgsIDApOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZToKKyAgICAgICAgICAgIG1fdG9rZW4gPSBzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9m
aWxlKEFQUF9TQU5EQk9YX1JFQURfV1JJVEUsIHBhdGgsIDApOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OkdlbmVyaWM6CisgICAgICAg
ICAgICBtX3Rva2VuID0gc2FuZGJveF9leHRlbnNpb25faXNzdWVfZ2VuZXJpYyhwYXRoLCAwKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNoYXIqIG1fdG9r
ZW4geyBudWxscHRyIH07CisgICAgaW50NjRfdCBtX2hhbmRsZSB7IDAgfTsKK307CisKIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZTo6SGFuZGxlKCkKLSAgICA6IG1fc2FuZGJveEV4dGVuc2lvbigw
KQogewogfQotICAgIAorCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OkhhbmRsZShIYW5kbGUm
JikgPSBkZWZhdWx0OworCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUoKQogewot
ICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgV0tTYW5kYm94RXh0ZW5zaW9u
SW52YWxpZGF0ZShtX3NhbmRib3hFeHRlbnNpb24pOwotICAgICAgICBXS1NhbmRib3hFeHRlbnNp
b25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgfQorICAgIGlmIChtX3NhbmRib3hF
eHRlbnNpb24pCisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0ZSgpOwogfQog
CiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKQEAgLTYxLDEzICsxMjQsMTIgQEAgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgfQogCiAgICAg
c2l6ZV90IGxlbmd0aCA9IDA7Ci0gICAgY29uc3QgY2hhciAqc2VyaWFsaXplZEZvcm1hdCA9IFdL
U2FuZGJveEV4dGVuc2lvbkdldFNlcmlhbGl6ZWRGb3JtYXQobV9zYW5kYm94RXh0ZW5zaW9uLCAm
bGVuZ3RoKTsKKyAgICBjb25zdCBjaGFyKiBzZXJpYWxpemVkRm9ybWF0ID0gbV9zYW5kYm94RXh0
ZW5zaW9uLT5nZXRTZXJpYWxpemVkRm9ybWF0KGxlbmd0aCk7CiAgICAgQVNTRVJUKHNlcmlhbGl6
ZWRGb3JtYXQpOwogCiAgICAgZW5jb2RlciA8PCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc2VyaWFsaXplZEZvcm1hdCksIGxlbmd0aCk7CiAKICAg
ICAvLyBFbmNvZGluZyB3aWxsIGRlc3Ryb3kgdGhlIHNhbmRib3ggZXh0ZW5zaW9uIGxvY2FsbHku
Ci0gICAgV0tTYW5kYm94RXh0ZW5zaW9uRGVzdHJveShtX3NhbmRib3hFeHRlbnNpb24pOwogICAg
IG1fc2FuZGJveEV4dGVuc2lvbiA9IDA7CiB9CiAKQEAgLTgyLDcgKzE0NCw3IEBAIGJvb2wgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBIYW5k
bGUmIHJlc3VsdCkKICAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgcmVzdWx0Lm1fc2FuZGJveEV4dGVuc2lvbiA9IFdLU2FuZGJveEV4
dGVuc2lvbkNyZWF0ZUZyb21TZXJpYWxpemVkRm9ybWF0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAg
IHJlc3VsdC5tX3NhbmRib3hFeHRlbnNpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRl
bnNpb25JbXBsPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRh
dGEoKSksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTUyLDIxICsyMTQsNiBAQCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2FuZGJveEV4dGVuc2lvbihoYW5kbGUpKTsKIH0KIAotc3RhdGljIFdLU2FuZGJveEV4dGVuc2lv
blR5cGUgd2tTYW5kYm94RXh0ZW5zaW9uVHlwZShTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUp
Ci17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpSZWFk
T25seToKLSAgICAgICAgcmV0dXJuIFdLU2FuZGJveEV4dGVuc2lvblR5cGVSZWFkT25seTsKLSAg
ICBjYXNlIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZToKLSAgICAgICAgcmV0dXJuIFdLU2Fu
ZGJveEV4dGVuc2lvblR5cGVSZWFkV3JpdGU7Ci0gICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpH
ZW5lcmljOgotICAgICAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uVHlwZUdlbmVyaWM7Ci0K
LSAgICB9Ci0KLSAgICBDUkFTSCgpOwotfQotCiBzdGF0aWMgQ1N0cmluZyByZXNvbHZlU3ltbGlu
a3NJblBhdGgoY29uc3QgQ1N0cmluZyYgcGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBzdGF0QnVm
OwpAQCAtMjQ1LDcgKzI5Miw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBUeXBlCiB7CiAgICAgQVNT
RVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKTsKIAotICAgIGhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24gPSBXS1NhbmRib3hFeHRlbnNpb25DcmVhdGUocGF0aC51dGY4KCkuZGF0YSgpLCB3
a1NhbmRib3hFeHRlbnNpb25UeXBlKHR5cGUpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShwYXRoLnV0ZjgoKS5kYXRhKCksIHR5
cGUpOwogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgJyVzJyIsIHBh
dGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2Niw3ICszMTMs
NyBAQCBib29sIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFNhbgogICAgIGlmIChyZXNvbHZlZFBhdGguaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNhbmRib3hF
eHRlbnNpb246OlJlYWRXcml0ZSwgaGFuZGxlKTsKKyAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocmVzb2x2ZWRQYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGhhbmRsZSk7CiB9CiAKIFN0cmluZyBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJl
Zml4LCBUeXBlIHR5cGUsIEhhbmRsZSYgaGFuZGxlKQpAQCAtMjg5LDcgKzMzNiw3IEBAIFN0cmlu
ZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBUeXBlCiAgICAgcGF0aC5hcHBlbmQocHJlZml4LnV0ZjgoKS5kYXRhKCks
IHByZWZpeC5sZW5ndGgoKSk7CiAgICAgcGF0aC5hcHBlbmQoJ1wwJyk7CiAgICAgCi0gICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFdLU2FuZGJveEV4dGVuc2lvbkNyZWF0ZShmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEoKSwgd2tTYW5kYm94RXh0ZW5zaW9u
VHlwZSh0eXBlKSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRl
bnNpb25JbXBsOjpjcmVhdGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGguZGF0YSgpKS5k
YXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9u
IGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkpOwpAQCAtMzAyLDcgKzM0OSw3
IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lv
bihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbkNsCiB7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uKTsKIAotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBXS1NhbmRi
b3hFeHRlbnNpb25DcmVhdGUoZXh0ZW5zaW9uQ2xhc3MudXRmOCgpLmRhdGEoKSwgd2tTYW5kYm94
RXh0ZW5zaW9uVHlwZShUeXBlOjpHZW5lcmljKSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVu
c2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoZXh0ZW5zaW9uQ2xhc3MudXRmOCgp
LmRhdGEoKSwgVHlwZTo6R2VuZXJpYyk7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBhICclcycgc2Fu
ZGJveCBleHRlbnNpb24iLCBleHRlbnNpb25DbGFzcy51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzEyLDEwICszNTksOSBAQCBib29sIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb25D
bAogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYg
aGFuZGxlKQotICAgIDogbV9zYW5kYm94RXh0ZW5zaW9uKGhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24pCisgICAgOiBtX3NhbmRib3hFeHRlbnNpb24oV1RGTW92ZShoYW5kbGUubV9zYW5kYm94RXh0
ZW5zaW9uKSkKICAgICAsIG1fdXNlQ291bnQoMCkKIHsKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0
ZW5zaW9uID0gMDsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNpb24oKQpA
QCAtMzI0LDcgKzM3MCw2IEBAIFNhbmRib3hFeHRlbnNpb246On5TYW5kYm94RXh0ZW5zaW9uKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX3VzZUNvdW50KTsKLSAgICBXS1NhbmRi
b3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7CiB9CiAKIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6cmV2b2tlKCkKQEAgLTMzNSw3ICszODAsNyBAQCBib29sIFNhbmRib3hFeHRl
bnNpb246OnJldm9rZSgpCiAgICAgaWYgKC0tbV91c2VDb3VudCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uSW52YWxpZGF0ZShtX3NhbmRib3hF
eHRlbnNpb24pOworICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNpb24tPmludmFsaWRhdGUoKTsK
IH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkKQEAgLTM0NSwxOCArMzkwLDE3
IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZSgpCiAgICAgaWYgKG1fdXNlQ291bnQr
KykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9u
Q29uc3VtZShtX3NhbmRib3hFeHRlbnNpb24pOworICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNp
b24tPmNvbnN1bWUoKTsKIH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkoKQogewogICAgIEFTU0VSVChtX3NhbmRib3hFeHRlbnNpb24pOwogCi0gICAgYm9vbCBy
ZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25Db25zdW1lKG1fc2FuZGJveEV4dGVuc2lvbik7Cisg
ICAgYm9vbCByZXN1bHQgPSBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKIAogICAgIC8v
IERlc3Ryb3kgdGhlIGV4dGVuc2lvbiB3aXRob3V0IGludmFsaWRhdGluZyBpdC4KLSAgICBXS1Nh
bmRib3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgbV9zYW5kYm94
RXh0ZW5zaW9uID0gMDsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTM2NiwxMSArNDEwLDEwIEBAIGJvb2wgU2FuZGJveEV4dGVu
c2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogICAgIGlmICgh
aGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ym9vbCByZXN1bHQgPSBXS1NhbmRib3hFeHRlbnNpb25Db25zdW1lKGhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pOworICAgIGJvb2wgcmVzdWx0ID0gaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbi0+
Y29uc3VtZSgpOwogICAgIAogICAgIC8vIERlc3Ryb3kgdGhlIGV4dGVuc2lvbiB3aXRob3V0IGlu
dmFsaWRhdGluZyBpdC4KLSAgICBXS1NhbmRib3hFeHRlbnNpb25EZXN0cm95KGhhbmRsZS5tX3Nh
bmRib3hFeHRlbnNpb24pOwotICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSAwOworICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBudWxscHRyOwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0KaW5kZXggZDUwYjMzZGNjY2Q5YTU0Yzc5ZjA0MDI1ZWY5MTI1YjJhNGIyZTYzMC4u
MjYxZTg1MTdjOTdhMTJhYTk1YzRiODE0OGU4ZTAwNTUyZTZjNzg5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVk
ZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzLAogICAgIGlmIChmaWxlcy5zaXplKCkgPT0g
MSkgewogICAgICAgICBCT09MIGlzRGlyZWN0b3J5OwogICAgICAgICBpZiAoW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5
OiZpc0RpcmVjdG9yeV0gJiYgIWlzRGlyZWN0b3J5KSB7Ci0gICAgICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgZmls
ZVJlYWRIYW5kbGUpOworICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVSZWFkSGFuZGxlKTsK
ICAgICAgICAgICAgIHByb2Nlc3MoKS53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtOTksNyArOTksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZXMsCiAgICAgICAgIE5TU3RyaW5nICpmaWxlID0gZmlsZXNbaV07CiAgICAg
ICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OmZpbGVdKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgZmlsZVVwbG9h
ZEhhbmRsZXNbaV0pOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmls
ZSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIGZpbGVVcGxvYWRIYW5kbGVzW2ld
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGJkNTdhN2NiN2Y5NjU3ZWY1MWJjNTExZGVhNGNl
MTU3ZWE4NzhlYmIuLmYwN2JiZmJkZThkODAxYjIyZjk0M2RhYmJlYjNiZTFkMGMwZDFmNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQpAQCAtMjAxLDE5ICsyMDEsMTkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJgogCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBiZSBjb25maWd1cmFibGU7IHdlIHNob3Vs
ZG4ndCBqdXN0IGJsaW5kbHkgYWxsb3cgcmVhZCBhY2Nlc3MgdG8gdGhlIFVJIHByb2Nlc3MgYnVu
ZGxlLgogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoID0gbV9yZXNv
bHZlZFBhdGhzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aDsKLSAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLnVpUHJvY2Vz
c0J1bmRsZVJlc291cmNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRl
cnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJz
LnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZE9ubHksIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKIAogICAgIHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFN0cmlu
ZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIAogI2lmIFBMQVRG
T1JNKElPUykKICAgICBpZiAoIW1fcmVzb2x2ZWRQYXRocy5jb29raWVTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91
dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnksIFNh
bmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb29r
aWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmICghbV9yZXNvbHZl
ZFBhdGhzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQ
YXRocy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0
ZSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0
aChtX3Jlc29sdmVkUGF0aHMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmICghbV9yZXNvbHZlZFBhdGhzLmNvbnRhaW5lclRl
bXBvcmFyeURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJU
ZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVy
cy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29s
dmVkUGF0aHMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuY29udGFpbmVyVGVtcG9yYXJ5RGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCiAgICAgcGFyYW1ldGVycy5mb250V2hpdGVsaXN0ID0g
bV9mb250V2hpdGVsaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IGMyNjE4YTIwN2ExMGNmMzcxNTBiZTFmYmZiODE2
ZWY3YjQ3MWNkOGEuLjdkOTI1ZGQ5NjAzMjc3YzYxYmMwMGUwYjdmYTYxNjhlMzA0OGU4MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3dubAogICAgIAog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAg
IGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdv
cmtQcm9jZXNzID0gbV9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKICAgICAgICAgbmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZURlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSksIDApOwpAQCAtMjI0LDcgKzIyNCw3
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtCiAgICAgZGVzdGluYXRpb24gPSBtX3Byb2Nlc3NQ
b29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBhbGxvd092
ZXJ3cml0ZSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQotICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246
OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6
UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCA5MWJhOWEwNjYzMjMxMDhlMTY3OTZhYjY0NmMxM2JkZDQ4MmIwYWQxLi5hNjBi
NDQwMjFkYmExZGRjYjRhMTUzNzU4YjE4MTVkM2VkMDQzOGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTI5Niw3ICsyOTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdyYW50U2FuZGJveEV4
dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0XwogICAgIGV4dGVuc2lvbnMu
YWxsb2NhdGUocGF0aHMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIC8vIFJlYWRXcml0ZSBpcyByZXF1aXJlZCBmb3IgY3Jl
YXRpbmcgaGFyZCBsaW5rcyBhcyB3ZWxsIGFzIGRlbGV0aW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSwg
d2hpY2ggdGhlIFN0b3JhZ2VQcm9jZXNzIHdpbGwgZG8uCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZShwYXRoc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBl
eHRlbnNpb25zW2ldKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBh
dGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIGV4dGVuc2lvbnNbaV0p
OwogICAgIH0KIAogICAgIG1fcHJvY2Vzc1Bvb2wuc2VuZFRvU3RvcmFnZVByb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6R3JhbnRTYW5kYm94RXh0
ZW5zaW9uc0ZvckJsb2JzKHBhdGhzLCBleHRlbnNpb25zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
NWFhODExOGMxMTZhY2Q5MGUyM2NkNzY0ODA1MjY0MmY5NjkyNjBkLi41NWNmZmY1MzU2ZThmZWNk
M2NhM2MzY2VlYTlkMzNjYjJkNDIyNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKQEAgLTE5OCw3ICsxOTgs
NyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzUHJveHk6OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxv
YkZpbGVzKHVpbnQ2NF90IHJlcXVlc3RJRCwgYwogICAgIGV4dGVuc2lvbnMuYWxsb2NhdGUocGF0
aHMuc2l6ZSgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhdGhzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIC8vIFJlYWRXcml0ZSBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcgaGFyZCBs
aW5rcywgd2hpY2ggaXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYmUgZG9uZSB3aXRoIHRoZXNlIGV4
dGVuc2lvbnMuCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoc1tp
XSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBleHRlbnNpb25zW2ldKTsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkV3JpdGUsIGV4dGVuc2lvbnNbaV0pOwogICAgIH0KIAogICAgIHNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRHZXRTYW5kYm94RXh0ZW5zaW9uc0ZvckJsb2JGaWxl
cyhyZXF1ZXN0SUQsIGV4dGVuc2lvbnMpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDU3Y2ZiYzA5ZWYzMmZlMjFmYmU1ODQyMTYxMWQ0ZTc0Y2E0YWMy
MmYuLmE3OTk4ZWJhODgxYTRlY2Q1NzZjNmRkMDM5OWJhZmJiMTU2Y2Y1NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODE2LDcgKzgxNiw3IEBAIGJvb2wg
V2ViUGFnZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0
IFVSTCYgdXJsLCBTYW5kYm94CiAgICAgLy8gSW5zcGVjdG9yIHJlc291cmNlcyBhcmUgaW4gYSBk
aXJlY3Rvcnkgd2l0aCBhc3N1bWVkIGFjY2Vzcy4KICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTighV2ViS2l0Ojppc0luc3BlY3RvclBhZ2UoKnRoaXMpKTsKIAotICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg5MSw3ICs4OTEsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBmaWxl
VVJMOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSAo
dWludDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3c7CiAg
ICAgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwotICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJl
YWRPbmx5LCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocmVzb3VyY2VEaXJlY3RvcnlQYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7
CiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwocmVzb3VyY2VEaXJl
Y3RvcnlVUkwpOwpAQCAtNDc1MCw3ICs0NzUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
czsKICAgICBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShmaWxlVVJMcy5zaXplKCkp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVVSTHMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlVVJMc1tpXSwgU2FuZGJveEV4
dGVuc2lvbjo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKTsKKyAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNG
cm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOwogI2VuZGlm
CkBAIC00NzcxLDcgKzQ3NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzKQogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzOwogICAgIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKGZpbGVVUkxzLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkgewotICAgICAgICBib29sIGNy
ZWF0ZWRFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVVSTHNb
aV0sIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tp
XSk7CisgICAgICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZShmaWxlVVJMc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHks
IHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKTsKICAgICAgICAgaWYgKCFjcmVhdGVkRXh0ZW5z
aW9uKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGNhbiBsZWdpdGltYXRlbHkgZmFpbCBpZiBhIGRp
cmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlIGlzIGRlbGV0ZWQgYWZ0ZXIgdGhlIGZpbGUgd2Fz
IGNob3Nlbi4KICAgICAgICAgICAgIC8vIFdlIGFsc28gaGF2ZSByZXBvcnRzIG9mIGNhc2VzIHdo
ZXJlIHRoaXMgbGlrZWx5IGZhaWxzIGZvciBzb21lIHVua25vd24gcmVhc29uLCA8cmRhcjovL3By
b2JsZW0vMTAxNTY3MTA+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDk4ZjY4YTdkNDc5ZTU4ZTYxNDgyNjQxMDI1NmFlNWE4MzE1MGZjOWYuLjZkMjll
MTNkN2RlNDIwMzRhYzVlNzE4NjZlYmZjOWM0YmFjMGM5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTQ1Niw3ICs0NTYsNyBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSogd2l0aAogCiAgICAgU3RyaW5nIHBhcmVudEJ1bmRsZURpcmVjdG9yeSA9IHRoaXMt
PnBhcmVudEJ1bmRsZURpcmVjdG9yeSgpOwogICAgIGlmICghcGFyZW50QnVuZGxlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhcmVu
dEJ1bmRsZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRlcnMu
cGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhcmVudEJ1bmRsZURpcmVjdG9yeSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHksIHBhcmFtZXRlcnMucGFyZW50QnVuZGxlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKICNlbmRpZgogCiAjaWYgT1MoTElOVVgpCkBAIC02NjEsMTcgKzY2MSwx
NyBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNz
KFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYQogCiAgICAgcGFyYW1ldGVycy5pbmplY3RlZEJ1
bmRsZVBhdGggPSBtX3Jlc29sdmVkUGF0aHMuaW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIGlmICgh
cGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmlu
amVjdGVkQnVuZGxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRlcnMu
aW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5pbmplY3Rl
ZEJ1bmRsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBwYXJhbWV0ZXJz
LmluamVjdGVkQnVuZGxlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLmFk
ZGl0aW9uYWxTYW5kYm94RXh0ZW5zaW9uSGFuZGxlcy5hbGxvY2F0ZShtX3Jlc29sdmVkUGF0aHMu
YWRkaXRpb25hbFdlYlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHMuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG1fcmVzb2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJv
Y2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1fcmVz
b2x2ZWRQYXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRoc1tpXSwg
U2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRlcnMuYWRkaXRpb25hbFNhbmRib3hF
eHRlbnNpb25IYW5kbGVzW2ldKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9j
ZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
T25seSwgcGFyYW1ldGVycy5hZGRpdGlvbmFsU2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwog
CiAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFT
dG9yZS5yZXNvbHZlZEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBpZiAocGFyYW1l
dGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gbV9yZXNvbHZlZFBhdGhzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRl
cnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJh
bWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUgPSBtX2NvbmZp
Z3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUoKTsKIApA
QCAtNjc5LDE5ICs2NzksMTkgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGEKICAgICBpZiAocGFy
YW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHBhcmFt
ZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMud2ViU1FMRGF0
YWJhc2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0
aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSwgU2Fu
ZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIHBhcmFtZXRlcnMubWVkaWFD
YWNoZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRNZWRpYUNhY2hlRGlyZWN0
b3J5KCk7CiAgICAgaWYgKHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRo
cy5tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUNhY2hlRGly
ZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LCBTYW5k
Ym94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdp
dGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnkgPSB3ZWJzaXRlRGF0YVN0b3JlLnJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCk7CiAg
ICAgaWYgKHBhcmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0
aHMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5OwogICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLm1lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFL
ZXlTdG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBh
cmFtZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogI2lm
IFBMQVRGT1JNKElPUykKICAgICBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVk
RnJvbURlZmF1bHRzKCk7CkBAIC03MDAsNyArNzAwLDcgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRl
RGEKICAgICBpZiAoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25GaWxlRW5hYmxlZCgpKSB7CiAgICAg
ICAgIHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB3ZWJzaXRl
RGF0YVN0b3JlLnJlc29sdmVkSmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKICAg
ICAgICAgaWYgKCFwYXJhbWV0ZXJzLmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhv
dXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnksIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmph
dmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkV3JpdGUsIHBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpOwogICAgIH0KIAogICAgIHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05l
dHdvcmtTZXNzaW9uID0gbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CkBAIC04NTQs
NyArODU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGlu
ZyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW1wbGVMb2dTYW5kYm94SGFuZGxlOyAgICAgICAgCiAgICAgICAgIGRvdWJsZSBub3cg
PSBXVEY6OmN1cnJlbnRUaW1lKCk7CiAgICAgICAgIFN0cmluZyBzYW1wbGVMb2dGaWxlUGF0aCA9
IFN0cmluZzo6Zm9ybWF0KCJXZWJQcm9jZXNzJWxsdXBpZCVkIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihub3cpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICAg
ICAgc2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JU
ZW1wb3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3Jp
dGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUpOworICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9n
RmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2Fu
ZGJveEhhbmRsZSk7CiAgICAgICAgIAogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRsZSwgc2Ft
cGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKSwgMCk7CiAgICAgfQpAQCAt
MTAzNSw3ICsxMDM1LDcgQEAgRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURv
d25sb2FkKGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3QKIAogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgIGlmICghcGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmIChu
ZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJZiB3ZSBzdGFydGVkIGEgZG93
bmxvYWQgaW4gYW4gZXBoZW1lcmFsIHNlc3Npb24gYW5kIHRoYXQgc2Vzc2lvbiBzdGlsbCBleGlz
dHMsIHdlIHNob3VsZCBmaW5kIGEgd2F5IHRvIHVzZSB0aGF0IHNhbWUgc2Vzc2lvbi4KQEAgLTEy
NzYsNyArMTI3Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN0YXJ0TWVtb3J5U2FtcGxlcihj
b25zdCBkb3VibGUgaW50ZXJ2YWwpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbXBs
ZUxvZ1NhbmRib3hIYW5kbGU7ICAgIAogICAgIGRvdWJsZSBub3cgPSBXVEY6OmN1cnJlbnRUaW1l
KCk7CiAgICAgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU3RyaW5nOjpmb3JtYXQoIldlYlBy
b2Nlc3MlbGx1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cpKTsKLSAgICBz
YW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBv
cmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwg
c2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7CisgICAgc2FtcGxlTG9nRmlsZVBhdGggPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKHNhbXBsZUxvZ0ZpbGVQYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbXBsZUxvZ1NhbmRib3hIYW5k
bGUpOwogICAgIAogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U3RhcnRNZW1vcnlTYW1wbGVyKHNhbXBsZUxvZ1NhbmRib3hIYW5kbGUsIHNhbXBsZUxvZ0ZpbGVQ
YXRoLCBpbnRlcnZhbCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZmQxOTlkOTU0MDFhOWEwOTUwYWI1MDE1MGVhYTY5OTEzNTUx
ODE3Yy4uOWRiMWZiYzlhM2I1YmM2ZmUyY2U5NGVhMWFmYzdjNTE2YzJlNTFiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw4ICs4
OSw4IEBACiAJCTBGODUwRkU2MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dp
bmdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY4NTBGRTQxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVu
dC5jcHAgKi87IH07CiAJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQuaCAqLzsgfTsKIAkJMEY5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi87IH07Ci0JCTBGOTMxQzFEMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUIxOEM1NzEx
OTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi87
IH07CiAJCTBGOTMxQzFDMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjkzMUMxQTE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5oICovOyB9OworCQkwRjkzMUMxRDE4QzU3MTE5MDBEQkE3QzMgLyog
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAv
KiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovOyB9OwogCQkwRjkz
MUMxRDE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
OTMxQzFCMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLm1tICovOyB9OwogCQkwRkI2NTkyMzEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0Fy
ZWFJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi87IH07CiAJCTBG
Q0I0RTQ2MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFMzYxOEJCRTA0NDAwMEZD
RkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggKi87IH07CkBAIC0xNDkyLDYgKzE0OTIsNyBAQAog
CQlBMUQ0MjA0NzFEQjU1Nzg1MDBCQjZCMEQgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjM1MURB
QkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwICovOyB9OwogCQlBMURG
NjMxMjE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEg
LyogRG93bmxvYWRDbGllbnQubW0gKi87IH07CiAJCUExREY2MzEzMThFMEI3QzgwMDNBM0UyQSAv
KiBEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggKi87
IH07CisJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUU2ODg2RjFGNkUyQkFC
MDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oICovOyB9OwogCQlBMUVBMDIzODFEQUJGRjdFMDA5
NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVBMDIzNjFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250
ZXh0TWVudUxpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQTFFQTAyM0YxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlz
dGVuZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUVBMDIzRDFEQUMzMURCMDA5NjAyMUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclBy
b3h5LmNwcCAqLzsgfTsKIAkJQTFFQTAyNDAxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRN
ZW51TGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFFQTAyM0UxREFDMzFEQjAwOTYwMjFGIC8qIFdlYkNvbnRleHRNZW51TGlzdGVu
ZXJQcm94eS5oICovOyB9OwpAQCAtMjI5OCw4ICsyMjk5LDggQEAKIAkJMEY4NTBGRTQxRUQ3QzM5
RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg1MEZFNTFFRDdDMzlGMDBGQjc3QTcg
LyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUExOEM1NzExOTAwREJCOEQ0IC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyog
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFCMThDNTcxMTkw
MERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNjU5
MjIxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEZDMDg1NkUxODdDRTBBOTAwNzgwRDg2IC8qIF9faW5pdF9fLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBuYW1lID0gX19pbml0X18ucHk7IHBhdGggPSB3ZWJraXQvX19pbml0X18ucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zODQzLDYgKzM4NDQsNyBAQAogCQlBMUM1MTJDNzE5
MDY1NkU1MDA0NDg5MTQgLyogV2ViUHJldmlld0xvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg7IHBhdGggPSBpb3Mv
V2ViUHJldmlld0xvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZENsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2Fk
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRTY4ODZGMUY2RTJCQUIwMDcwMDZB
NiAvKiBRdWFyYW50aW5lU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YXJhbnRpbmVTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdL
Q29udGV4dE1lbnVMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMUVBMDIzNjFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dE1lbnVMaXN0ZW5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUVBMDIzRDFEQUMzMURCMDA5NjAyMUYg
LyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjY1LDYgKzY2NjcsMTQgQEAKIAkJCXBhdGggPSBpb3M7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMUU2ODg2RTFGNkUyQjgyMDA3
MDA2QTYgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlBMUU2ODg2RjFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQSS5oICovLAorCQkJ
KTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlB
NzhDQ0RENTE5M0FDOUUzMDA1RUNDMjUgLyogU2FuZGJveFByb2ZpbGVzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTgxNDIsNiArODE1Miw3IEBACiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQkzNzU0RDU0MTFCM0EyOTk4MDAzQTRDN0YgLyogQ29jb2EgKi8sCiAJ
CQkJQ0UxQTBCQ0IxQTQ4RTZDNjAwNTRFRjc0IC8qIGlvcyAqLywKKwkJCQlBMUU2ODg2RTFGNkUy
QjgyMDA3MDA2QTYgLyogbWFjICovLAogCQkJKTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtODY5NCw2ICs4NzA1LDcgQEAKIAkJCQk0NjNGRDQ4MjFFQjk0
RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRTY4ODcwMUY2RTJCQUIwMDcwMDZBNiAv
KiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE4QTlFRjE5MDdBRDZGMDBG
N0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3
QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCmluZGV4IDM0NmQy
NDk0NzVhNTM5MzFkNWFmZjE1NzU5YjgzODQ1MmE2NjYzMDkuLmFkZjg1MjI2YTc1ZDMyZmI0OGUw
OTdlZjE4NWI1NGJkMjdlNWMyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCwgUmVmPEJsb2JEYXQKIAogICAgIC8vIEZpbGUgcGF0aCBjYW4gYmUgZW1wdHkgd2hl
biBzdWJtaXR0aW5nIGEgZm9ybSBmaWxlIGlucHV0IHdpdGhvdXQgYSBmaWxlLCBzZWUgYnVnIDEx
MTc3OC4KICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hFeHRlbnNpb246OlJl
YWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUoZmlsZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwg
ZXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtD
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgZmlsZS0+cGF0aCgpLCBleHRl
bnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321134</attachid>
            <date>2017-09-18 14:52:26 -0700</date>
            <delta_ts>2017-09-18 15:35:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177047-20170918145226.patch</filename>
            <type>text/plain</type>
            <size>44563</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUyZjQ2ZGRiOWY0MjhjMWMyYjgxM2Ni
YzA3YmY4YjRjNmNjZjE4N2IuLjkyMDM2YWY2ODE2OWVmYWVmNDQ1ZjJiMGI5Y2IwZGQ4OTY1MjJl
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDktMTYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdl
YktpdFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzA0NworCisgICAgICAgIFJldmlld2VkIGJ5IERhbmll
bCBCYXRlcy4KKworICAgICAgICAqIHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaDoKKwogMjAx
Ny0wOS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxs
b3cgV1RGOjptYXAgdG8gdXNlIGFueSBjbGFzcyB0aGF0IGlzIGl0ZXJhYmxlIGFuZCBoYXMgYSBz
aXplIGdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNDhhMjVhMGIxZDU4NGI4MGNlZDViMTc1MTE0ODgxNzE0
OWRjZTYyLi42MzhiYzBkNTNlNDljNWNjZGMzODllODNiYTkxNDBjZTg0NTUwOWZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDYyIEBACisyMDE3LTA5LTE2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwc3RyZWFtIHNhbmRib3gtcmVsYXRlZCBXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzcwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwgQmF0
ZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIFBsYXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQ
SS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6ZW5hYmxlU2FuZGJveFN0eWxlRmlsZVF1YXJhbnRpbmUpOgorICAg
ICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKyAgICAgICAg
KiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uSW1wbDo6U2FuZGJveEV4dGVuc2lvbkltcGwpOgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uSW1wbDo6flNhbmRib3hFeHRlbnNpb25JbXBsKToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbkltcGw6OmNvbnN1bWUpOgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uSW1wbDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb25JbXBsOjpnZXRTZXJpYWxpemVkRm9ybWF0KToKKyAgICAgICAgKFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU6On5IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgpOgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3Jh
cnlGaWxlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yR2VuZXJpY0V4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OlNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjp+
U2FuZGJveEV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OnJl
dm9rZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OmNvbnN1bWUpOgorICAg
ICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkpOgorICAg
ICAgICAoV2ViS2l0Ojp3a1NhbmRib3hFeHRlbnNpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUFzeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5kYm94
RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyk6CisgICAgICAgICogVUlQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3Jh
Z2VQcm9jZXNzUHJveHk6OmdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxvYkZpbGVzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjptYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpj
cmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c3Rh
cnRNZW1vcnlTYW1wbGVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVS
TCk6CisKIDIwMTctMDktMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gVXBzdHJlYW0gV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJ
bmZvcm1hdGlvbigpIGZyb20gV2ViS2l0U3lzdGVtSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaCBiL1NvdXJjZS9XVEYvd3RmL3NwaS9k
YXJ3aW4vU2FuZGJveFNQSS5oCmluZGV4IGIzNzg3OTQyNTI4ZTgyNGRiYTY4ZDU0ZjY5OGZlYTlj
NWVlMjVlMzIuLmZhMThjOWVhNjM5MjY0ZGI3NmQzZDJiYjcwYzJmNWY0NDg1MmFjN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCkBAIC00MiwxMSArNDIsMTggQEAgZW51
bSBzYW5kYm94X2ZpbHRlcl90eXBlIHsKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKK2V4dGVybiBj
b25zdCBjaGFyICpjb25zdCBBUFBfU0FOREJPWF9SRUFEOworZXh0ZXJuIGNvbnN0IGNoYXIgKmNv
bnN0IEFQUF9TQU5EQk9YX1JFQURfV1JJVEU7CiBleHRlcm4gY29uc3QgZW51bSBzYW5kYm94X2Zp
bHRlcl90eXBlIFNBTkRCT1hfQ0hFQ0tfTk9fUkVQT1JUOworCitjaGFyICpzYW5kYm94X2V4dGVu
c2lvbl9pc3N1ZV9maWxlKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cGF0aCwgdWludDMyX3QgZmxhZ3MpOworY2hhciAqc2FuZGJveF9leHRlbnNpb25faXNzdWVfZ2Vu
ZXJpYyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIGludCBz
YW5kYm94X2NoZWNrKHBpZF90LCBjb25zdCBjaGFyICpvcGVyYXRpb24sIGVudW0gc2FuZGJveF9m
aWx0ZXJfdHlwZSwgLi4uKTsKIGludCBzYW5kYm94X2NoZWNrX2J5X2F1ZGl0X3Rva2VuKGF1ZGl0
X3Rva2VuX3QsIGNvbnN0IGNoYXIgKm9wZXJhdGlvbiwgZW51bSBzYW5kYm94X2ZpbHRlcl90eXBl
LCAuLi4pOwogaW50IHNhbmRib3hfY29udGFpbmVyX3BhdGhfZm9yX3BpZChwaWRfdCwgY2hhciAq
YnVmZmVyLCBzaXplX3QgYnVmc2l6ZSk7CitpbnQgc2FuZGJveF9leHRlbnNpb25fcmVsZWFzZShp
bnQ2NF90IGV4dGVuc2lvbl9oYW5kbGUpOwogaW50IHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRl
cnMoY29uc3QgY2hhciAqcHJvZmlsZSwgdWludDY0X3QgZmxhZ3MsIGNvbnN0IGNoYXIgKmNvbnN0
IHBhcmFtZXRlcnNbXSwgY2hhciAqKmVycm9yYnVmKTsKK2ludDY0X3Qgc2FuZGJveF9leHRlbnNp
b25fY29uc3VtZShjb25zdCBjaGFyICpleHRlbnNpb25fdG9rZW4pOwogCiBXVEZfRVhURVJOX0Nf
RU5ECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggZmRlZTU4MTk3NzlmZTQ2MjJk
MzllNmQxOTNkOGQ0NDdkZTBlZTZkMy4uNzIyMjU4Y2FjODQ4ZGZhZjM5MGViOWFmNzJkMmI1YTk0
OTVmZjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICAgICAgICAgIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVu
dCA9IGVsZW1lbnRzW2ldOwogICAgICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUpIHsKICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHBhdGggPSBlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gZWxlbWVudC5tX2dl
bmVyYXRlZEZpbGVuYW1lIDogZWxlbWVudC5tX2ZpbGVuYW1lOwotICAgICAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFk
T25seSwgcmVxdWVzdEJvZHlTYW5kYm94RXh0ZW5zaW9uc1tleHRlbnNpb25JbmRleCsrXSk7Cisg
ICAgICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCByZXF1ZXN0Qm9keVNhbmRib3hFeHRlbnNpb25z
W2V4dGVuc2lvbkluZGV4KytdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBl
bmNvZGVyIDw8IHJlcXVlc3RCb2R5U2FuZGJveEV4dGVuc2lvbnM7CkBAIC02OSw3ICs2OSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAocmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpKSB7
CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSByZXF1ZXN0U2FuZGJveEV4dGVuc2lv
bjsKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJlcXVlc3QudXJsKCku
ZmlsZVN5c3RlbVBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHJlcXVlc3RTYW5k
Ym94RXh0ZW5zaW9uKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHJl
cXVlc3QudXJsKCkuZmlsZVN5c3RlbVBhdGgoKSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVh
ZE9ubHksIHJlcXVlc3RTYW5kYm94RXh0ZW5zaW9uKTsKICAgICAgICAgZW5jb2RlciA8PCByZXF1
ZXN0U2FuZGJveEV4dGVuc2lvbjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL21hYy9RdWFyYW50aW5lU1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9tYWMvUXVhcmFudGluZVNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzODBmYTQwZDBiNTc3YjBkZGM3
NmI0ZTY1ZDFhNzAyNTk1Y2FjN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9tYWMvUXVhcmFudGluZVNQSS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxxdWFyYW50aW5lLmg+CisKKyNlbHNlCisKK2VudW0g
cXRuX2ZsYWdzIHsKKyAgICBRVE5fRkxBR19TQU5EQk9YID0gMHgwMDAyLAorfTsKKworI2RlZmlu
ZSBxdG5fcHJvY19hbGxvYyBfcXRuX3Byb2NfYWxsb2MKKyNkZWZpbmUgcXRuX3Byb2NfYXBwbHlf
dG9fc2VsZiBfcXRuX3Byb2NfYXBwbHlfdG9fc2VsZgorI2RlZmluZSBxdG5fcHJvY19mcmVlIF9x
dG5fcHJvY19mcmVlCisjZGVmaW5lIHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmIF9xdG5fcHJvY19p
bml0X3dpdGhfc2VsZgorI2RlZmluZSBxdG5fcHJvY19zZXRfZmxhZ3MgX3F0bl9wcm9jX3NldF9m
bGFncworCisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgX3F0bl9wcm9jICpxdG5fcHJvY190Owor
CitXVEZfRVhURVJOX0NfQkVHSU4KKworaW50IHF0bl9wcm9jX2FwcGx5X3RvX3NlbGYocXRuX3By
b2NfdCk7CitpbnQgcXRuX3Byb2NfaW5pdF93aXRoX3NlbGYocXRuX3Byb2NfdCk7CitpbnQgcXRu
X3Byb2Nfc2V0X2ZsYWdzKHF0bl9wcm9jX3QsIHVpbnQzMl90IGZsYWdzKTsKK3F0bl9wcm9jX3Qg
cXRuX3Byb2NfYWxsb2MoKTsKK3ZvaWQgcXRuX3Byb2NfZnJlZShxdG5fcHJvY190KTsKKworV1RG
X0VYVEVSTl9DX0VORAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IDUxMDU3ZTQ5ODI3NzFiYjMzYWVhYjEzYzM1NGQw
NjE0MWE3ZTE0YmYuLjIyYTk2ZTNmMDdlOGQyY2E3ZjhjNDQwMjM2ZDM2ZTIwMDkyNWY3YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTMyLDIwICszMiwxOCBA
QAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAotI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi10eXBlZGVmIHN0cnVjdCBfX1dL
U2FuZGJveEV4dGVuc2lvbiogV0tTYW5kYm94RXh0ZW5zaW9uUmVmOwotI2VuZGlmCi0KIG5hbWVz
cGFjZSBJUEMgewogY2xhc3MgRW5jb2RlcjsKIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgeworICAgIAorY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGw7CiAKIGNsYXNzIFNh
bmRib3hFeHRlbnNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTYW5kYm94RXh0ZW5zaW9uPiB7CiBw
dWJsaWM6Ci0gICAgZW51bSBUeXBlIHsKKyAgICBlbnVtIGNsYXNzIFR5cGUgewogICAgICAgICBS
ZWFkT25seSwKICAgICAgICAgUmVhZFdyaXRlLAogICAgICAgICBHZW5lcmljLApAQCAtNTUsNyAr
NTMsMTEgQEAgcHVibGljOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwog
ICAgIHB1YmxpYzoKICAgICAgICAgSGFuZGxlKCk7CisjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5T
SU9OUykKKyAgICAgICAgSGFuZGxlKEhhbmRsZSYmKTsKKyNlbHNlCiAgICAgICAgIEhhbmRsZShI
YW5kbGUmJikgPSBkZWZhdWx0OworI2VuZGlmCiAgICAgICAgIH5IYW5kbGUoKTsKIAogICAgICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKQEAgLTY0LDcgKzY2LDcgQEAgcHVi
bGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
OwogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgICAgIG11dGFibGUgV0tTYW5k
Ym94RXh0ZW5zaW9uUmVmIG1fc2FuZGJveEV4dGVuc2lvbjsKKyAgICAgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8U2FuZGJveEV4dGVuc2lvbkltcGw+IG1fc2FuZGJveEV4dGVuc2lvbjsKICNl
bmRpZgogICAgIH07CiAKQEAgLTEwOCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFNhbmRib3hFeHRlbnNpb24oY29uc3QgSGFuZGxlJik7CiAgICAgICAgICAgICAgICAgICAgICAK
ICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgIG11dGFibGUgV0tTYW5kYm94RXh0
ZW5zaW9uUmVmIG1fc2FuZGJveEV4dGVuc2lvbjsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gbV9zYW5kYm94RXh0ZW5zaW9uOwogICAgIHNpemVfdCBt
X3VzZUNvdW50OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFBy
b2Nlc3NNYWMubW0KaW5kZXggODFjN2Y3YTllN2UyZTRjM2E2NGNlODRlNTM3ZDcxNmI1NTliN2Iy
NS4uOGEwZWYyNGYyMWI3ZDk1N2YyNGFiMThiYWQ0ZTViNWVmYTg2MGVlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCkBAIC0zMCw5ICszMCwxMSBAQAog
CiAjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZVV0aWxzQ0Yu
aCIKKyNpbXBvcnQgIlF1YXJhbnRpbmVTUEkuaCIKICNpbXBvcnQgIlNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2lt
cG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njb3BlR3VhcmQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU3lzdGVtVmVyc2lvbi5oPgogI2ltcG9ydCA8bWFjaC9tYWNo
Lmg+CiAjaW1wb3J0IDxtYWNoL3Rhc2suaD4KQEAgLTc5LDYgKzgxLDI1IEBAIHZvaWQgQ2hpbGRQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY2hhbmdlQ3VycmVudERpcmVjdG9yeVBhdGg6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBidW5kbGVQYXRoXV07CiB9CiAKK3N0YXRpYyBPU1N0YXR1cyBlbmFibGVTYW5kYm94U3R5bGVG
aWxlUXVhcmFudGluZSgpCit7CisgICAgaW50IGVycm9yOworICAgIHF0bl9wcm9jX3QgcXVhcmFu
dGluZVByb3BlcnRpZXMgPSBxdG5fcHJvY19hbGxvYygpOworICAgIFNjb3BlR3VhcmQgcXVhcmFu
dGluZVByb3BlcnRpZXNEZWxldGVyKFtxdWFyYW50aW5lUHJvcGVydGllc10oKSB7CisgICAgICAg
IHF0bl9wcm9jX2ZyZWUocXVhcmFudGluZVByb3BlcnRpZXMpOworICAgIH0pOworCisgICAgaWYg
KChlcnJvciA9IHF0bl9wcm9jX2luaXRfd2l0aF9zZWxmKHF1YXJhbnRpbmVQcm9wZXJ0aWVzKSkp
CisgICAgICAgIHJldHVybiBlcnJvcjsKKworICAgIGlmICgoZXJyb3IgPSBxdG5fcHJvY19zZXRf
ZmxhZ3MocXVhcmFudGluZVByb3BlcnRpZXMsIFFUTl9GTEFHX1NBTkRCT1gpKSkKKyAgICAgICAg
cmV0dXJuIGVycm9yOworCisgICAgLy8gUVROX0ZMQUdfU0FOREJPWCBpcyBzaWxlbnRseSBpZ25v
cmVkIGlmIHNlY3VyaXR5Lm1hYy5xdG4uc2FuZGJveF9lbmZvcmNlIHN5c2N0bCBpcyAwLgorICAg
IC8vIEluIHRoYXQgY2FzZSwgcXVhcmFudGluZSBmYWxscyBiYWNrIHRvIGFkdmlzb3J5IFFUTl9G
TEFHX0RPV05MT0FELgorICAgIHJldHVybiBxdG5fcHJvY19hcHBseV90b19zZWxmKHF1YXJhbnRp
bmVQcm9wZXJ0aWVzKTsKK30KKwogdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgc2FuZGJveFBhcmFtZXRlcnMpCiB7CiAg
ICAgTlNCdW5kbGUgKndlYmtpdDJCdW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlND
bGFzc0Zyb21TdHJpbmcoQCJXS1ZpZXciKV07CkBAIC0xNzEsNyArMTkyLDcgQEAgdm9pZCBDaGls
ZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0
aW9uUGFyYW1ldGVycyYKICAgICB9CiAKICAgICAvLyBUaGlzIHdpbGwgb3ZlcnJpZGUgTFNGaWxl
UXVhcmFudGluZUVuYWJsZWQgZnJvbSBJbmZvLnBsaXN0IHVubGVzcyBzYW5kYm94IHF1YXJhbnRp
bmUgaXMgZ2xvYmFsbHkgZGlzYWJsZWQuCi0gICAgT1NTdGF0dXMgZXJyb3IgPSBXS0VuYWJsZVNh
bmRib3hTdHlsZUZpbGVRdWFyYW50aW5lKCk7CisgICAgT1NTdGF0dXMgZXJyb3IgPSBlbmFibGVT
YW5kYm94U3R5bGVGaWxlUXVhcmFudGluZSgpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBX
VEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBlbmFibGUgc2FuZGJveCBzdHlsZSBmaWxlIHF1YXJh
bnRpbmU6ICVsZFxuIiwgZ2V0cHJvZ25hbWUoKSwgc3RhdGljX2Nhc3Q8bG9uZz4oZXJyb3IpKTsK
ICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCA0NDFlYjFlMTQ4MDgyMzBhYWI0MDRmMmQ2Mzk4
ZDUyZmU2NGM0MDg5Li4yM2FjYzM5ZmUyOWEyYzg4OTQ4Y2UwZmExN2U3NzA2ZDYxMmQwOWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQpA
QCAtMzQsMjMgKzM0LDg2IEBACiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNp
bXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8c3lzL3N0YXQuaD4KKyNpbXBv
cnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OlR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gaW1wbCB7IG5ldyBTYW5kYm94RXh0ZW5zaW9uSW1w
bChwYXRoLCB0eXBlKSB9OworICAgICAgICBpZiAoIWltcGwtPm1fdG9rZW4pCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGltcGw7CisgICAgfQorCisgICAgU2Fu
ZGJveEV4dGVuc2lvbkltcGwoY29uc3QgY2hhciogc2VyaWFsaXplZEZvcm1hdCwgc2l6ZV90IGxl
bmd0aCkKKyAgICAgICAgOiBtX3Rva2VuIHsgc3RybmR1cChzZXJpYWxpemVkRm9ybWF0LCBsZW5n
dGgpIH0KKyAgICB7CisgICAgfQorCisgICAgflNhbmRib3hFeHRlbnNpb25JbXBsKCkKKyAgICB7
CisgICAgICAgIGZyZWUobV90b2tlbik7CisgICAgfQorCisgICAgYm9vbCBjb25zdW1lKCkgV0FS
Tl9VTlVTRURfUkVUVVJOCisgICAgeworICAgICAgICBtX2hhbmRsZSA9IHNhbmRib3hfZXh0ZW5z
aW9uX2NvbnN1bWUobV90b2tlbik7CisjaWYgUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKKyAgICAg
ICAgcmV0dXJuICFzYW5kYm94X2NoZWNrKGdldHBpZCgpLCAwLCBTQU5EQk9YX0ZJTFRFUl9OT05F
KTsKKyNlbHNlCisgICAgICAgIHJldHVybiBtX2hhbmRsZTsKKyNlbmRpZgorICAgIH0KKworICAg
IGJvb2wgaW52YWxpZGF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gIXNhbmRib3hfZXh0ZW5z
aW9uX3JlbGVhc2Uoc3RkOjpleGNoYW5nZShtX2hhbmRsZSwgMCkpOworICAgIH0KKworICAgIGNv
bnN0IGNoYXIqIGdldFNlcmlhbGl6ZWRGb3JtYXQoc2l6ZV90JiBsZW5ndGgpIFdBUk5fVU5VU0VE
X1JFVFVSTgorICAgIHsKKyAgICAgICAgbGVuZ3RoID0gc3RybGVuKG1fdG9rZW4pOworICAgICAg
ICByZXR1cm4gbV90b2tlbjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY2hhciogc2FuZGJveEV4
dGVuc2lvbkZvclR5cGUoY29uc3QgY2hhciogcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZSB0
eXBlKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHk6CisgICAgICAgICAgICByZXR1cm4gc2FuZGJveF9l
eHRlbnNpb25faXNzdWVfZmlsZShBUFBfU0FOREJPWF9SRUFELCBwYXRoLCAwKTsKKyAgICAgICAg
Y2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGU6CisgICAgICAgICAgICByZXR1
cm4gc2FuZGJveF9leHRlbnNpb25faXNzdWVfZmlsZShBUFBfU0FOREJPWF9SRUFEX1dSSVRFLCBw
YXRoLCAwKTsKKyAgICAgICAgY2FzZSBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpHZW5lcmljOgor
ICAgICAgICAgICAgcmV0dXJuIHNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2dlbmVyaWMocGF0aCwg
MCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTYW5kYm94RXh0ZW5zaW9uSW1wbChjb25zdCBj
aGFyKiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlIHR5cGUpCisgICAgICAgIDogbV90b2tl
biB7IHNhbmRib3hFeHRlbnNpb25Gb3JUeXBlKHBhdGgsIHR5cGUpIH0KKyAgICB7CisgICAgfQor
CisgICAgY2hhciogbV90b2tlbjsKKyAgICBpbnQ2NF90IG1faGFuZGxlIHsgMCB9OworfTsKKwog
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjpIYW5kbGUoKQotICAgIDogbV9zYW5kYm94RXh0ZW5z
aW9uKDApCiB7CiB9Ci0gICAgCisKK1NhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6SGFuZGxlKEhh
bmRsZSYmKSA9IGRlZmF1bHQ7CisKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6fkhhbmRsZSgp
CiB7Ci0gICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewotICAgICAgICBXS1NhbmRib3hFeHRl
bnNpb25JbnZhbGlkYXRlKG1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgICAgIFdLU2FuZGJveEV4
dGVuc2lvbkRlc3Ryb3kobV9zYW5kYm94RXh0ZW5zaW9uKTsKLSAgICB9CisgICAgaWYgKG1fc2Fu
ZGJveEV4dGVuc2lvbikKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5pbnZhbGlkYXRlKCk7
CiB9CiAKIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdApAQCAtNjEsMTMgKzEyNCwxMiBAQCB2b2lkIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB9CiAK
ICAgICBzaXplX3QgbGVuZ3RoID0gMDsKLSAgICBjb25zdCBjaGFyICpzZXJpYWxpemVkRm9ybWF0
ID0gV0tTYW5kYm94RXh0ZW5zaW9uR2V0U2VyaWFsaXplZEZvcm1hdChtX3NhbmRib3hFeHRlbnNp
b24sICZsZW5ndGgpOworICAgIGNvbnN0IGNoYXIqIHNlcmlhbGl6ZWRGb3JtYXQgPSBtX3NhbmRi
b3hFeHRlbnNpb24tPmdldFNlcmlhbGl6ZWRGb3JtYXQobGVuZ3RoKTsKICAgICBBU1NFUlQoc2Vy
aWFsaXplZEZvcm1hdCk7CiAKICAgICBlbmNvZGVyIDw8IElQQzo6RGF0YVJlZmVyZW5jZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzZXJpYWxpemVkRm9ybWF0KSwgbGVuZ3RoKTsK
IAogICAgIC8vIEVuY29kaW5nIHdpbGwgZGVzdHJveSB0aGUgc2FuZGJveCBleHRlbnNpb24gbG9j
YWxseS4KLSAgICBXS1NhbmRib3hFeHRlbnNpb25EZXN0cm95KG1fc2FuZGJveEV4dGVuc2lvbik7
CiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gMDsKIH0KIApAQCAtODIsNyArMTQ0LDcgQEAgYm9v
bCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IEhhbmRsZSYgcmVzdWx0KQogICAgIGlmIChkYXRhUmVmZXJlbmNlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXN1bHQubV9zYW5kYm94RXh0ZW5zaW9uID0gV0tTYW5k
Ym94RXh0ZW5zaW9uQ3JlYXRlRnJvbVNlcmlhbGl6ZWRGb3JtYXQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7
CisgICAgcmVzdWx0Lm1fc2FuZGJveEV4dGVuc2lvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2FuZGJv
eEV4dGVuc2lvbkltcGw+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVu
Y2UuZGF0YSgpKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0xNTIsMjEgKzIxNCw2IEBAIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTYW5kYm94RXh0ZW5zaW9uKGhhbmRsZSkpOwogfQogCi1zdGF0aWMgV0tTYW5kYm94RXh0
ZW5zaW9uVHlwZSB3a1NhbmRib3hFeHRlbnNpb25UeXBlKFNhbmRib3hFeHRlbnNpb246OlR5cGUg
dHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFNhbmRib3hFeHRlbnNpb246
OlJlYWRPbmx5OgotICAgICAgICByZXR1cm4gV0tTYW5kYm94RXh0ZW5zaW9uVHlwZVJlYWRPbmx5
OwotICAgIGNhc2UgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlOgotICAgICAgICByZXR1cm4g
V0tTYW5kYm94RXh0ZW5zaW9uVHlwZVJlYWRXcml0ZTsKLSAgICBjYXNlIFNhbmRib3hFeHRlbnNp
b246OkdlbmVyaWM6Ci0gICAgICAgIHJldHVybiBXS1NhbmRib3hFeHRlbnNpb25UeXBlR2VuZXJp
YzsKLQotICAgIH0KLQotICAgIENSQVNIKCk7Ci19Ci0KIHN0YXRpYyBDU3RyaW5nIHJlc29sdmVT
eW1saW5rc0luUGF0aChjb25zdCBDU3RyaW5nJiBwYXRoKQogewogICAgIHN0cnVjdCBzdGF0IHN0
YXRCdWY7CkBAIC0yNDUsNyArMjkyLDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFR5cGUKIHsKICAg
ICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogCi0gICAgaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbiA9IFdLU2FuZGJveEV4dGVuc2lvbkNyZWF0ZShwYXRoLnV0ZjgoKS5kYXRh
KCksIHdrU2FuZGJveEV4dGVuc2lvblR5cGUodHlwZSkpOworICAgIGhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKHBhdGgudXRmOCgpLmRhdGEo
KSwgdHlwZSk7CiAgICAgaWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAg
IExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciAnJXMn
IiwgcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY2LDcg
KzMxMyw3IEBAIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuCiAgICAgaWYgKHJlc29sdmVkUGF0aC5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHJlc29sdmVkUGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBoYW5kbGUpOworICAgIHJldHVybiBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChyZXNvbHZlZFBhdGgsIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgaGFuZGxlKTsKIH0KIAogU3RyaW5nIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5n
JiBwcmVmaXgsIFR5cGUgdHlwZSwgSGFuZGxlJiBoYW5kbGUpCkBAIC0yODksNyArMzM2LDcgQEAg
U3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29u
c3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUKICAgICBwYXRoLmFwcGVuZChwcmVmaXgudXRmOCgpLmRh
dGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKICAgICBwYXRoLmFwcGVuZCgnXDAnKTsKICAgICAKLSAg
ICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gV0tTYW5kYm94RXh0ZW5zaW9uQ3JlYXRlKGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoLmRhdGEoKSkuZGF0YSgpLCB3a1NhbmRib3hFeHRl
bnNpb25UeXBlKHR5cGUpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbkltcGw6OmNyZWF0ZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRh
KCkpLmRhdGEoKSwgdHlwZSk7CiAKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24p
IHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRl
bnNpb24gZm9yIHRlbXBvcmFyeSBmaWxlICclcyciLCBwYXRoLmRhdGEoKSk7CkBAIC0zMDIsNyAr
MzQ5LDcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uQ2wKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5t
X3NhbmRib3hFeHRlbnNpb24pOwogCi0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFdL
U2FuZGJveEV4dGVuc2lvbkNyZWF0ZShleHRlbnNpb25DbGFzcy51dGY4KCkuZGF0YSgpLCB3a1Nh
bmRib3hFeHRlbnNpb25UeXBlKFR5cGU6OkdlbmVyaWMpKTsKKyAgICBoYW5kbGUubV9zYW5kYm94
RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShleHRlbnNpb25DbGFzcy51
dGY4KCkuZGF0YSgpLCBUeXBlOjpHZW5lcmljKTsKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hF
eHRlbnNpb24pIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgJyVz
JyBzYW5kYm94IGV4dGVuc2lvbiIsIGV4dGVuc2lvbkNsYXNzLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTIsMTAgKzM1OSw5IEBAIGJvb2wgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbkNsCiB9CiAKIFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb24oY29uc3QgSGFu
ZGxlJiBoYW5kbGUpCi0gICAgOiBtX3NhbmRib3hFeHRlbnNpb24oaGFuZGxlLm1fc2FuZGJveEV4
dGVuc2lvbikKKyAgICA6IG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKGhhbmRsZS5tX3NhbmRi
b3hFeHRlbnNpb24pKQogICAgICwgbV91c2VDb3VudCgwKQogewotICAgIGhhbmRsZS5tX3NhbmRi
b3hFeHRlbnNpb24gPSAwOwogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjp+U2FuZGJveEV4dGVuc2lv
bigpCkBAIC0zMjQsNyArMzcwLDYgQEAgU2FuZGJveEV4dGVuc2lvbjo6flNhbmRib3hFeHRlbnNp
b24oKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1fdXNlQ291bnQpOwotICAgIFdL
U2FuZGJveEV4dGVuc2lvbkRlc3Ryb3kobV9zYW5kYm94RXh0ZW5zaW9uKTsKIH0KIAogYm9vbCBT
YW5kYm94RXh0ZW5zaW9uOjpyZXZva2UoKQpAQCAtMzM1LDcgKzM4MCw3IEBAIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6cmV2b2tlKCkKICAgICBpZiAoLS1tX3VzZUNvdW50KQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJldHVybiBXS1NhbmRib3hFeHRlbnNpb25JbnZhbGlkYXRlKG1fc2Fu
ZGJveEV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1fc2FuZGJveEV4dGVuc2lvbi0+aW52YWxpZGF0
ZSgpOwogfQogCiBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWUoKQpAQCAtMzQ1LDE4ICsz
OTAsMTcgQEAgYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lKCkKICAgICBpZiAobV91c2VD
b3VudCsrKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBXS1NhbmRib3hFeHRl
bnNpb25Db25zdW1lKG1fc2FuZGJveEV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1fc2FuZGJveEV4
dGVuc2lvbi0+Y29uc3VtZSgpOwogfQogCiBib29sIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQ
ZXJtYW5lbnRseSgpCiB7CiAgICAgQVNTRVJUKG1fc2FuZGJveEV4dGVuc2lvbik7CiAKLSAgICBi
b29sIHJlc3VsdCA9IFdLU2FuZGJveEV4dGVuc2lvbkNvbnN1bWUobV9zYW5kYm94RXh0ZW5zaW9u
KTsKKyAgICBib29sIHJlc3VsdCA9IG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCiAg
ICAgLy8gRGVzdHJveSB0aGUgZXh0ZW5zaW9uIHdpdGhvdXQgaW52YWxpZGF0aW5nIGl0LgotICAg
IFdLU2FuZGJveEV4dGVuc2lvbkRlc3Ryb3kobV9zYW5kYm94RXh0ZW5zaW9uKTsKLSAgICBtX3Nh
bmRib3hFeHRlbnNpb24gPSAwOworICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzY2LDExICs0MTAsMTAgQEAgYm9vbCBTYW5kYm94
RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoY29uc3QgSGFuZGxlJiBoYW5kbGUpCiAgICAg
aWYgKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBib29sIHJlc3VsdCA9IFdLU2FuZGJveEV4dGVuc2lvbkNvbnN1bWUoaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbik7CisgICAgYm9vbCByZXN1bHQgPSBoYW5kbGUubV9zYW5kYm94RXh0ZW5z
aW9uLT5jb25zdW1lKCk7CiAgICAgCiAgICAgLy8gRGVzdHJveSB0aGUgZXh0ZW5zaW9uIHdpdGhv
dXQgaW52YWxpZGF0aW5nIGl0LgotICAgIFdLU2FuZGJveEV4dGVuc2lvbkRlc3Ryb3koaGFuZGxl
Lm1fc2FuZGJveEV4dGVuc2lvbik7Ci0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IDA7
CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IG51bGxwdHI7CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQppbmRleCBkNTBiMzNkY2NjZDlhNTRjNzlmMDQwMjVlZjkxMjViMmE0YjJl
NjMwLi4yNjFlODUxN2M5N2ExMmFhOTVjNGI4MTQ4ZThlMDA1NTJlNmM3ODlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAt
ODksNyArODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlU2FuZGJveEV4dGVuc2lvbnNJ
Zk5lZWRlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMsCiAgICAgaWYgKGZpbGVzLnNpemUo
KSA9PSAxKSB7CiAgICAgICAgIEJPT0wgaXNEaXJlY3Rvcnk7CiAgICAgICAgIGlmIChbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZXNbMF0gaXNEaXJl
Y3Rvcnk6JmlzRGlyZWN0b3J5XSAmJiAhaXNEaXJlY3RvcnkpIHsKLSAgICAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5
LCBmaWxlUmVhZEhhbmRsZSk7CisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUoIi8iLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgZmlsZVJlYWRIYW5k
bGUpOwogICAgICAgICAgICAgcHJvY2VzcygpLndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRT
YW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0lmTmVlZGVkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlcywKICAgICAgICAgTlNTdHJpbmcgKmZpbGUgPSBmaWxlc1tpXTsK
ICAgICAgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNB
dFBhdGg6ZmlsZV0pCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGUsIFNhbmRib3hFeHRlbnNpb246OlJlYWRPbmx5LCBmaWxl
VXBsb2FkSGFuZGxlc1tpXSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZShmaWxlLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgZmlsZVVwbG9hZEhhbmRs
ZXNbaV0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggYmQ1N2E3Y2I3Zjk2NTdlZjUxYmM1MTFk
ZWE0Y2UxNTdlYTg3OGViYi4uZjA3YmJmYmRlOGQ4MDFiMjJmOTQzZGFiYmViM2JlMWQwYzBkMWY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCkBAIC0yMDEsMTkgKzIwMSwxOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGNvbmZpZ3VyYWJsZTsgd2Ug
c2hvdWxkbid0IGp1c3QgYmxpbmRseSBhbGxvdyByZWFkIGFjY2VzcyB0byB0aGUgVUkgcHJvY2Vz
cyBidW5kbGUuCiAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGggPSBt
X3Jlc29sdmVkUGF0aHMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoOwotICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMudWlQ
cm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgcGFy
YW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFt
ZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkT25seSwgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgcGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyID0g
U3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwogCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGlmICghbV9yZXNvbHZlZFBhdGhzLmNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVX
aXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuY29va2llU3RvcmFnZURpcmVjdG9y
eSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuY29va2llU3RvcmFn
ZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJz
LmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3Jl
c29sdmVkUGF0aHMuY29udGFpbmVyQ2FjaGVzRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNv
bHZlZFBhdGhzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVh
ZFdyaXRlLCBwYXJhbWV0ZXJzLmNvbnRhaW5lckNhY2hlc0RpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZp
bmdQYXRoKG1fcmVzb2x2ZWRQYXRocy5jb250YWluZXJDYWNoZXNEaXJlY3RvcnksIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb250YWluZXJDYWNoZXNEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKCFtX3Jlc29sdmVkUGF0aHMuY29udGFp
bmVyVGVtcG9yYXJ5RGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgobV9yZXNvbHZlZFBhdGhzLmNvbnRh
aW5lclRlbXBvcmFyeURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJh
bWV0ZXJzLmNvbnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKG1f
cmVzb2x2ZWRQYXRocy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNp
b246OlR5cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5jb250YWluZXJUZW1wb3JhcnlEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICAgICBwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxp
c3QgPSBtX2ZvbnRXaGl0ZWxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggYzI2MThhMjA3YTEwY2YzNzE1MGJlMWZi
ZmI4MTZlZjdiNDcxY2Q4YS4uN2Q5MjVkZDk2MDMyNzdjNjFiYzAwZTBiN2ZhNjE2OGUzMDQ4ZTgw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25sCiAg
ICAgCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7
CiAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUs
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSog
bmV0d29ya1Byb2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQogICAgICAg
ICBuZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVl
RGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24s
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlKSwgMCk7CkBAIC0yMjQsNyAr
MjI0LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW0KICAgICBkZXN0aW5hdGlvbiA9IG1fcHJv
Y2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUsIGFs
bG93T3ZlcndyaXRlKTsKIAogICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVu
c2lvbjo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDkxYmE5YTA2NjMyMzEwOGUxNjc5NmFiNjQ2YzEzYmRkNDgyYjBhZDEu
LmE2MGI0NDAyMWRiYTFkZGNiNGExNTM3NThiMTgxNWQzZWQwNDM4YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z3JhbnRTYW5k
Ym94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nlc3NGb3JCbG9icyh1aW50NjRfCiAgICAgZXh0ZW5z
aW9ucy5hbGxvY2F0ZShwYXRocy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGF0aHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgLy8gUmVhZFdyaXRlIGlzIHJlcXVpcmVkIGZv
ciBjcmVhdGluZyBoYXJkIGxpbmtzIGFzIHdlbGwgYXMgZGVsZXRpbmcgdGhlIHRlbXBvcmFyeSBm
aWxlLCB3aGljaCB0aGUgU3RvcmFnZVByb2Nlc3Mgd2lsbCBkby4KLSAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3Jp
dGUsIGV4dGVuc2lvbnNbaV0pOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGUocGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgZXh0ZW5zaW9u
c1tpXSk7CiAgICAgfQogCiAgICAgbV9wcm9jZXNzUG9vbC5zZW5kVG9TdG9yYWdlUHJvY2Vzc1Jl
bGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpHcmFudFNhbmRi
b3hFeHRlbnNpb25zRm9yQmxvYnMocGF0aHMsIGV4dGVuc2lvbnMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IGE1YWE4MTE4YzExNmFjZDkwZTIzY2Q3NjQ4MDUyNjQyZjk2OTI2MGQuLjU1Y2ZmZjUzNTZl
OGZlY2QzY2EzYzNjZWVhOWQzM2NiMmQ0MjI2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTk4LDcg
KzE5OCw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3NQcm94eTo6Z2V0U2FuZGJveEV4dGVuc2lvbnNG
b3JCbG9iRmlsZXModWludDY0X3QgcmVxdWVzdElELCBjCiAgICAgZXh0ZW5zaW9ucy5hbGxvY2F0
ZShwYXRocy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF0aHMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgLy8gUmVhZFdyaXRlIGlzIHJlcXVpcmVkIGZvciBjcmVhdGluZyBo
YXJkIGxpbmtzLCB3aGljaCBpcyBzb21ldGhpbmcgdGhhdCBtaWdodCBiZSBkb25lIHdpdGggdGhl
c2UgZXh0ZW5zaW9ucy4KLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBh
dGhzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIGV4dGVuc2lvbnNbaV0pOworICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aHNbaV0sIFNhbmRib3hFeHRl
bnNpb246OlR5cGU6OlJlYWRXcml0ZSwgZXh0ZW5zaW9uc1tpXSk7CiAgICAgfQogCiAgICAgc2Vu
ZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEdldFNhbmRib3hFeHRlbnNpb25zRm9yQmxv
YkZpbGVzKHJlcXVlc3RJRCwgZXh0ZW5zaW9ucyksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTdjZmJjMDllZjMyZmUyMWZiZTU4NDIxNjExZDRlNzRj
YTRhYzIyZi4uYTc5OThlYmE4ODFhNGVjZDU3NmM2ZGQwMzk5YmFmYmIxNTZjZjU2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MTYsNyArODE2LDcgQEAg
Ym9vbCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUo
Y29uc3QgVVJMJiB1cmwsIFNhbmRib3gKICAgICAvLyBJbnNwZWN0b3IgcmVzb3VyY2VzIGFyZSBp
biBhIGRpcmVjdG9yeSB3aXRoIGFzc3VtZWQgYWNjZXNzLgogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKCFXZWJLaXQ6OmlzSW5zcGVjdG9yUGFnZSgqdGhpcykpOwogCi0gICAg
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKCIvIiwgU2FuZGJveEV4dGVuc2lvbjo6UmVh
ZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZSgiLyIsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODkxLDcgKzg5MSw3
IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9
IGZpbGVVUkw7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSA9ICh1aW50NjRfdClTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxv
dzsKICAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7Ci0gICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKHJlc291cmNlRGlyZWN0b3J5UGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6UmVhZE9ubHksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShyZXNvdXJjZURpcmVjdG9yeVBhdGgsIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0
ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChyZXNvdXJj
ZURpcmVjdG9yeVVSTCk7CkBAIC00NzUwLDcgKzQ3NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3Qg
VmVjdAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25I
YW5kbGVzOwogICAgIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKGZpbGVVUkxzLnNp
emUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkK
LSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5k
Ym94RXh0ZW5zaW9uOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOworICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVVSTHNbaV0sIFNhbmRib3hF
eHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CiAK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JG
aWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CiAj
ZW5kaWYKQEAgLTQ3NzEsNyArNDc3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMpCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXM7CiAgICAg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZXMuYWxsb2NhdGUoZmlsZVVSTHMuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVVUkxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGJv
b2wgY3JlYXRlZEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxl
VVJMc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5k
bGVzW2ldKTsKKyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFk
T25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogICAgICAgICBpZiAoIWNyZWF0ZWRF
eHRlbnNpb24pIHsKICAgICAgICAgICAgIC8vIFRoaXMgY2FuIGxlZ2l0aW1hdGVseSBmYWlsIGlm
IGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZpbGUgaXMgZGVsZXRlZCBhZnRlciB0aGUgZmls
ZSB3YXMgY2hvc2VuLgogICAgICAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHJlcG9ydHMgb2YgY2Fz
ZXMgd2hlcmUgdGhpcyBsaWtlbHkgZmFpbHMgZm9yIHNvbWUgdW5rbm93biByZWFzb24sIDxyZGFy
Oi8vcHJvYmxlbS8xMDE1NjcxMD4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggOThmNjhhN2Q0NzllNThlNjE0ODI2NDEwMjU2YWU1YTgzMTUwZmM5Zi4u
NmQyOWUxM2Q3ZGU0MjAzNGFjNWU3MTg2NmViZmM5YzRiYWMwYzlhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNDU2LDcgKzQ1Niw3IEBAIE5ldHdv
cmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlKiB3aXRoCiAKICAgICBTdHJpbmcgcGFyZW50QnVuZGxlRGlyZWN0b3J5ID0g
dGhpcy0+cGFyZW50QnVuZGxlRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFwYXJlbnRCdW5kbGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
cGFyZW50QnVuZGxlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgcGFyYW1l
dGVycy5wYXJlbnRCdW5kbGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGFyZW50QnVuZGxlRGlyZWN0b3J5LCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgcGFyYW1ldGVycy5wYXJlbnRCdW5kbGVEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlmCiAKICNpZiBPUyhMSU5VWCkKQEAgLTY2MSwxNyAr
NjYxLDE3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlBy
b2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhCiAKICAgICBwYXJhbWV0ZXJzLmluamVj
dGVkQnVuZGxlUGF0aCA9IG1fcmVzb2x2ZWRQYXRocy5pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAg
aWYgKCFwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRl
cnMuaW5qZWN0ZWRCdW5kbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgcGFyYW1l
dGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmlu
amVjdGVkQnVuZGxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHBhcmFt
ZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIHBhcmFtZXRl
cnMuYWRkaXRpb25hbFNhbmRib3hFeHRlbnNpb25IYW5kbGVzLmFsbG9jYXRlKG1fcmVzb2x2ZWRQ
YXRocy5hZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRocy5zaXplKCkpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxX
ZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgo
bV9yZXNvbHZlZFBhdGhzLmFkZGl0aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhz
W2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkT25seSwgcGFyYW1ldGVycy5hZGRpdGlvbmFsU2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChtX3Jlc29sdmVkUGF0aHMuYWRkaXRpb25hbFdl
YlByb2Nlc3NTYW5kYm94RXh0ZW5zaW9uUGF0aHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRPbmx5LCBwYXJhbWV0ZXJzLmFkZGl0aW9uYWxTYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tp
XSk7CiAKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB3ZWJzaXRl
RGF0YVN0b3JlLnJlc29sdmVkQXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIGlmIChw
YXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBw
YXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBtX3Jlc29sdmVkUGF0aHMuYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeTsKICAgICBpZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAg
IHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSA9IG1f
Y29uZmlndXJhdGlvbi0+YXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSgp
OwogCkBAIC02NzksMTkgKzY3OSwxOSBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYQogICAgIGlm
IChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAg
cGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IG1fcmVzb2x2ZWRQYXRocy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBpZiAoIXBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMud2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgcGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5ID0gd2Vic2l0ZURhdGFTdG9yZS5yZXNvbHZlZE1lZGlhQ2FjaGVE
aXJlY3RvcnkoKTsKICAgICBpZiAocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9yZXNvbHZl
ZFBhdGhzLm1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhQ2Fj
aGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVXaXRob3V0UmVzb2x2aW5nUGF0aChwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3Rvcnks
IFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMubWVkaWFDYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSA9IHdlYnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRNZWRpYUtleXNEaXJlY3Rvcnko
KTsKICAgICBpZiAocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgp
KQogICAgICAgICBwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSA9IG1fcmVzb2x2
ZWRQYXRocy5tZWRpYUtleVN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLm1l
ZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRlcnMubWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5LCBTYW5kYm94RXh0ZW5zaW9uOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMu
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlV2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5t
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0
ZSwgcGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHNldEphdmFTY3JpcHRDb25maWd1cmF0aW9uRmlsZUVu
YWJsZWRGcm9tRGVmYXVsdHMoKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBXZWJQcm9jZXNzUHJveHkm
IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmIHdl
YnNpdGVEYQogICAgIGlmIChqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkKCkpIHsK
ICAgICAgICAgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9IHdl
YnNpdGVEYXRhU3RvcmUucmVzb2x2ZWRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgp
OwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnkuaXNFbXB0eSgpKQotICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
V2l0aG91dFJlc29sdmluZ1BhdGgocGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdyaXRlLCBwYXJhbWV0ZXJzLmphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZVdpdGhvdXRSZXNvbHZpbmdQYXRoKHBhcmFtZXRl
cnMuamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFNhbmRib3hFeHRlbnNpb246OlR5
cGU6OlJlYWRXcml0ZSwgcGFyYW1ldGVycy5qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgfQogCiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VUZXN0
aW5nTmV0d29ya1Nlc3Npb24gPSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKQEAg
LTg1NCw3ICs4NTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRGlkRmluaXNoTGF1
bmNoaW5nKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbXBsZUxvZ1NhbmRib3hIYW5kbGU7ICAgICAgICAKICAgICAgICAgZG91Ymxl
IG5vdyA9IFdURjo6Y3VycmVudFRpbWUoKTsKICAgICAgICAgU3RyaW5nIHNhbXBsZUxvZ0ZpbGVQ
YXRoID0gU3RyaW5nOjpmb3JtYXQoIldlYlByb2Nlc3MlbGx1cGlkJWQiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KG5vdyksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwot
ICAgICAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmlsZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlJl
YWRXcml0ZSwgc2FtcGxlTG9nU2FuZGJveEhhbmRsZSk7CisgICAgICAgIHNhbXBsZUxvZ0ZpbGVQ
YXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShzYW1w
bGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW1wbGVM
b2dTYW5kYm94SGFuZGxlKTsKICAgICAgICAgCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxlcihzYW1wbGVMb2dTYW5kYm94SGFuZGxl
LCBzYW1wbGVMb2dGaWxlUGF0aCwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwpLCAwKTsKICAgICB9
CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6cmVz
dW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRhKiByZXN1bWVEYXRhLCBjb25zdAogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgaWYgKCFw
YXRoLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCiAgICAg
aWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgLy8gRklYTUU6IElmIHdlIHN0YXJ0ZWQg
YSBkb3dubG9hZCBpbiBhbiBlcGhlbWVyYWwgc2Vzc2lvbiBhbmQgdGhhdCBzZXNzaW9uIHN0aWxs
IGV4aXN0cywgd2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gdXNlIHRoYXQgc2FtZSBzZXNzaW9uLgpA
QCAtMTI3Niw3ICsxMjc2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3RhcnRNZW1vcnlTYW1w
bGVyKGNvbnN0IGRvdWJsZSBpbnRlcnZhbCkKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FtcGxlTG9nU2FuZGJveEhhbmRsZTsgICAgCiAgICAgZG91YmxlIG5vdyA9IFdURjo6Y3VycmVu
dFRpbWUoKTsKICAgICBTdHJpbmcgc2FtcGxlTG9nRmlsZVBhdGggPSBTdHJpbmc6OmZvcm1hdCgi
V2ViUHJvY2VzcyVsbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG5vdykpOwot
ICAgIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
VGVtcG9yYXJ5RmlsZShzYW1wbGVMb2dGaWxlUGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZFdy
aXRlLCBzYW1wbGVMb2dTYW5kYm94SGFuZGxlKTsKKyAgICBzYW1wbGVMb2dGaWxlUGF0aCA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoc2FtcGxlTG9nRmls
ZVBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FtcGxlTG9nU2FuZGJv
eEhhbmRsZSk7CiAgICAgCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRsZSwgc2FtcGxlTG9n
RmlsZVBhdGgsIGludGVydmFsKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMTIyNjEwYmFlZWE5OTcxM2FhODE5MWQ3NTIzOWM5
Y2M0NmY0NDQ5Li42ODA3ZTkzY2RkYzg4YzA1YjJjYzYwYTcxNmFlYzdlNTQ0NGQyMDY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0
OTIsNiArMTQ5Miw3IEBACiAJCUExRDQyMDQ3MURCNTU3ODUwMEJCNkIwRCAvKiBXS0NvbnRleHRN
ZW51TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5j
cHAgKi87IH07CiAJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzEw
MThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLzsgfTsKIAkJQTFERjYzMTMx
OEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93
bmxvYWRDbGllbnQuaCAqLzsgfTsKKwkJQTFFNjg4NzAxRjZFMkJBQjAwNzAwNkE2IC8qIFF1YXJh
bnRpbmVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRTY4ODZGMUY2RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi87IH07CiAJCUEx
RUEwMjM4MURBQkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjM2MURBQkZGN0Uw
MDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUVBMDIzRjFEQUMzMURCMDA5NjAyMUYgLyog
V2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUEwMjNEMURBQzMxREIwMDk2MDIxRiAvKiBXZWJDb250
ZXh0TWVudUxpc3RlbmVyUHJveHkuY3BwICovOyB9OwogCQlBMUVBMDI0MDFEQUMzMURCMDA5NjAy
MUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVBMDIzRTFEQUMzMURCMDA5NjAyMUYgLyogV2Vi
Q29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmggKi87IH07CkBAIC0zODQ2LDYgKzM4NDcsNyBAQAog
CQlBMUM1MTJDNzE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUHJldmlld0xvYWRlckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmg7
IHBhdGggPSBpb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMURGNjMxMDE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZENsaWVudC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjYzMTExOEUwQjdDODAwM0EzRTJB
IC8qIERvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
d25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExRTY4ODZGMUY2
RTJCQUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YXJhbnRp
bmVTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFQTAyMzUxREFCRkY3RTAw
OTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUVBMDIzNjFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVu
dUxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dE1l
bnVMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUVBMDIzRDFEQUMz
MURCMDA5NjAyMUYgLyogV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Njc0LDYgKzY2NzYsMTQgQEAKIAkJ
CXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMUU2ODg2
RTFGNkUyQjgyMDA3MDA2QTYgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQlBMUU2ODg2RjFGNkUyQkFCMDA3MDA2QTYgLyogUXVhcmFudGluZVNQ
SS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQlBNzhDQ0RENTE5M0FDOUUzMDA1RUNDMjUgLyogU2FuZGJveFByb2ZpbGVzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTgxNTEsNiArODE2
MSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkzNzU0RDU0MTFCM0EyOTk4MDAzQTRDN0YgLyog
Q29jb2EgKi8sCiAJCQkJQ0UxQTBCQ0IxQTQ4RTZDNjAwNTRFRjc0IC8qIGlvcyAqLywKKwkJCQlB
MUU2ODg2RTFGNkUyQjgyMDA3MDA2QTYgLyogbWFjICovLAogCQkJKTsKIAkJCXBhdGggPSBzcGk7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODcwNCw2ICs4NzE1LDcgQEAKIAkJCQk0
NjNGRDQ4MjFFQjk0RUMwMDBBMjk4MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkU2N0EyNTE5MTBCOUQxMDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90
dGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFBy
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUExRTY4ODcwMUY2RTJC
QUIwMDcwMDZBNiAvKiBRdWFyYW50aW5lU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE4QTlF
RjE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3Bw
CmluZGV4IDM0NmQyNDk0NzVhNTM5MzFkNWFmZjE1NzU5YjgzODQ1MmE2NjYzMDkuLmFkZjg1MjI2
YTc1ZDMyZmI0OGUwOTdlZjE4NWI1NGJkMjdlNWMyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgUmVmPEJsb2JEYXQKIAogICAgIC8vIEZpbGUgcGF0aCBjYW4g
YmUgZW1wdHkgd2hlbiBzdWJtaXR0aW5nIGEgZm9ybSBmaWxlIGlucHV0IHdpdGhvdXQgYSBmaWxl
LCBzZWUgYnVnIDExMTc3OC4KICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCksIFNhbmRib3hF
eHRlbnNpb246OlJlYWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZS0+cGF0aCgpLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkT25seSwgZXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckZpbGVCbG9iVVJMKHVybCwgZmlsZS0+
cGF0aCgpLCBleHRlbnNpb25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>