<?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>234534</bug_id>
          
          <creation_ts>2021-12-20 15:54:32 -0800</creation_ts>
          <short_desc>Make Notification identifiers be a UUID string instead of a uint64_t</short_desc>
          <delta_ts>2021-12-22 14:04:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Website</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jond</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825788</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-20 15:54:32 -0800</bug_when>
    <thetext>Make Notification identifiers be a UUID string instead of a uint64_t

This will let the identifier assigned at creation time in each WebProcess be global across the entire process ecosystem, simplifying a lot of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825854</commentid>
    <comment_count>1</comment_count>
      <attachid>447676</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-20 20:08:47 -0800</bug_when>
    <thetext>Created attachment 447676
Does it build and test v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825855</commentid>
    <comment_count>2</comment_count>
      <attachid>447677</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-20 20:17:12 -0800</bug_when>
    <thetext>Created attachment 447677
Does it build and test v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825860</commentid>
    <comment_count>3</comment_count>
      <attachid>447681</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-20 20:41:42 -0800</bug_when>
    <thetext>Created attachment 447681
Does it build and test v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825861</commentid>
    <comment_count>4</comment_count>
      <attachid>447682</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-20 20:43:09 -0800</bug_when>
    <thetext>Created attachment 447682
Does it build and test v3.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825878</commentid>
    <comment_count>5</comment_count>
      <attachid>447682</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-20 22:13:16 -0800</bug_when>
    <thetext>Comment on attachment 447682
Does it build and test v3.1

I wonder if it would be worth making a better storage for WTF::UUID that stores a std::pair&lt;uint64_t, uint64_t&gt; and generates the string on demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826012</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-21 08:33:42 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 447682 [details]
&gt; Does it build and test v3.1
&gt; 
&gt; I wonder if it would be worth making a better storage for WTF::UUID that
&gt; stores a std::pair&lt;uint64_t, uint64_t&gt; and generates the string on demand.

Now that we&apos;re identifying more than one class via UUID, I think it&apos;s very worth having that discussion.

I had the same thought before I went to WTF/UUID - If we had a nice and easy to use 128bit int type I could&apos;ve rolled my own with &lt;WebPageProxyIdentifier + per-WebContent-generated-uint64_t&gt;

And that system would probably be generally applicable to many/most UUID users.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826029</commentid>
    <comment_count>7</comment_count>
      <attachid>447726</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-21 09:35:09 -0800</bug_when>
    <thetext>Created attachment 447726
PFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826067</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-21 11:30:21 -0800</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=234571 for making UUID be a 128bit integer instead of a String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826116</commentid>
    <comment_count>9</comment_count>
      <attachid>447726</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-21 14:31:28 -0800</bug_when>
    <thetext>Comment on attachment 447726
PFR

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

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:95
&gt; +    m_notifications.set(notification-&gt;coreNotificationID(), notification.copyRef());

I&apos;m not sure if copyRef is needed these days.

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:140
&gt;      for (auto it = m_notifications.begin(), end = m_notifications.end(); it != end; ++it) {

Can this be a C++11-style for loop?

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:181
&gt; +    ASSERT(notification);

We have lots of early returns elsewhere in this function.  Maybe an early return with an assert not reached to be more robust?

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.h:91
&gt; +    HashMap&lt;uint64_t, String&gt; m_globalNotificationMap;

Can this be a typed identifier?

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.h:92
&gt; +    HashMap&lt;String, RefPtr&lt;WebNotification&gt;&gt; m_notifications;

I think the value can be a Ref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826120</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-21 14:42:09 -0800</bug_when>
    <thetext>Most feedback addressed without additional comment.

As for this one:

(In reply to Alex Christensen from comment #9)
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.h:91
&gt; &gt; +    HashMap&lt;uint64_t, String&gt; m_globalNotificationMap;
&gt; 
&gt; Can this be a typed identifier?

This will become a new UUID type in the next patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826123</commentid>
    <comment_count>11</comment_count>
      <attachid>447753</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-21 14:53:09 -0800</bug_when>
    <thetext>Created attachment 447753
PFL v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826190</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-21 18:32:59 -0800</bug_when>
    <thetext>Committed r287339 (245481@main): &lt;https://commits.webkit.org/245481@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447753.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826192</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-21 18:34:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86792419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826394</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-12-22 14:04:39 -0800</bug_when>
    <thetext>*** Bug 234437 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826396</commentid>
    <comment_count>15</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-12-22 14:04:54 -0800</bug_when>
    <thetext>*** Bug 234436 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447676</attachid>
            <date>2021-12-20 20:08:47 -0800</date>
            <delta_ts>2021-12-20 20:17:23 -0800</delta_ts>
            <desc>Does it build and test v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>71644</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaCBiL1NvdXJjZS9XVEYvd3Rm
L0lkZW50aWZpZWQuaAppbmRleCA1NzI1NWNhYTcyZjcuLjU2ZTllMTdhNTU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lkZW50
aWZpZWQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC0xMDQsNyArMTA1LDI3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVudGlm
aWVkQmFzZTxTdHJpbmcsIFQ+IHsKK3Byb3RlY3RlZDoKKyAgICBVVUlESWRlbnRpZmllZCgpCisg
ICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkpCisgICAgeworICAgIH0KKworICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJZGVu
dGlmaWVkJiBvdGhlcikKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90aGVy
Lmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBVVUlESWRlbnRp
ZmllZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8
U3RyaW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpJZGVudGlmaWVkOwogdXNpbmcgV1RG
OjpUaHJlYWRTYWZlSWRlbnRpZmllZDsKK3VzaW5nIFdURjo6VVVJRElkZW50aWZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwCmluZGV4IDI4MTdlMjFmMDZlNC4uZWM0YTY4ODU2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTAy
LDcgKzEwMiw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgZGlzcGF0Y2hF
cnJvckV2ZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGNsaWVudC5zaG93
KHRoaXMpKQorICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBT
aG93aW5nOwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3Nl
KCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOiB7CiAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKHRoaXMpOworICAgICAgICAgICAg
Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKCp0aGlz
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2xvc2VkOgpAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
OmZyb20ocGFnZSktPmNsaWVudCgpLm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCkBA
IC0yMjUsNyArMjI1LDcgQEAgYm9vbCBOb3RpZmljYXRpb246OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXRlID09IFNob3dpbmcgJiYgbV9oYXNSZWxl
dmFudEV2ZW50TGlzdGVuZXI7CiB9CiAKLU5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpk
YXRhV2l0aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKK05vdGlmaWNhdGlvbkRhdGEgTm90aWZp
Y2F0aW9uOjpkYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBtX3RpdGxlLApA
QCAtMjM1LDcgKzIzNSw3IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhV2l0
aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2Rp
cmVjdGlvbiwKICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLAotICAgICAgICAwCisgICAgICAgIGlkZW50aWZpZXIoKSwKICAgICB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKaW5kZXggZDJjN2QzNzFlZTVhLi5lYmRkMGM5YjllYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIK
KyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJXcml0aW5nTW9kZS5oIgogCkBAIC00OCw3ICs0OSw3IEBAIGNsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjazsKIAogc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiAKLWNsYXNz
IE5vdGlmaWNhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbj4sIHB1
YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsK
K2NsYXNzIE5vdGlmaWNhdGlvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlv
bj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVE
YXRhLCBwdWJsaWMgVVVJRElkZW50aWZpZWQ8Tm90aWZpY2F0aW9uPiB7CiAgICAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9FWFBPUlQoTm90aWZpY2F0aW9uLCBXRUJDT1JFX0VYUE9SVCk7CiBwdWJs
aWM6CiAgICAgdXNpbmcgUGVybWlzc2lvbiA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb247CkBAIC04
OSw3ICs5MCw3IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgTm90aWZp
Y2F0aW9uRGF0YSBkYXRhV2l0aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3Q7CisgICAgV0VCQ09S
RV9FWFBPUlQgTm90aWZpY2F0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CiAKICAgICB1c2luZyBSZWZD
b3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50
LmgKaW5kZXggYjgxZGQ1YjY1ZGUzLi43YTE3OGRmYjgzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgK
QEAgLTQ3LDE5ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUGVybWlzc2lvbkhhbmRsZXIg
PSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBlcm1pc3Npb24pPjsKIAogICAgIC8vIFJlcXVlc3Rz
IHRoYXQgYSBub3RpZmljYXRpb24gYmUgc2hvd24uCi0gICAgdmlydHVhbCBib29sIHNob3coTm90
aWZpY2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiYpID0g
MDsKIAogICAgIC8vIFJlcXVlc3RzIHRoYXQgYSBub3RpZmljYXRpb24gdGhhdCBoYXMgYWxyZWFk
eSBiZWVuIHNob3duIGJlIGNhbmNlbGVkLgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZp
Y2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoTm90aWZpY2F0aW9uJikgPSAw
OwogCi0gICAgLy8gV2hlbiB0aGUgdXNlciBjbG9zZXMgYSBwYWdlLCBvciBxdWl0cyB0aGUgY2xp
ZW50IGFwcGxpY2F0aW9uLCBhbGwgb2YgdGhlIHBhZ2UncwotICAgIC8vIGFzc29jaWF0ZWQgbm90
aWZpY2F0aW9ucyBhcmUgY2xlYXJlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSB7IH0KLSAgICAKICAgICAvLyBJbmZvcm1zIHRo
ZSBwcmVzZW50ZXIgdGhhdCBhIE5vdGlmaWNhdGlvbiBvYmplY3QgaGFzIGJlZW4gZGVzdHJveWVk
CiAgICAgLy8gKHN1Y2ggYXMgYnkgYSBwYWdlIHRyYW5zaXRpb24pLiBUaGUgcHJlc2VudGVyIG1h
eSBjb250aW51ZSBzaG93aW5nCiAgICAgLy8gdGhlIG5vdGlmaWNhdGlvbiwgYnV0IG11c3Qgbm90
IGF0dGVtcHQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlcnMuCi0gICAgdmlydHVhbCB2b2lkIG5v
dGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24mKSA9IDA7CiAK
ICAgICAvLyBJbmZvcm1zIHRoZSBwcmVzZW50ZXIgdGhlIGNvbnRyb2xsZXIgYXR0YWNoZWQgdG8g
dGhlIHBhZ2UgaGFzIGJlZW4gZGVzdHJveWVkLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRp
b25Db250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKaW5kZXggNDg5MWM0MzM1
ODc5Li40NzBmZTNiYTc4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaApAQCAtNDAsNyArNDAsNyBAQCBzdHJ1
Y3QgTm90aWZpY2F0aW9uRGF0YSB7CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmlu
ZzsKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRDsKKyAgICBTdHJpbmcgbm90aWZpY2F0aW9u
SUQ7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtODcsNyArODcsNyBAQCBzdGQ6
Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IE5vdGlmaWNhdGlvbkRhdGE6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogICAgIGlmICghb3JpZ2luU3RyaW5nKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gbm90aWZpY2F0aW9uSUQ7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5vdGlmaWNhdGlvbklEOwogICAgIGRlY29kZXIg
Pj4gbm90aWZpY2F0aW9uSUQ7CiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCmluZGV4IDYyNDkwMGVmZDRmZC4uM2Y2NzhiZTNjMzM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTExNCwxOSArMTE0LDE5
IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oY29u
c3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0CiAvLyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxX
ZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkVjaG9Ud2ljZT4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIFN0cmluZygiRklYTUU6IERvIHVzZWZ1bCB3b3JrIGhlcmUiKSk7CiB9CiAKLXZvaWQgTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCkKK3Zv
aWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiB9CiAK
LXZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNs
ZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCkKK3ZvaWQgTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJikK
IHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAwNTNmMzBhMTVlYWEuLjM1NGU3
NDA4YmUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgK
QEAgLTYwLDkgKzYwLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxO
b3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwotICAgIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykg
ZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERl
c3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgZmluYWw7CiAK
ICAgICB2b2lkIG1heWJlU2VuZENvbm5lY3Rpb25Db25maWd1cmF0aW9uKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCmluZGV4IGUyMTJlZDFmZDYy
Yy4uYjVlMDdkZWNhMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLmgKQEAgLTQxLDkgKzQxLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bklEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZERl
c3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgPSAwOwogCiBw
cml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IGFiY2Y5NzQ2
YjA0OS4uMWM5NTY4OTE1MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogbWVzc2FnZXMg
LT4gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIE5vdFJlZkNvdW50ZWQgewogICAg
IFJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKFN0cmluZyBvcmlnaW5JZGVudGlm
aWVyKSAtPiAoYm9vbCBhbGxvd2VkKSBBc3luYwogICAgIFNob3dOb3RpZmljYXRpb24oc3RydWN0
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0YSkKLSAgICBDYW5jZWxO
b3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCi0gICAgQ2xlYXJOb3RpZmljYXRp
b25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQotICAgIERpZERlc3Ryb3lOb3Rp
ZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCisgICAgQ2FuY2VsTm90aWZpY2F0aW9u
KFN0cmluZyBub3RpZmljYXRpb25JRCkKKyAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPFN0
cmluZz4gbm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24oU3RyaW5n
IG5vdGlmaWNhdGlvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb24uY3BwCmluZGV4IDhiNmMwMzQ0NDA2ZS4uZjljZmNjYzkxOThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCkBA
IC04NSw1ICs4NSwxMCBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLTm90aWZpY2F0aW9uR2V0U2Vj
dXJpdHlPcmlnaW4oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aQogCiB1aW50NjRfdCBXS05v
dGlmaWNhdGlvbkdldElEKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAgICBy
ZXR1cm4gdG9JbXBsKG5vdGlmaWNhdGlvbiktPm5vdGlmaWNhdGlvbklEKCk7CisgICAgcmV0dXJu
IHRvSW1wbChub3RpZmljYXRpb24pLT51aU5vdGlmaWNhdGlvbklEKCk7Cit9CisKK1dLU3RyaW5n
UmVmIFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25SZWYg
bm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwobm90aWZpY2F0
aW9uKS0+Y29yZU5vdGlmaWNhdGlvbklEKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggZDNhZTk4YmY3NGQyLi44ODQxNzRjZDQy
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24u
aApAQCAtNDIsNiArNDIsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25D
b3B5TGFuZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weURpcihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRp
b24pOwogV0tfRVhQT1JUIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tOb3RpZmljYXRpb25HZXRTZWN1
cml0eU9yaWdpbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIHVp
bnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9u
KTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0
aW5nKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNzY5MjM5OTBhYjViLi44ZjQ0OTk4NDEyYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcApAQCAtNTQsNiArNTQsMTEgQEAgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZgogICAg
IHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihub3RpZmlj
YXRpb25JRCk7CiB9CiAKK3ZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlj
a05vdGlmaWNhdGlvbl9iKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1N0
cmluZ1JlZiBub3RpZmljYXRpb25JRCkKK3sKKyAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3Zp
ZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odG9XVEZTdHJpbmcobm90aWZpY2F0aW9uSUQpKTsKK30K
Kwogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9u
cyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJlZiBub3RpZmlj
YXRpb25JRHMpCiB7CiAgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZENsb3NlTm90
aWZpY2F0aW9ucyh0b0ltcGwobm90aWZpY2F0aW9uSURzKSk7CkBAIC02OCw4ICs3MywzIEBAIHZv
aWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xp
Y2llcyhXS05vdGlmaWNhdGlvbk1hCiB7CiAgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRl
ckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKHRvSW1wbChvcmlnaW5zKSk7CiB9Ci0KLXVp
bnQ2NF90IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldExvY2FsSURGb3JUZXN0aW5nKFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyLCBXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24p
Ci17Ci0gICAgcmV0dXJuIHRvSW1wbChtYW5hZ2VyKS0+bm90aWZpY2F0aW9uTG9jYWxJREZvclRl
c3RpbmcodG9JbXBsKG5vdGlmaWNhdGlvbikpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCBiNzg5MDljNmNl
NDIuLjBjZjIxNDUxNzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTM4LDEwICszOCwxMCBAQCBXS19FWFBP
UlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWYgbWFuYWdlcgogCiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFn
ZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZp
Y2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKK1dLX0VYUE9S
VCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25f
YihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tTdHJpbmdSZWYgbm90aWZp
Y2F0aW9uSUQpOwogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJE
aWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYs
IFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0
aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpbiwgYm9v
bCBhbGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVy
RGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1h
bmFnZXJSZWYsIFdLQXJyYXlSZWYgb3JpZ2lucyk7Ci1XS19FWFBPUlQgdWludDY0X3QgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyR2V0TG9jYWxJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIG1hbmFnZXJSZWYsIFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IDA4YTZmNmUyZjRiZi4uYjhk
YTcxYmIwZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1XZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQorV2ViTm90aWZpY2F0aW9uOjpXZWJOb3Rp
ZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKICAgICA6IG1fdGl0bGUoZGF0YS50aXRsZSkK
ICAgICAsIG1fYm9keShkYXRhLmJvZHkpCiAgICAgLCBtX2ljb25VUkwoZGF0YS5pY29uVVJMKQpA
QCAtMzgsNyArMzgsOCBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQogICAgICwgbV9sYW5nKGRhdGEubGFuZ3Vh
Z2UpCiAgICAgLCBtX2RpcihkYXRhLmRpcmVjdGlvbikKICAgICAsIG1fb3JpZ2luKEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoZGF0YS5vcmlnaW5TdHJpbmcpKQotICAgICwg
bV9ub3RpZmljYXRpb25JRChkYXRhLm5vdGlmaWNhdGlvbklEKQorICAgICwgbV9jb3JlTm90aWZp
Y2F0aW9uSUQoZGF0YS5ub3RpZmljYXRpb25JRCkKKyAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFn
ZUlkZW50aWZpZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCmluZGV4IDBkMjJkNDdlMjAxZi4uYzk5
MzA2ZDU1M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9JZGVudGlmaWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0zNywxMSArMzksMTEgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBXZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpOb3RpZmljYXRpb24+IHsKK2NsYXNzIFdlYk5vdGlmaWNh
dGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6Ok5vdGlmaWNh
dGlvbj4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYk5vdGlmaWNhdGlvbj4gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uRGF0YSYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJOb3RpZmljYXRpb24oZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJOb3RpZmljYXRpb24oZGF0YSwgcGFnZUlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBjb25z
dCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQpAQCAtNTIsMTAgKzU0
LDEzIEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXI7IH0KICAgICBBUEk6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogICAgIAotICAgIHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRpb25JRDsgfQorICAgIHVp
bnQ2NF90IHVpTm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0K
KyAgICBjb25zdCBTdHJpbmcmIGNvcmVOb3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29yZU5vdGlmaWNhdGlvbklEOyB9CisKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogCiBwcml2YXRl
OgotICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7
CisgICAgV2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyKTsKIAogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFN0cmlu
ZyBtX2JvZHk7CkBAIC02NCw3ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbGFuZzsK
ICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gbV9kaXI7CiAgICAgUmVmUHRyPEFQ
STo6U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwotICAgIHVpbnQ2NF90IG1fbm90aWZpY2F0aW9u
SUQ7CisgICAgU3RyaW5nIG1fY29yZU5vdGlmaWNhdGlvbklEOworCisgICAgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogfTsKIAogaW5saW5lIGJvb2wgaXNOb3RpZmlj
YXRpb25JRFZhbGlkKHVpbnQ2NF90IGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCmluZGV4IGEyOWFlZDU1MDdlYS4uOGE1ZGIxNzZi
ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuY3BwCkBAIC00NSwxNyArNDUsMTcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXI6OnNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWYKICAg
ICBtX3dlYlBhZ2VQcm94eS5zaG93Tm90aWZpY2F0aW9uKGRhdGEpOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQog
ewogICAgIG1fd2ViUGFnZVByb3h5LmNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5v
dGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKQordm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKQogewogICAgIG1fd2ViUGFn
ZVByb3h5LmNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpOwogfQogCi12b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uSUQpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuZGlkRGVzdHJveU5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXIuaAppbmRleCA0MjUxZjcyZmViZTIuLmQ5NGZiN2M0N2JjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0z
OCw5ICszOCw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRp
b25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGZpbmFsOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0gICAgdm9pZCBk
aWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAg
ICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSBm
aW5hbDsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bm90aWZpY2F0aW9uSURzKSBmaW5hbDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkm
IG1fd2ViUGFnZVByb3h5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCA1NmVmNTA1MzNiMDIuLjExYzI0OWIyODM0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtMzgsMTIgKzM4LDYgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVl
R2xvYmFsTm90aWZpY2F0aW9uSUQgPSAxOwotICAgIHJldHVybiB1bmlxdWVHbG9iYWxOb3RpZmlj
YXRpb25JRCsrOwotfQotCiBjb25zdCBjaGFyKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OnN1cHBsZW1lbnROYW1lKCkKIHsKICAgICByZXR1cm4gIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eSI7CkBAIC05NSw1MSArODksNDcgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogCiB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAg
dWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlv
bklEKCk7Ci0gICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZShu
b3RpZmljYXRpb25EYXRhKTsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFr
ZV9wYWlyKHdlYlBhZ2UtPmlkZW50aWZpZXIoKSwgbm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRp
b25JRCk7Ci0gICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlv
bklELCBub3RpZmljYXRpb25JRFBhaXIpOwotICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZp
Y2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZp
Y2F0aW9uLmNvcHlSZWYoKSkpOworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0
aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAg
ICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLT51aU5vdGlmaWNhdGlv
bklEKCksIG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkpOworICAgIG1fbm90aWZp
Y2F0aW9ucy5zZXQobm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSwgbm90aWZpY2F0
aW9uLmNvcHlSZWYoKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0
aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNl
bChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsKLSAgICBpZiAoV2ViTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHN0ZDo6bWFrZV9w
YWlyKHdlYlBhZ2UtPmlkZW50aWZpZXIoKSwgcGFnZU5vdGlmaWNhdGlvbklEKSkuc2Vjb25kLmdl
dCgpKQotICAgICAgICBtX3Byb3ZpZGVyLT5jYW5jZWwoKm5vdGlmaWNhdGlvbik7CisgICAgaWYg
KGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChwYWdlTm90aWZpY2F0
aW9uSUQpKQorICAgICAgICBtX3Byb3ZpZGVyLT5jYW5jZWwoKndlYk5vdGlmaWNhdGlvbik7CiB9
CiAgICAgCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25J
RCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0
aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9u
SUQpCiB7Ci0gICAgYXV0byBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlv
bnMudGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmlj
YXRpb25JRCkpOwotICAgIGlmICh1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdsb2Jh
bElETm90aWZpY2F0aW9uUGFpci5maXJzdCkgewotICAgICAgICBXZWJOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbiA9IGdsb2JhbElETm90aWZpY2F0aW9uUGFpci5zZWNvbmQuZ2V0KCk7Ci0gICAg
ICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShnbG9iYWxOb3RpZmljYXRpb25JRCk7
Ci0gICAgICAgIG1fcHJvdmlkZXItPmRpZERlc3Ryb3lOb3RpZmljYXRpb24oKm5vdGlmaWNhdGlv
bik7CisgICAgaWYgKGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2Uo
cGFnZU5vdGlmaWNhdGlvbklEKSkgeworICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5y
ZW1vdmUod2ViTm90aWZpY2F0aW9uLT51aU5vdGlmaWNhdGlvbklEKCkpOworICAgICAgICBtX3By
b3ZpZGVyLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKCp3ZWJOb3RpZmljYXRpb24pOwogICAgIH0K
IH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25z
dCBWZWN0b3I8dWludDY0X3Q+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgcmV0dXJuIHBh
Z2VJRCA9PSBkZXNpcmVkUGFnZUlEOwogfQogCi1zdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0
aW9uSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VO
b3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKK3N0YXRpYyBi
b29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRlc2lyZWRQYWdlTm90
aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBk
ZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwog
fQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25z
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFn
ZSwgVmVjdG9yPHVpbnQ2NF90PigpLCBwYWdlSURzTWF0Y2gpOworICAgIGNsZWFyTm90aWZpY2F0
aW9ucyh3ZWJQYWdlLCBWZWN0b3I8U3RyaW5nPigpLCBwYWdlSURzTWF0Y2gpOwogfQogCi12b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklE
cykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMo
V2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFnZU5vdGlmaWNh
dGlvbklEcykKIHsKICAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgcGFnZU5vdGlmaWNh
dGlvbklEcywgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKTsKIH0KIAotdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdl
YlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlm
aWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQordm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25G
aWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlvbikKIHsKICAgICBhdXRvIHRhcmdldFBhZ2VQcm94
eUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigpOwogCkBAIC0xNDcsMTIgKzEzNywxMiBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29ucwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2Fw
YWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byBp
dCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNhdGlvbnMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBhdXRvIHBhZ2VQcm94eUlEID0gaXQtPmtleS5m
aXJzdDsKLSAgICAgICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0gaXQtPmtleS5zZWNv
bmQ7Ci0gICAgICAgIGlmICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIHBhZ2VOb3RpZmlj
YXRpb25JRCwgdGFyZ2V0UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQorICAgICAg
ICBhdXRvIHBhZ2VQcm94eUlEID0gaXQtPnZhbHVlLT5wYWdlSWRlbnRpZmllcigpOworICAgICAg
ICBTdHJpbmcgY29yZU5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlLT5jb3JlTm90aWZpY2F0aW9u
SUQoKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbihwYWdlUHJveHlJRCwgY29yZU5vdGlm
aWNhdGlvbklELCB0YXJnZXRQYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25J
RCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9u
SUQgPSBpdC0+dmFsdWUtPnVpTm90aWZpY2F0aW9uSUQoKTsKICAgICAgICAgZ2xvYmFsTm90aWZp
Y2F0aW9uSURzLmFwcGVuZChnbG9iYWxOb3RpZmljYXRpb25JRCk7CiAgICAgfQogCkBAIC0xNzAs
MTIgKzE2MCwxNCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdAogICAgIGlmIChpdCA9PSBtX2ds
b2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byog
d2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShpdC0+dmFsdWUuZmlyc3QpOworICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChpdC0+dmFsdWUpOworICAg
IEFTU0VSVChub3RpZmljYXRpb24pOworCisgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwogICAgIGlmICgh
d2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlv
bklEID0gaXQtPnZhbHVlLnNlY29uZDsKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlvbihwYWdlTm90
aWZpY2F0aW9uSUQpLCAwKTsKKyAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkU2hvd05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAw
KTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQpCkBAIC0xODMsNDAg
KzE3NSw3MyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRD
bGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIGF1dG8gaXQgPSBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKICAgICBpZiAoaXQg
PT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChpdC0+dmFsdWUpOworICAg
IEFTU0VSVChub3RpZmljYXRpb24pOwogICAgIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVlLmZpcnN0KTsKKyAgICBhdXRvKiB3ZWJQYWdlID0g
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuc2Vjb25kOwotICAgIHdlYlBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNh
dGlvbihwYWdlTm90aWZpY2F0aW9uSUQpLCAwKTsKKyAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24o
aXQtPnZhbHVlKSwgMCk7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpw
cm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgY29yZU5vdGlmaWNhdGlv
bklEKQoreworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChjb3Jl
Tm90aWZpY2F0aW9uSUQpOworICAgIGlmICghbm90aWZpY2F0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNh
dGlvbi0+cGFnZUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24oY29yZU5vdGlmaWNhdGlvbklEKSwgMCk7
Cit9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iYWxOb3RpZmljYXRpb25JRHMpCiB7Ci0gICAg
SGFzaE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0b3I8dWludDY0X3Q+PiBwYWdlTm90aWZpY2F0aW9u
SURzOwotICAgIAorICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPFN0cmluZz4+IHBh
Z2VOb3RpZmljYXRpb25JRHM7CisKICAgICBzaXplX3Qgc2l6ZSA9IGdsb2JhbE5vdGlmaWNhdGlv
bklEcy0+c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlm
aWNhdGlvbklEcy0+YXQ8QVBJOjpVSW50NjQ+KGkpLT52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGl0
ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQorICAgICAgICAvLyBUaGUgcGFzc2Vk
IGFycmF5IG1pZ2h0IGhhdmUgdWludDY0X3QgaWRlbnRpZmllcnMgb3IgU3RyaW5nIGlkZW50aWZp
ZXJzLgorICAgICAgICAvLyBIYW5kbGUgYm90aC4KKworICAgICAgICBTdHJpbmcgY29yZU5vdGlm
aWNhdGlvbklEOworICAgICAgICBhdXRvKiBpbnRWYWx1ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklE
cy0+YXQ8QVBJOjpVSW50NjQ+KGkpOworICAgICAgICBpZiAoaW50VmFsdWUpIHsKKyAgICAgICAg
ICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGludFZhbHVlLT52YWx1
ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgY29yZU5vdGlmaWNh
dGlvbklEID0gaXQtPnZhbHVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byog
c3RyaW5nVmFsdWUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PEFQSTo6U3RyaW5nPihpKTsK
KyAgICAgICAgICAgIGlmICghc3RyaW5nVmFsdWUpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVlLT5zdHJpbmco
KTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCghY29yZU5vdGlmaWNhdGlvbklELmlzRW1w
dHkoKSk7CisKKyAgICAgICAgYXV0byBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMudGFr
ZShjb3JlTm90aWZpY2F0aW9uSUQpOworICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVlLmZpcnN0KSkgeworICAgICAgICBpZiAo
V2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNh
dGlvbi0+cGFnZUlkZW50aWZpZXIoKSkpIHsKICAgICAgICAgICAgIGF1dG8gcGFnZUl0ID0gcGFn
ZU5vdGlmaWNhdGlvbklEcy5maW5kKHdlYlBhZ2UpOwogICAgICAgICAgICAgaWYgKHBhZ2VJdCA9
PSBwYWdlTm90aWZpY2F0aW9uSURzLmVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPHVp
bnQ2NF90PiBuZXdWZWN0b3I7CisgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmV3VmVj
dG9yOwogICAgICAgICAgICAgICAgIG5ld1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNp
emUpOwogICAgICAgICAgICAgICAgIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYWRkKHdl
YlBhZ2UsIFdURk1vdmUobmV3VmVjdG9yKSkuaXRlcmF0b3I7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5zZWNvbmQ7
Ci0gICAgICAgICAgICBwYWdlSXQtPnZhbHVlLmFwcGVuZChwYWdlTm90aWZpY2F0aW9uSUQpOwor
ICAgICAgICAgICAgcGFnZUl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uLT5jb3JlTm90aWZp
Y2F0aW9uSUQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3Zl
KGl0LT52YWx1ZSk7Ci0gICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShpdCk7
CisgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24tPnVp
Tm90aWZpY2F0aW9uSUQoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvIGl0ID0gcGFnZU5vdGlm
aWNhdGlvbklEcy5iZWdpbigpLCBlbmQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmVuZCgpOyBpdCAh
PSBlbmQ7ICsraXQpCkBAIC0yNDksMTYgKzI3NCw0IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJy
CiAgICAgcHJvY2Vzc1Bvb2woKS0+c2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMob3JpZ2luU3Ry
aW5ncykpOwogfQogCi11aW50NjRfdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5vdGlm
aWNhdGlvbkxvY2FsSURGb3JUZXN0aW5nKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQot
ewotICAgIGlmICghbm90aWZpY2F0aW9uKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGF1dG8g
aXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKG5vdGlmaWNhdGlvbi0+bm90aWZpY2F0
aW9uSUQoKSk7Ci0gICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBpdC0+dmFsdWUuc2Vjb25kOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CmluZGV4IGRhZjMzOTdmMzhkNS4uYjE5NTRhOGNmYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmgKQEAgLTYwLDI3ICs2MCwyNiBAQCBwdWJsaWM6CiAgICAgSGFzaE1h
cDxTdHJpbmcsIGJvb2w+IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKICAgICB2b2lkIHNo
b3coV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOwotICAg
IHZvaWQgY2FuY2VsKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCk7
CisgICAgdm9pZCBjYW5jZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZp
Y2F0aW9uSUQpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSopOwot
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYWdlTm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRp
b24oV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQpOwogCiAg
ICAgdm9pZCBwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9u
SUQpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCk7CisgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0
IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRDbG9zZU5vdGlm
aWNhdGlvbnMoQVBJOjpBcnJheSogbm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIHByb3ZpZGVy
RGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KGNvbnN0IEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBi
b29sIGFsbG93ZWQpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xp
Y2llcyhBUEk6OkFycmF5KiBvcmlnaW5zKTsKIAotICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbkxv
Y2FsSURGb3JUZXN0aW5nKFdlYk5vdGlmaWNhdGlvbiopOwotCiAgICAgdXNpbmcgQVBJOjpPYmpl
Y3Q6OnJlZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQb29sKik7CiAK
LSAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBk
ZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMo
V2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklE
cywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlm
aWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVz
aXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9u
SURzKTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKICAgICB2b2lkIHByb2Nlc3NQ
b29sRGVzdHJveWVkKCkgb3ZlcnJpZGU7CkBAIC04OCwxMCArODcsOSBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7Ci0gICAgLy8g
UGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlm
aWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOwotICAgIC8vIEtl
eSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90
aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNvbXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9u
IElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVjdAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8
V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKKworICAgIEhhc2hNYXA8dWludDY0
X3QsIFN0cmluZz4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxXZWJOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDVmZDdmM2EyY2MwNC4uZTkyYWEwNTc1YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg3MzgsMTcgKzg3MzgsMTcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgbm90
aWZpY2F0aW8KICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnNob3codGhpcywgbm90aWZpY2F0aW9uRGF0YSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jYW5jZWwodGhpcywgbm90
aWZpY2F0aW9uSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25z
KGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlv
bklEcykKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzLCBub3RpZmlj
YXRpb25JRHMpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV9wcm9j
ZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
PigpLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjcwZDVkYWNiZTI4Li5kZTZj
YWEwOTljMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDMz
LDkgKzIwMzMsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlv
bihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7Ci0gICAgdm9pZCBjYW5jZWxOb3Rp
ZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgY2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7Ci0gICAgdm9p
ZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2
b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKKyAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0
aW9uSURzKTsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25JRCk7CiAKICAgICB2b2lkIHJlcXVlc3RDb29raWVDb25zZW50KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29va2llQ29uc2VudERlY2lzaW9uUmVzdWx0KT4mJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGI0MzU2YTQyY2QyYi4uODBhZDM2ZTE4N2Y4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTIwNiw5ICsyMDYsMTMgQEAgdm9pZCBXS0J1bmRsZVJl
bW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwg
V0tCdW5kbGUKICAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVBbGxXZWJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKSk7CiB9CiAKLXVpbnQ2
NF90IFdLQnVuZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS1N0cmluZ1Jl
ZiBXS0J1bmRsZUNvcHlXZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAgICByZXR1
cm4gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQoY29udGV4dCwg
bm90aWZpY2F0aW9uKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJLaXQ6OnRvSW1wbChidW5k
bGVSZWYpLT53ZWJOb3RpZmljYXRpb25JRChjb250ZXh0LCBub3RpZmljYXRpb24pOworICAgIGlm
ICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0NvcGllZEFQSSgqaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRUYWJL
ZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5o
CmluZGV4IGE0ZDIzZjUzN2UzNS4uZGM0ZDEzN2JlYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UHJpdmF0ZS5oCkBAIC01Miw3ICs1Miw3IEBAIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlSXNQYWdl
Qm94VmlzaWJsZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhCiBXS19F
WFBPUlQgdm9pZCBXS0J1bmRsZVNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25Gb3JUZXN0aW5nKFdL
QnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbG9jYXRpb24pOwogV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpblN0cmluZ1JlZiwgYm9vbCBh
bGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7Ci1X
S19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRXZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJl
ZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7
CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tC
dW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmlj
YXRpb24pOwogV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZyb21VSW50
OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgZGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wgZW5hYmxl
ZCk7CiAvLyBSZXR1cm5zIGFycmF5IG9mIGRpY3Rpb25hcmllcy4gRGljdGlvbmFyeSBrZXlzIGFy
ZSBkb2N1bWVudCBpZGVudGlmaWVycywgdmFsdWVzIGFyZSBkb2N1bWVudCBVUkxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKaW5kZXggZjA1YzRlYjZmYzRiLi5hZmRkYjczZDk0NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMzEwLDE3ICszMTAsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVt
b3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSogcGFnZSkKICNlbmRpZgog
fQogCi11aW50NjRfdCBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0
UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKK3N0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpz
Q29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKIHsKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IEpTTm90
aWZpY2F0aW9uOjp0b1dyYXBwZWQodG9KUyhqc0NvbnRleHQpLT52bSgpLCB0b0pTKHRvSlMoanND
b250ZXh0KSwganNOb3RpZmljYXRpb24pKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1l
bnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+bm90aWZpY2F0aW9uSURGb3JUZXN0aW5nKG5v
dGlmaWNhdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG5v
dGlmaWNhdGlvbi0+aWRlbnRpZmllcigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oanNDb250
ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oanNOb3RpZmljYXRpb24pOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBTdHJpbmcgc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmgKaW5kZXggNWE0ZjZhODc5YjEzLi43NWQ5ZTU5Mzk5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBA
IC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Np
b24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpOwog
ICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSopOwot
ICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZik7CiAgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50
OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgCiAgICAgdHlwZWRlZiBIYXNo
TWFwPHVpbnQ2NF90LCBTdHJpbmc+IERvY3VtZW50SURUb1VSTE1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKaW5kZXggOWEyMDE4OTJiMWMxLi40NjZlMDZiOWM5ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC01MSwxNCArNTEsNiBAQAogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKQotewot
ICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVOb3RpZmljYXRpb25JRCA9IDE7Ci0gICAgcmV0dXJu
IHVuaXF1ZU5vdGlmaWNhdGlvbklEKys7Ci19Ci0jZW5kaWYKLQogY29uc3QgY2hhciogV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiV2ViTm90
aWZpY2F0aW9uTWFuYWdlciI7CkBAIC0xMjgsMTggKzEyMCw2IEBAIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCkKICNlbmRpZgogfQog
Ci11aW50NjRfdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpub3RpZmljYXRpb25JREZvclRlc3Rp
bmcoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi0gICAgaWYgKCFub3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBtX25vdGlmaWNhdGlvbk1hcC5nZXQobm90aWZpY2F0aW9uKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kTm90aWZp
Y2F0aW9uTWVzc2FnZShXZWJQcm9jZXNzJiBwcm9jZXNzLCBVJiYgbWVzc2FnZSwgV2ViUGFnZSYg
cGFnZSkKIHsKQEAgLTE1MSwyMiArMTMxLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoV2ViUHJvY2VzcyYgcHJvY2VzcywgVSYmIG1lc3NhCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCiAKLWJvb2wgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkK
K2Jvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNh
dGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBp
ZiAoIW5vdGlmaWNhdGlvbiB8fCAhcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmlj
YXRpb25zRW5hYmxlZCgpKQorICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5u
b3RpZmljYXRpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAg
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKCk7Ci0gICAg
bV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uSUQpOwotICAg
IG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwot
ICAgIAotICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNh
dGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLml0ZXJh
dG9yOwotICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAgYXV0byBu
b3RpZmljYXRpb25EYXRhID0gbm90aWZpY2F0aW9uLT5kYXRhV2l0aG91dE5vdGlmaWNhdGlvbklE
KCk7Ci0gICAgbm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbklE
OwotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05vdGlmaWNhdGlvbihXVEZNb3ZlKG5v
dGlmaWNhdGlvbkRhdGEpKSwgKnBhZ2UpOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5v
dGlmaWNhdGlvbi5pZGVudGlmaWVyKCksICZub3RpZmljYXRpb24pOworCisgICAgc2VuZE5vdGlm
aWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkpLCAqcGFn
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRp
b24pOwpAQCAtMTc1LDcyICsxNDgsNDQgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpz
aG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogI2VuZGlmCiB9
CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpj
YW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CiAjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFub3RpZmljYXRpb24gfHwgIXBhZ2UtPmNv
cmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKKyAgICBpZiAoIXBh
Z2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gbV9ub3RpZmlj
YXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKCFub3RpZmljYXRpb25JRCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2Vz
cywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgKnBhZ2UpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0obm90aWZpY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0jZW5kaWYKLX0KIAot
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViUGFnZSogcGFnZSkKLXsKLSNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwOjppdGVyYXRv
ciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5maW5kKGNvbnRleHQpOwotICAgIGlmIChp
dCA9PSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpCisgICAgYXV0byBtYXBwZWROb3Rp
ZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb24uaWRlbnRpZmll
cigpKTsKKyAgICBpZiAoIW1hcHBlZE5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOworICAg
IEFTU0VSVChtYXBwZWROb3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7CiAKLSAgICBWZWN0
b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMgPSBpdC0+dmFsdWU7Ci0gICAgc2VuZE5vdGlm
aWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyOjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSwgKnBhZ2Up
OwotICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxOb3RpZmljYXRp
b24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25J
RHNbaV0pOwotICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBub3RpZmljYXRpb24tPmZpbmFsaXplKCk7Ci0gICAgICAgIG1fbm90aWZpY2F0
aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24pOwotICAgIH0KLSAgICAKLSAgICBtX25vdGlmaWNh
dGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZSht
X3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkNh
bmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOwogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNh
dGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFn
ZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBSZWZQdHIgcHJvdGVj
dGVkTm90aWZpY2F0aW9uIHsgbm90aWZpY2F0aW9uIH07CisgICAgUmVmIHByb3RlY3RlZE5vdGlm
aWNhdGlvbiB7IG5vdGlmaWNhdGlvbiB9OwogCi0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQg
PSBtX25vdGlmaWNhdGlvbk1hcC50YWtlKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKCFub3RpZmlj
YXRpb25JRCkKKyAgICBhdXRvIHRha2VuTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1h
cC50YWtlKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpOworICAgIGlmICghdGFrZW5Ob3RpZmlj
YXRpb24pCiAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQodGFrZW5Ob3RpZmljYXRpb24gPT0g
Jm5vdGlmaWNhdGlvbik7CiAKLSAgICBtX25vdGlmaWNhdGlvbklETWFwLnJlbW92ZShub3RpZmlj
YXRpb25JRCk7Ci0gICAgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAobm90aWZpY2F0
aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9j
ZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0
cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgKnBhZ2UpOworICAgIHNlbmROb3RpZmlj
YXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmll
cigpKSwgKnBhZ2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAg
ICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYg
KCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQotICAgICAgICByZXR1cm47
Ci0gICAgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmlj
YXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQog
ICAgICAgICByZXR1cm47CkBAIC0yNTEsMTIgKzE5Niw5IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKICNl
bmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlk
KG5vdGlmaWNhdGlvbklEKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVmUHRyPE5vdGlmaWNh
dGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9u
SUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yNjksMjIg
KzIxMSwxNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0
aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xv
c2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpCiB7
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0
aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
LSAgICAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb25JRHNbaV07Ci0g
ICAgICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5vdGlmaWNhdGlvbklEKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0
aW9uSURzW2ldOwogCiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9
IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRCk7CiAgICAgICAgIGlmICgh
bm90aWZpY2F0aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9ub3RpZmlj
YXRpb25NYXAucmVtb3ZlKG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHJlbW92ZU5vdGlmaWNhdGlv
bkZyb21Db250ZXh0TWFwKG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uZ2V0KCkpOwotCiAg
ICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CiAgICAgfQogI2Vsc2UK
QEAgLTI5MiwxOCArMjI5LDQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9z
ZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWYKICNlbmRpZgogfQog
Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OnJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
LCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICAvLyBUaGlzIGlzIGEgaGVscGVy
IGZ1bmN0aW9uIGZvciBtYW5hZ2luZyB0aGUgaGFzaCBtYXBzLgotICAgIE5vdGlmaWNhdGlvbkNv
bnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQobm90
aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVChpdCAhPSBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpOwotICAgIHNpemVfdCBpbmRleCA9IGl0LT52
YWx1ZS5maW5kKG5vdGlmaWNhdGlvbklEKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQp
OwotICAgIGl0LT52YWx1ZS5yZW1vdmUoaW5kZXgpOwotICAgIGlmIChpdC0+dmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKLX0KLSNl
bmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
aAppbmRleCA2ZWU5NGY1NmIwM2EuLjJiODBiZWY0ZGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RpZmljYXRpb25DbGllbnQuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KQEAgLTUzLDExICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogc3VwcGxlbWVudE5hbWUoKTsKICAgICAKLSAgICBib29sIHNob3coV2ViQ29yZTo6Tm90
aWZpY2F0aW9uKiwgV2ViUGFnZSopOwotICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbiosIFdlYlBhZ2UqKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViUGFnZSopOworICAgIGJvb2wgc2hvdyhXZWJDb3Jl
OjpOb3RpZmljYXRpb24mLCBXZWJQYWdlKik7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uJiwgV2ViUGFnZSopOworCiAgICAgLy8gVGhpcyBjYWxsYmFjayBjb21lcyBmcm9t
IFdlYkNvcmUsIG5vdCBtZXNzYWdlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgotICAgIHZvaWQgZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihXZWJDb3JlOjpOb3RpZmljYXRpb24qLCBXZWJQYWdlKik7Cisg
ICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYsIFdl
YlBhZ2UqKTsKIAogICAgIHZvaWQgZGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24oY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAKQEAgLTY1LDcgKzY2LDYgQEAg
cHVibGljOgogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBwb2xp
Y3lGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpIGNvbnN0OwogCiAgICAgdm9p
ZCByZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKTsKLSAgICB1aW50NjRfdCBub3RpZmlj
YXRpb25JREZvclRlc3RpbmcoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKik7CiAKIHByaXZhdGU6CiAg
ICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKQEAgLTc1LDI3ICs3NSwxNyBAQCBwcml2YXRlOgog
ICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdm9pZCBkaWRTaG93Tm90
aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZENsaWNrTm90
aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZENsb3NlTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOworICAg
IHZvaWQgZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsK
KyAgICB2b2lkIGRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9u
SUQpOworICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKLSAgICAKLSNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKLSAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0
TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBXZWJDb3JlOjpOb3RpZmljYXRpb24qKTsKLSNl
bmRpZgogCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+
LCB1aW50NjRfdD4gTm90aWZpY2F0aW9uTWFwOwotICAgIE5vdGlmaWNhdGlvbk1hcCBtX25vdGlm
aWNhdGlvbk1hcDsKLSAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxX
ZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPj4gTm90aWZpY2F0aW9u
SURNYXA7CiAgICAgTm90aWZpY2F0aW9uSURNYXAgbV9ub3RpZmljYXRpb25JRE1hcDsKICAgICAK
LSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+LCBWZWN0b3I8dWludDY0X3Q+PiBOb3RpZmljYXRpb25Db250ZXh0TWFwOwotICAgIE5vdGlm
aWNhdGlvbkNvbnRleHRNYXAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwOwotICAgIAogICAgIEhh
c2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zTWFwOwogI2VuZGlmCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNiMzE4NzA5
ZDVkLi4yMTY4OGU5MmY0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZFNob3dO
b3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIERpZENsaWNrTm90aWZp
Y2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICBEaWRDbG9zZU5vdGlmaWNhdGlv
bnMoVmVjdG9yPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMpOworICAgIERpZFNob3dOb3RpZmlj
YXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbGlja05vdGlmaWNhdGlvbihT
dHJpbmcgbm90aWZpY2F0aW9uSUQpOworICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhWZWN0b3I8
U3RyaW5nPiBub3RpZmljYXRpb25JRHMpOwogICAgIERpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lz
aW9uKFN0cmluZyBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgRGlkUmVtb3ZlTm90
aWZpY2F0aW9uRGVjaXNpb25zKFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmluZ3MpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlm
aWNhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAppbmRleCBjYWU1MDk1ZDM5NmUuLmMyNGVkMzdk
NzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKQEAgLTQ2LDIyICs0Niwx
NyBAQCBXZWJOb3RpZmljYXRpb25DbGllbnQ6On5XZWJOb3RpZmljYXRpb25DbGllbnQoKQogewog
fQogCi1ib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlm
aWNhdGlvbikKK2Jvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiYg
bm90aWZpY2F0aW9uKQogewogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cobm90aWZpY2F0aW9uLCBtX3Bh
Z2UpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3Rp
ZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
dXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNhbmNlbChub3RpZmljYXRpb24s
IG1fcGFnZSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNh
dGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNsZWFy
Tm90aWZpY2F0aW9ucyhjb250ZXh0LCBtX3BhZ2UpOwotfQotCi12b2lkIFdlYk5vdGlmaWNhdGlv
bkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERl
c3Ryb3llZChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ry
b3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBtX3BhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNh
dGlvbkNsaWVudC5oCmluZGV4IGEzMTQwOTA5MGQ2NC4uZGNkMjA4OTQ2MmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00NSwxMCArNDUsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzaG93
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25z
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2b2lkIG5v
dGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlk
ZTsKKyAgICBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBu
b3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUGVybWlzc2lvbkhhbmRsZXImJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmlu
ZGV4IDAyZjFkYjA0M2Q4OC4uZTU3MTUzZjVmYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQuaApAQCAtNDUsMTAgKzQ1LDkgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklERm9yVGVzdGluZyhXZWJDb3JlOjpOb3RpZmljYXRpb24qKTsKIAogcHJpdmF0ZToKLSAgICBi
b29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5j
ZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAg
IHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiop
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24m
KSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBQZXJtaXNzaW9uSGFuZGxlciYmKSBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKQEAgLTU3LDkgKzU2LDYgQEAgcHJp
dmF0ZToKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBIYXNoTWFwPFJlZlB0cjxXZWJD
b3JlOjpOb3RpZmljYXRpb24+LCBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPj4gbV9ub3RpZmlj
YXRpb25NYXA7Ci0gICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiwgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+Pj4g
Tm90aWZpY2F0aW9uQ29udGV4dE1hcDsKLSAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwIG1fbm90
aWZpY2F0aW9uQ29udGV4dE1hcDsKIAogICAgIGJvb2wgbV9ldmVyUmVxdWVzdGVkUGVybWlzc2lv
biB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCmluZGV4IDM5ZWRj
NzI3ZGQ1YS4uYzBhYWQwOTkzYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBA
IC01OCw2MiArNTgsMzQgQEAgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpXZWJOb3RpZmljYXRpb25D
bGllbnQoV2ViVmlldyAqd2ViVmlldykKIHsKIH0KIAotYm9vbCBXZWJOb3RpZmljYXRpb25DbGll
bnQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCitib29sIFdlYk5vdGlmaWNhdGlv
bkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAoIVtt
X3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKCk7
Ci0gICAgUmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0gYWRvcHRO
UyhbW1dlYk5vdGlmaWNhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOm5vdGlm
aWNhdGlvbiBub3RpZmljYXRpb25JRDpub3RpZmljYXRpb25JRF0pOwotICAgIG1fbm90aWZpY2F0
aW9uTWFwLnNldChub3RpZmljYXRpb24sIHdlYk5vdGlmaWNhdGlvbik7Ci0KLSAgICBhdXRvIGl0
ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+PigpKS5pdGVy
YXRvcjsKLSAgICBpdC0+dmFsdWUuYXBwZW5kKHdlYk5vdGlmaWNhdGlvbik7CisgICAgUmV0YWlu
UHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0gYWRvcHROUyhbW1dlYk5vdGlm
aWNhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOiZub3RpZmljYXRpb24gbm90
aWZpY2F0aW9uSUQ6bm90aWZpY2F0aW9uSURdKTsKKyAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQo
Jm5vdGlmaWNhdGlvbiwgd2ViTm90aWZpY2F0aW9uKTsKIAogICAgIFtbbV93ZWJWaWV3IF9ub3Rp
ZmljYXRpb25Qcm92aWRlcl0gc2hvd05vdGlmaWNhdGlvbjp3ZWJOb3RpZmljYXRpb24uZ2V0KCkg
ZnJvbVdlYlZpZXc6bV93ZWJWaWV3XTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24pCiB7Ci0gICAgV2ViTm90aWZpY2F0aW9uICp3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNh
dGlvbk1hcC5nZXQobm90aWZpY2F0aW9uKS5nZXQoKTsKKyAgICBXZWJOb3RpZmljYXRpb24gKndl
Yk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uTWFwLmdldCgmbm90aWZpY2F0aW9uKS5nZXQo
KTsKICAgICBpZiAoIXdlYk5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgW1tt
X3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBjYW5jZWxOb3RpZmljYXRpb246d2ViTm90
aWZpY2F0aW9uXTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZp
Y2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIGF1dG8gaXQg
PSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChjb250ZXh0KTsKLSAgICBpZiAoaXQgPT0g
bV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgYXV0byBmaW5hbGl6ZWROb3RpZmljYXRpb25JRHMgPSBjcmVhdGVOU0FycmF5KGl0LT52YWx1
ZSwgWyZdIChhdXRvJiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgYXV0byYgY29yZU5vdGlmaWNh
dGlvbiA9ICpjb3JlKG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0gICAgICAgIGNvcmVOb3RpZmljYXRp
b24uZmluYWxpemUoKTsKLSAgICAgICAgbV9ub3RpZmljYXRpb25NYXAucmVtb3ZlKCZjb3JlTm90
aWZpY2F0aW9uKTsKLSAgICAgICAgcmV0dXJuIEAoW25vdGlmaWNhdGlvbiBub3RpZmljYXRpb25J
RF0pOwotICAgIH0pOwotCi0gICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBj
bGVhck5vdGlmaWNhdGlvbnM6ZmluYWxpemVkTm90aWZpY2F0aW9uSURzLmdldCgpXTsKLSAgICBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKLX0KLQotdm9pZCBXZWJOb3RpZmlj
YXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmpl
Y3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgUmV0YWluUHRy
PFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25NYXAudGFr
ZShub3RpZmljYXRpb24pOworICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlm
aWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uTWFwLnRha2UoJm5vdGlmaWNhdGlvbik7CiAgICAgaWYg
KCF3ZWJOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaXQgPSBtX25v
dGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQo
KSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQtPnZhbHVlLmZpbmQod2ViTm90aWZpY2F0aW9uKTsK
LSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGl0LT52YWx1ZS5yZW1vdmUoaW5k
ZXgpOwotICAgIGlmIChpdC0+dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBtX25vdGlmaWNhdGlv
bkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKLQogICAgIFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Q
cm92aWRlcl0gbm90aWZpY2F0aW9uRGVzdHJveWVkOndlYk5vdGlmaWNhdGlvbi5nZXQoKV07CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjdhN2QxMDBhYjk3Li43ZThlZDQyMGJiN2MgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCkBAIC02NjMsOSArNjYzLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9z
dFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKICAgICBXS0J1bmRsZVBh
Z2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhwYWdlKCktPnBhZ2UoKSwgdG9XSygi
U2V0Vmlld1NpemUiKS5nZXQoKSwgYm9keS5nZXQoKSwgMCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9u
Q2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgcG9zdFBhZ2VNZXNzYWdl
KCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShu
b3RpZmljYXRpb25JRCkpKTsKKyAgICBwb3N0UGFnZU1lc3NhZ2UoIlNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcykKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAppbmRleCA2ODNmZDg1NDc1N2EuLjYyNDc1Njg5ODNiYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAtOTQs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0U2V0QmFja2luZ1NjYWxlRmFjdG9yKGRv
dWJsZSk7CiAgICAgdm9pZCBwb3N0U2V0V2luZG93SXNLZXkoYm9vbCk7CiAgICAgdm9pZCBwb3N0
U2V0Vmlld1NpemUoZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KTsKLSAgICB2b2lkIHBvc3RT
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAg
ICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlm
aWNhdGlvbklEKTsKICAgICB2b2lkIHBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wpOwogCiAg
ICAgLy8gR2VvbG9jYXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBhMzI4MGRmMTZjZDQuLmMzM2E4ZTUwZDQy
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCkBAIC04ODEsNyArODgxLDkgQEAgdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB2b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiB7CiAgICAgYXV0
byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAgaW5q
ZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tCdW5kbGVHZXRX
ZWJOb3RpZmljYXRpb25JRChpbmplY3RlZEJ1bmRsZS5idW5kbGUoKSwgbWFpbkZyYW1lSlNDb250
ZXh0KCksIG5vdGlmaWNhdGlvbikpOworCisgICAgYXV0byBub3RpZmljYXRpb25JRCA9IGFkb3B0
V0soV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoaW5qZWN0ZWRCdW5kbGUuYnVuZGxlKCks
IG1haW5GcmFtZUpTQ29udGV4dCgpLCBub3RpZmljYXRpb24pKTsKKyAgICBpbmplY3RlZEJ1bmRs
ZS5wb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhub3RpZmljYXRpb25JRC5nZXQoKSk7
CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgZW5h
YmxlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYWEx
ZDViZGUxNGJlLi41OTJlYWQwYzkzYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpk
aWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KFdLUGFnZVJlZikKICAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAKLXZvaWQgVGVzdENv
bnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sodWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
KFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhtYWluV2ViVmlldygpLT5wYWdlKCks
IG5vdGlmaWNhdGlvbklEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCA0MDNlZGMyM2U4NTAuLjQ2NGY5NjBhYjIxMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGJlZm9yZVVubG9hZFJldHVyblZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9iZWZvcmVVbmxvYWRS
ZXR1cm5WYWx1ZTsgfQogICAgIHZvaWQgc2V0QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoYm9vbCB2
YWx1ZSkgeyBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlID0gdmFsdWU7IH0KIAotICAgIHZvaWQg
c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayh1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Cisg
ICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNh
dGlvbklEKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCA3MmZhODJiYmMwMTAuLjJiZjRjMTk5ZTQ4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZQogICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIpKSB7Ci0gICAgICAg
IHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHkpOworICAg
ICAgICBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5
KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApp
bmRleCBjZDVmYzY2MjE1YTQuLjU4ZTFmYWY1YmViZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Qcm92aWRlci5o
IgogCisjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLTXV0
YWJsZUFycmF5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgpAQCAtNjYsOCArNjcsOCBAQCBXZWJO
b3RpZmljYXRpb25Qcm92aWRlcjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoKQogCiBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6fldlYk5vdGlmaWNhdGlvblByb3ZpZGVyKCkKIHsKLSAgICBmb3Ig
KGF1dG8mIG1hbmFnZXIgOiBtX293bmVkTm90aWZpY2F0aW9ucykKLSAgICAgICAgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5rZXkuZ2V0KCksIG51bGxwdHIpOworICAg
IGZvciAoYXV0byYgbWFuYWdlciA6IG1fa25vd25NYW5hZ2VycykKKyAgICAgICAgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5nZXQoKSwgbnVsbHB0cik7CiB9CiAKIFdL
Tm90aWZpY2F0aW9uUHJvdmlkZXJWMCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cHJvdmlkZXIo
KQpAQCAtODksNDQgKzkwLDI2IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNob3dX
ZWJOb3RpZmljYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdLTm90aWZpY2F0aW9uCiB7CiAgICAgYXV0
byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdlKTsKICAgICBhdXRvIG5vdGlmaWNhdGlv
bk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKGNvbnRleHQpOwotICAg
IHVpbnQ2NF90IGlkID0gV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRpb24pOworICAgIEFT
U0VSVChtX2tub3duTWFuYWdlcnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwogCi0g
ICAgQVNTRVJUKG1fb3duZWROb3RpZmljYXRpb25zLmNvbnRhaW5zKG5vdGlmaWNhdGlvbk1hbmFn
ZXIpKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobm90
aWZpY2F0aW9uTWFuYWdlciktPnZhbHVlLmFkZChpZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX293
bmluZ01hbmFnZXIuc2V0KGlkLCBub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7Ci0gICAgYXV0byBhZGRSZXN1
bHQzID0gbV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAuYWRkKHN0ZDo6bWFrZV9wYWly
KHBhZ2UsIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldExvY2FsSURGb3JUZXN0aW5nKG5vdGlmaWNh
dGlvbk1hbmFnZXIsIG5vdGlmaWNhdGlvbikpLCBpZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQzLCBhZGRSZXN1bHQzLmlzTmV3RW50cnkpOworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIg
PSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbik7CisgICAgYXV0byBjb3JlSWRlbnRp
ZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhub3RpZmlj
YXRpb24pKTsKIAotICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlm
aWNhdGlvbihub3RpZmljYXRpb25NYW5hZ2VyLCBpZCk7Ci19CisgICAgYXV0byBhZGRSZXN1bHQg
PSBtX293bmluZ01hbmFnZXIuc2V0KHRvV1RGU3RyaW5nKGNvcmVJZGVudGlmaWVyLmdldCgpKSwg
bm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKIAotc3RhdGljIHZvaWQgcmVtb3ZlR2xvYmFsSURGcm9tSURNYXAo
SGFzaE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50NjRfdD4sIHVpbnQ2NF90PiYgbWFwLCB1
aW50NjRfdCBpZCkKLXsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1hcC5iZWdpbigpOyBpdGVyICE9
IG1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLT52YWx1ZSA9PSBpZCkgewot
ICAgICAgICAgICAgbWFwLnJlbW92ZShpdGVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBXS05vdGlmaWNhdGlv
bk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uTWFuYWdlciwg
aWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNsb3NlV2Vi
Tm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAgICB1aW50
NjRfdCBpZCA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKTsKLSAgICBBU1NFUlQo
bV9vd25pbmdNYW5hZ2VyLmNvbnRhaW5zKGlkKSk7Ci0gICAgYXV0byBub3RpZmljYXRpb25NYW5h
Z2VyID0gbV9vd25pbmdNYW5hZ2VyLmdldChpZCk7Ci0KLSAgICBBU1NFUlQobV9vd25lZE5vdGlm
aWNhdGlvbnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwotICAgIGJvb2wgc3VjY2Vz
cyA9IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uTWFuYWdlciktPnZhbHVl
LnJlbW92ZShpZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKLSAgICBt
X293bmluZ01hbmFnZXIucmVtb3ZlKGlkKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSB0b1dURlN0
cmluZyhhZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3Rpbmcobm90aWZpY2F0
aW9uKSkuZ2V0KCkpOwogCi0gICAgcmVtb3ZlR2xvYmFsSURGcm9tSURNYXAobV9sb2NhbFRvR2xv
YmFsTm90aWZpY2F0aW9uSURNYXAsIGlkKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIg
PSBtX293bmluZ01hbmFnZXIudGFrZShpZGVudGlmaWVyKTsKKyAgICBBU1NFUlQobm90aWZpY2F0
aW9uTWFuYWdlcik7CisgICAgQVNTRVJUKG1fa25vd25NYW5hZ2Vycy5jb250YWlucyhub3RpZmlj
YXRpb25NYW5hZ2VyKSk7CiAKLSAgICBhdXRvIHdrSUQgPSBhZG9wdFdLKFdLVUludDY0Q3JlYXRl
KGlkKSk7CisgICAgYXV0byB3a0lEID0gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShXS05vdGlmaWNh
dGlvbkdldElEKG5vdGlmaWNhdGlvbikpKTsKICAgICBhdXRvIGFycmF5ID0gYWRvcHRXSyhXS011
dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwg
d2tJRC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5v
dGlmaWNhdGlvbnMobm90aWZpY2F0aW9uTWFuYWdlciwgYXJyYXkuZ2V0KCkpOwpAQCAtMTM0LDIz
ICsxMTcsMjggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VXZWJOb3RpZmlj
YXRpb24oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW8KIAogdm9pZCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYgbWFuYWdlcikKIHsKLSAgICBtX293bmVkTm90aWZpY2F0aW9ucy5hZGQobWFuYWdlciwgSGFz
aFNldDx1aW50NjRfdD4oKSk7CisgICAgQVNTRVJUKCFtX2tub3duTWFuYWdlcnMuY29udGFpbnMo
bWFuYWdlcikpOworICAgIG1fa25vd25NYW5hZ2Vycy5hZGQobWFuYWdlcik7CiB9CiAKIHZvaWQg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb3du
ZWROb3RpZmljYXRpb25zLmZpbmQobWFuYWdlcik7Ci0gICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1f
b3duZWROb3RpZmljYXRpb25zLmVuZCgpKTsKLSAgICBhdXRvIHRvUmVtb3ZlID0gaXRlcmF0b3It
PnZhbHVlOwotICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gZ3VhcmQo
bWFuYWdlcik7Ci0gICAgbV9vd25lZE5vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXJhdG9yKTsKKyAg
ICBhdXRvIHByb3RlY3RlZE1hbmFnZXIgPSBtX2tub3duTWFuYWdlcnMudGFrZShtYW5hZ2VyKTsK
KyAgICBBU1NFUlQocHJvdGVjdGVkTWFuYWdlcik7CisKKyAgICBhdXRvIHRvUmVtb3ZlID0gVmVj
dG9yPFN0cmluZz4geyB9OworICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX293bmluZ01hbmFn
ZXIpIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVlICE9IG1hbmFnZXIpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgdG9SZW1vdmUuYXBwZW5kKGl0ZXJhdG9yLmtleSk7CisgICAg
fQorCiAgICAgYXV0byBhcnJheSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7Ci0g
ICAgZm9yICh1aW50NjRfdCBub3RpZmljYXRpb25JRCA6IHRvUmVtb3ZlKSB7Ci0gICAgICAgIGJv
b2wgc3VjY2VzcyA9IG1fb3duaW5nTWFuYWdlci5yZW1vdmUobm90aWZpY2F0aW9uSUQpOwotICAg
ICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgICAgICByZW1vdmVHbG9i
YWxJREZyb21JRE1hcChtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcCwgbm90aWZpY2F0
aW9uSUQpOwotICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgYWRvcHRXSyhX
S1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25JRCkpLmdldCgpKTsKKyAgICBmb3IgKGF1dG8mIGlk
ZW50aWZpZXIgOiB0b1JlbW92ZSkgeworICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5n
ZXQoKSwgdG9XSyhpZGVudGlmaWVyKS5nZXQoKSk7CisgICAgICAgIG1fb3duaW5nTWFuYWdlci5y
ZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQorCiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJv
dmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMobWFuYWdlciwgYXJyYXkuZ2V0KCkpOwogfQogCkBA
IC0xNjAsMjggKzE0OCwyMyBAQCBXS0RpY3Rpb25hcnlSZWYgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKICAgICByZXR1cm4gV0tNdXRhYmxlRGljdGlv
bmFyeUNyZWF0ZSgpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiBwYWdlLCB1aW50NjRfdCBub3RpZmljYXRp
b25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKIHsKLSAgICBB
U1NFUlQobV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAuY29udGFpbnMoc3RkOjptYWtl
X3BhaXIocGFnZSwgbm90aWZpY2F0aW9uSUQpKSk7Ci0gICAgYXV0byBnbG9iYWxJRCA9IG1fbG9j
YWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLmdldChzdGQ6Om1ha2VfcGFpcihwYWdlLCBub3Rp
ZmljYXRpb25JRCkpOwotICAgIEFTU0VSVChtX293bmluZ01hbmFnZXIuY29udGFpbnMoZ2xvYmFs
SUQpKTsKLSAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0
aW9uKG1fb3duaW5nTWFuYWdlci5nZXQoZ2xvYmFsSUQpLCBnbG9iYWxJRCk7CisgICAgYXV0byBp
ZGVudGlmaWVyID0gdG9XVEZTdHJpbmcobm90aWZpY2F0aW9uSUQpOworICAgIEFTU0VSVChtX293
bmluZ01hbmFnZXIuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKG1fb3duaW5nTWFuYWdlci5nZXQo
aWRlbnRpZmllciksIG5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6cmVzZXQoKQogewotICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uUGFpciA6IG1f
b3duZWROb3RpZmljYXRpb25zKSB7Ci0gICAgICAgIGlmIChub3RpZmljYXRpb25QYWlyLnZhbHVl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGZvciAoYXV0byBpdGVyYXRv
ciA6IG1fb3duaW5nTWFuYWdlcikgewogICAgICAgICBhdXRvIGFycmF5ID0gYWRvcHRXSyhXS011
dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgZm9yICh1aW50NjRfdCBub3RpZmljYXRpb25J
RCA6IG5vdGlmaWNhdGlvblBhaXIudmFsdWUpCi0gICAgICAgICAgICBXS0FycmF5QXBwZW5kSXRl
bShhcnJheS5nZXQoKSwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25JRCkpLmdl
dCgpKTsKLQotICAgICAgICBub3RpZmljYXRpb25QYWlyLnZhbHVlLmNsZWFyKCk7Ci0gICAgICAg
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKG5vdGlm
aWNhdGlvblBhaXIua2V5LmdldCgpLCBhcnJheS5nZXQoKSk7CisgICAgICAgIFdLQXJyYXlBcHBl
bmRJdGVtKGFycmF5LmdldCgpLCB0b1dLKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOworICAgICAgICBX
S05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhpdGVyYXRv
ci52YWx1ZSwgYXJyYXkuZ2V0KCkpOwogICAgIH0KKwogICAgIG1fb3duaW5nTWFuYWdlci5jbGVh
cigpOwotICAgIG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLmNsZWFyKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGNjZjhiMWJjZTk5Ni4uMzkyNjFiZDQyNjVkIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTQ2LDE1ICs0Nywx
MiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZik7CiAgICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKCk7CiAKLSAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdl
UmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpOwogICAg
IHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBJbnZlcnNlcyBvZiBlYWNoIG90aGVy
LgotICAgIEhhc2hNYXA8V0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiwgSGFz
aFNldDx1aW50NjRfdD4+IG1fb3duZWROb3RpZmljYXRpb25zOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdNYW5hZ2VyOwotCi0gICAgSGFz
aE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50NjRfdD4sIHVpbnQ2NF90PiBtX2xvY2FsVG9H
bG9iYWxOb3RpZmljYXRpb25JRE1hcDsKKyAgICBIYXNoU2V0PFdLUmV0YWluUHRyPFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2VyczsKKyAgICBIYXNoTWFwPFN0cmluZywg
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01hbmFnZXI7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447677</attachid>
            <date>2021-12-20 20:17:12 -0800</date>
            <delta_ts>2021-12-20 20:41:42 -0800</delta_ts>
            <desc>Does it build and test v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>71821</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaCBiL1NvdXJjZS9XVEYvd3Rm
L0lkZW50aWZpZWQuaAppbmRleCA1NzI1NWNhYTcyZjcuLjU2ZTllMTdhNTU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lkZW50
aWZpZWQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC0xMDQsNyArMTA1LDI3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVudGlm
aWVkQmFzZTxTdHJpbmcsIFQ+IHsKK3Byb3RlY3RlZDoKKyAgICBVVUlESWRlbnRpZmllZCgpCisg
ICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkpCisgICAgeworICAgIH0KKworICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJZGVu
dGlmaWVkJiBvdGhlcikKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90aGVy
Lmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBVVUlESWRlbnRp
ZmllZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8
U3RyaW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpJZGVudGlmaWVkOwogdXNpbmcgV1RG
OjpUaHJlYWRTYWZlSWRlbnRpZmllZDsKK3VzaW5nIFdURjo6VVVJRElkZW50aWZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwCmluZGV4IDI4MTdlMjFmMDZlNC4uZWM0YTY4ODU2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTAy
LDcgKzEwMiw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgZGlzcGF0Y2hF
cnJvckV2ZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGNsaWVudC5zaG93
KHRoaXMpKQorICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBT
aG93aW5nOwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3Nl
KCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOiB7CiAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKHRoaXMpOworICAgICAgICAgICAg
Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKCp0aGlz
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2xvc2VkOgpAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
OmZyb20ocGFnZSktPmNsaWVudCgpLm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCkBA
IC0yMjUsNyArMjI1LDcgQEAgYm9vbCBOb3RpZmljYXRpb246OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXRlID09IFNob3dpbmcgJiYgbV9oYXNSZWxl
dmFudEV2ZW50TGlzdGVuZXI7CiB9CiAKLU5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpk
YXRhV2l0aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKK05vdGlmaWNhdGlvbkRhdGEgTm90aWZp
Y2F0aW9uOjpkYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBtX3RpdGxlLApA
QCAtMjM1LDcgKzIzNSw3IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhV2l0
aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2Rp
cmVjdGlvbiwKICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLAotICAgICAgICAwCisgICAgICAgIGlkZW50aWZpZXIoKSwKICAgICB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKaW5kZXggZmUwY2Y0YzBiZDk5Li5hMDczNDEzZmFlOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIK
KyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJXcml0aW5nTW9kZS5oIgogCkBAIC00OCw3ICs0OSw3IEBAIGNsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjazsKIAogc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiAKLWNsYXNz
IE5vdGlmaWNhdGlvbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOb3RpZmlj
YXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSB7CitjbGFzcyBOb3RpZmljYXRpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBVVUlESWRlbnRpZmllZDxOb3RpZmljYXRp
b24+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChOb3RpZmljYXRpb24sIFdF
QkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKICAgICB1c2luZyBQZXJtaXNzaW9uID0gTm90aWZpY2F0
aW9uUGVybWlzc2lvbjsKQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb25EYXRhIGRhdGFXaXRob3V0Tm90aWZpY2F0aW9uSUQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb25EYXRhIGRhdGEoKSBjb25z
dDsKIAogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IGI4MWRkNWI2
NWRlMy4uN2ExNzhkZmI4M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00NywxOSArNDcsMTUg
QEAgcHVibGljOgogICAgIHVzaW5nIFBlcm1pc3Npb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChQZXJtaXNzaW9uKT47CiAKICAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0
aW9uIGJlIHNob3duLgotICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24mKSA9IDA7CiAKICAgICAvLyBSZXF1
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBzaG93biBiZSBj
YW5jZWxlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiYpID0gMDsKIAotICAgIC8vIFdoZW4g
dGhlIHVzZXIgY2xvc2VzIGEgcGFnZSwgb3IgcXVpdHMgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiwg
YWxsIG9mIHRoZSBwYWdlJ3MKLSAgICAvLyBhc3NvY2lhdGVkIG5vdGlmaWNhdGlvbnMgYXJlIGNs
ZWFyZWQuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikgeyB9Ci0gICAgCiAgICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRoYXQg
YSBOb3RpZmljYXRpb24gb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZAogICAgIC8vIChzdWNoIGFz
IGJ5IGEgcGFnZSB0cmFuc2l0aW9uKS4gVGhlIHByZXNlbnRlciBtYXkgY29udGludWUgc2hvd2lu
ZwogICAgIC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBhdHRlbXB0IHRvIGNhbGwg
dGhlIGV2ZW50IGhhbmRsZXJzLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3RE
ZXN0cm95ZWQoTm90aWZpY2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJikgPSAwOwogCiAgICAgLy8gSW5mb3JtcyB0
aGUgcHJlc2VudGVyIHRoZSBjb250cm9sbGVyIGF0dGFjaGVkIHRvIHRoZSBwYWdlIGhhcyBiZWVu
IGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ry
b3llZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCmluZGV4IDAwMDBmMmZlMGMyZC4uOGRmYmQ3NWFhNjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25EYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRh
dGEgewogICAgIFN0cmluZyBsYW5ndWFnZTsKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uOwogICAgIFN0cmluZyBvcmlnaW5TdHJpbmc7Ci0gICAgdWludDY0X3Qg
bm90aWZpY2F0aW9uSUQ7CisgICAgU3RyaW5nIG5vdGlmaWNhdGlvbklEOwogfTsKIAogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTkwLDcgKzkwLDcgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmlj
YXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIW9yaWdpblN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBub3RpZmljYXRpb25JRDsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbklE
OwogICAgIGlmICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMv
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2
MjQ5MDBlZmQ0ZmQuLjNmNjc4YmUzYzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdAogLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VU
eXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1F
OiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3QpCit2b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiB9CiAKLXZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3QpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmgKaW5kZXggMDUzZjMwYTE1ZWFhLi4zNTRlNzQwOGJlMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02MCw5ICs2MCw5IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9u
KGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQg
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7Cisg
ICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkg
ZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG5vdGlmaWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgdm9pZCBtYXliZVNl
bmRDb25uZWN0aW9uQ29uZmlndXJhdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBlMjEyZWQxZmQ2MmMuLmI1ZTA3ZGVjYTIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC00MSw5ICs0
MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRp
b24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNh
dGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlm
aWNhdGlvbklEcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpID0gMDsKIAogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgppbmRleCBhYmNmOTc0NmIwNDkuLjFjOTU2ODkxNTIy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
bWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxs
b3dlZCkgQXN5bmMKICAgICBTaG93Tm90aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhIG5vdGlmaWNhdGlvbkRhdGEpCi0gICAgQ2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQotICAgIENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8dWludDY0
X3Q+IG5vdGlmaWNhdGlvbklEcykKLSAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKQorICAgIENhbmNlbE5vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0
aW9uSUQpCisgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxTdHJpbmc+IG5vdGlmaWNhdGlv
bklEcykKKyAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNw
cAppbmRleCA4YjZjMDM0NDQwNmUuLmY5Y2ZjY2M5MTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcApAQCAtODUsNSArODUsMTAgQEAg
V0tTZWN1cml0eU9yaWdpblJlZiBXS05vdGlmaWNhdGlvbkdldFNlY3VyaXR5T3JpZ2luKFdLTm90
aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGkKIAogdWludDY0X3QgV0tOb3RpZmljYXRpb25HZXRJRChX
S05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChub3Rp
ZmljYXRpb24pLT5ub3RpZmljYXRpb25JRCgpOworICAgIHJldHVybiB0b0ltcGwobm90aWZpY2F0
aW9uKS0+dWlOb3RpZmljYXRpb25JRCgpOworfQorCitXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlv
bkNvcHlDb3JlSURGb3JUZXN0aW5nKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKK3sK
KyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG5vdGlmaWNhdGlvbiktPmNvcmVOb3RpZmlj
YXRpb25JRCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlm
aWNhdGlvbi5oCmluZGV4IGQzYWU5OGJmNzRkMi4uODg0MTc0Y2Q0MmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgKQEAgLTQyLDYgKzQyLDcg
QEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weUxhbmcoV0tOb3RpZmlj
YXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNh
dGlvbkNvcHlEaXIoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBX
S1NlY3VyaXR5T3JpZ2luUmVmIFdLTm90aWZpY2F0aW9uR2V0U2VjdXJpdHlPcmlnaW4oV0tOb3Rp
ZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCB1aW50NjRfdCBXS05vdGlmaWNh
dGlvbkdldElEKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlv
blJlZiBub3RpZmljYXRpb24pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CmluZGV4IDc2OTIzOTkwYWI1Yi4uOGY0NDk5ODQxMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTU0
LDYgKzU0LDExIEBAIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKICAgICB0b0ltcGwobWFuYWdlclJl
ZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQogCit2
b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0
aW9uSUQpCit7CisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZENsaWNrTm90aWZp
Y2F0aW9uKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbklEKSk7Cit9CisKIHZvaWQgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKQogewogICAg
IHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnModG9JbXBs
KG5vdGlmaWNhdGlvbklEcykpOwpAQCAtNjgsOCArNzMsMyBAQCB2b2lkIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRp
b25NYQogewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmlj
YXRpb25Qb2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQotCi11aW50NjRfdCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJHZXRMb2NhbElERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlciwgV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQotewotICAgIHJldHVybiB0
b0ltcGwobWFuYWdlciktPm5vdGlmaWNhdGlvbkxvY2FsSURGb3JUZXN0aW5nKHRvSW1wbChub3Rp
ZmljYXRpb24pKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggYjc4OTA5YzZjZTQyLi4wY2YyMTQ1MTc5YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uTWFuYWdlci5oCkBAIC0zOCwxMCArMzgsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIK
IAogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90
aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBu
b3RpZmljYXRpb25JRCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
UmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CitXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IoV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKIFdLX0VY
UE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRp
b25zKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5vdGlm
aWNhdGlvbklEcyk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFu
YWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CiBXS19F
WFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNh
dGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5
UmVmIG9yaWdpbnMpOwotV0tfRVhQT1JUIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uTWFuYWdlckdl
dExvY2FsSURGb3JUZXN0aW5nKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBX
S05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uLmNwcAppbmRleCAwOGE2ZjZlMmY0YmYuLmI4ZGE3MWJiMGZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYgZGF0YSkKK1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIpCiAgICAgOiBtX3RpdGxlKGRhdGEudGl0bGUpCiAgICAgLCBtX2JvZHkoZGF0
YS5ib2R5KQogICAgICwgbV9pY29uVVJMKGRhdGEuaWNvblVSTCkKQEAgLTM4LDcgKzM4LDggQEAg
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYgZGF0YSkKICAgICAsIG1fbGFuZyhkYXRhLmxhbmd1YWdlKQogICAgICwgbV9kaXIo
ZGF0YS5kaXJlY3Rpb24pCiAgICAgLCBtX29yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKGRhdGEub3JpZ2luU3RyaW5nKSkKLSAgICAsIG1fbm90aWZpY2F0aW9uSUQo
ZGF0YS5ub3RpZmljYXRpb25JRCkKKyAgICAsIG1fY29yZU5vdGlmaWNhdGlvbklEKGRhdGEubm90
aWZpY2F0aW9uSUQpCisgICAgLCBtX3BhZ2VJZGVudGlmaWVyKHBhZ2VJZGVudGlmaWVyKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb24uaAppbmRleCAwZDIyZDQ3ZTIwMWYuLmM5OTMwNmQ1NTNiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbi5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsMTEgKzM5LDEx
IEBAIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgV2ViTm90aWZpY2F0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6Tm90aWZpY2F0aW9uPiB7CitjbGFzcyBXZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpOb3RpZmljYXRpb24+LCBwdWJsaWMgSWRl
bnRpZmllZDxXZWJOb3RpZmljYXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk5v
dGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEp
CisgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpO
b3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9u
KGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uKGRh
dGEsIHBhZ2VJZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KQEAgLTUyLDEwICs1NCwxMyBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlyOyB9CiAgICAgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW4uZ2V0KCk7IH0KICAgICAKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uSUQ7IH0KKyAgICB1aW50NjRfdCB1aU5vdGlmaWNh
dGlvbklEKCkgY29uc3QgeyByZXR1cm4gaWRlbnRpZmllcigpOyB9CisgICAgY29uc3QgU3RyaW5n
JiBjb3JlTm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25J
RDsgfQorCisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJOb3RpZmlj
YXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOworICAgIFdlYk5vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRp
Zmllcik7CiAKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNjQs
NyArNjksOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGlyZWN0aW9uIG1fZGlyOwogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2lu
PiBtX29yaWdpbjsKLSAgICB1aW50NjRfdCBtX25vdGlmaWNhdGlvbklEOworICAgIFN0cmluZyBt
X2NvcmVOb3RpZmljYXRpb25JRDsKKworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdl
SWRlbnRpZmllcjsKIH07CiAKIGlubGluZSBib29sIGlzTm90aWZpY2F0aW9uSURWYWxpZCh1aW50
NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmNwcAppbmRleCBhMjlhZWQ1NTA3ZWEuLjhhNWRiMTc2YmY5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtNDUs
MTcgKzQ1LDE3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpz
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmCiAgICAgbV93ZWJQYWdlUHJveHku
c2hvd05vdGlmaWNhdGlvbihkYXRhKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25J
RCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBtX3dlYlBhZ2VQ
cm94eS5jYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG5vdGlmaWNhdGlvbklEcykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5jbGVhck5vdGlm
aWNhdGlvbnMobm90aWZpY2F0aW9uSURzKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAg
IG1fd2ViUGFnZVByb3h5LmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgK
aW5kZXggNDI1MWY3MmZlYmUyLi5kOTRmYjdjNDdiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzgsOSArMzgsOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25z
dCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2
b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZp
bmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
KSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNh
dGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykg
ZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90
aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTJhYTY1
M2E1ZDVlLi4yMzY0NDkwMjBjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKQEAgLTM5LDEyICszOSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVHbG9iYWxOb3RpZmlj
YXRpb25JRCgpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUdsb2JhbE5vdGlmaWNhdGlv
bklEID0gMTsKLSAgICByZXR1cm4gdW5pcXVlR2xvYmFsTm90aWZpY2F0aW9uSUQrKzsKLX0KLQog
Y29uc3QgY2hhciogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgp
CiB7CiAgICAgcmV0dXJuICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkiOwpAQCAtOTYsNTEg
KzkwLDQ3IEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJiBub3RpZmljYXRpb25EYXRhKQogewotICAgIHVpbnQ2NF90IGdsb2JhbE5v
dGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwotICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSk7
Ci0gICAgYXV0byBub3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5p
ZGVudGlmaWVyKCksIG5vdGlmaWNhdGlvbkRhdGEubm90aWZpY2F0aW9uSUQpOwotICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9u
SURQYWlyKTsKLSAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3Rk
OjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkp
KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlm
aWNhdGlvbkRhdGEsIHdlYlBhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgbV9nbG9iYWxOb3RpZmlj
YXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbi0+dWlOb3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlm
aWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCksIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpOwog
ICAgIG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAK
LXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3
ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKFdlYk5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVu
dGlmaWVyKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpLnNlY29uZC5nZXQoKSkKLSAgICAgICAgbV9w
cm92aWRlci0+Y2FuY2VsKCpub3RpZmljYXRpb24pOworICAgIGlmIChhdXRvIHdlYk5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQocGFnZU5vdGlmaWNhdGlvbklEKSkKKyAgICAgICAg
bV9wcm92aWRlci0+Y2FuY2VsKCp3ZWJOb3RpZmljYXRpb24pOwogfQogICAgIAotdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVBy
b3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkq
IHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKQogewotICAgIGF1dG8g
Z2xvYmFsSUROb3RpZmljYXRpb25QYWlyID0gbV9ub3RpZmljYXRpb25zLnRha2Uoc3RkOjptYWtl
X3BhaXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQpKTsKLSAgICBp
ZiAodWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnbG9iYWxJRE5vdGlmaWNhdGlvblBh
aXIuZmlyc3QpIHsKLSAgICAgICAgV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBnbG9i
YWxJRE5vdGlmaWNhdGlvblBhaXIuc2Vjb25kLmdldCgpOwotICAgICAgICBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC5yZW1vdmUoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwotICAgICAgICBtX3Byb3Zp
ZGVyLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKCpub3RpZmljYXRpb24pOworICAgIGlmIChhdXRv
IHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VOb3RpZmljYXRpb25J
RCkpIHsKKyAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKHdlYk5vdGlmaWNh
dGlvbi0+dWlOb3RpZmljYXRpb25JRCgpKTsKKyAgICAgICAgbV9wcm92aWRlci0+ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbigqd2ViTm90aWZpY2F0aW9uKTsKICAgICB9CiB9CiAKLXN0YXRpYyBib29s
IHBhZ2VJRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYpCitzdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFN0cmluZyYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBh
Z2VJRDsKIH0KIAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZp
Y2F0aW9uSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdl
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKIHsK
ICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmlj
YXRpb25JRHMuY29udGFpbnMocGFnZU5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdl
YlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIFZlY3Rvcjx1aW50NjRf
dD4oKSwgcGFnZUlEc01hdGNoKTsKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVj
dG9yPFN0cmluZz4oKSwgcGFnZUlEc01hdGNoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCit2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCiB7CiAgICAg
Y2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIHBhZ2VOb3RpZmljYXRpb25JRHMsIHBhZ2VBbmRO
b3RpZmljYXRpb25JRHNNYXRjaCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbiBmaWx0ZXJGdW5jdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmls
dGVyRnVuY3Rpb24pCiB7CiAgICAgYXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlk
ZW50aWZpZXIoKTsKIApAQCAtMTQ4LDEyICsxMzgsMTIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnMKICAgICBnbG9iYWxOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90
aWZpY2F0aW9uTWFwLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlv
bnMuYmVnaW4oKSwgZW5kID0gbV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgYXV0byBwYWdlUHJveHlJRCA9IGl0LT5rZXkuZmlyc3Q7Ci0gICAgICAgIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT5rZXkuc2Vjb25kOwotICAgICAgICBpZiAo
IWZpbHRlckZ1bmN0aW9uKHBhZ2VQcm94eUlELCBwYWdlTm90aWZpY2F0aW9uSUQsIHRhcmdldFBh
Z2VQcm94eUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKKyAgICAgICAgYXV0byBwYWdlUHJveHlJ
RCA9IGl0LT52YWx1ZS0+cGFnZUlkZW50aWZpZXIoKTsKKyAgICAgICAgU3RyaW5nIGNvcmVOb3Rp
ZmljYXRpb25JRCA9IGl0LT52YWx1ZS0+Y29yZU5vdGlmaWNhdGlvbklEKCk7CisgICAgICAgIGlm
ICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0
UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuZmly
c3Q7CisgICAgICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlLT51
aU5vdGlmaWNhdGlvbklEKCk7CiAgICAgICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5hcHBlbmQo
Z2xvYmFsTm90aWZpY2F0aW9uSUQpOwogICAgIH0KIApAQCAtMTcxLDEyICsxNjEsMTQgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlv
bih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVlLmZpcnN0KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVlKTsKKyAgICBBU1NFUlQobm90aWZpY2F0
aW9uKTsKKworICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90
aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5z
ZWNvbmQ7Ci0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24ocGFnZU5vdGlmaWNhdGlvbklEKSwgMCk7
CisgICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVp
bnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQpAQCAtMTg0LDQwICsxNzYsNzMgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24o
dWludDY0X3QgZ2xvYmFsTm8KICAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAu
ZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVlKTsKKyAgICBBU1NFUlQobm90aWZpY2F0
aW9uKTsKICAgICAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KGl0LT52YWx1ZS5maXJzdCk7CisgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwogICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0g
aXQtPnZhbHVlLnNlY29uZDsKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24ocGFnZU5vdGlmaWNh
dGlvbklEKSwgMCk7CisgICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwog
fQogCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGNvcmVOb3RpZmljYXRpb25JRCkKK3sKKyAgICBhdXRv
IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklEKTsK
KyAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCkpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENs
aWNrTm90aWZpY2F0aW9uKGNvcmVOb3RpZmljYXRpb25JRCksIDApOworfQogCiB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJ
OjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURzKQogewotICAgIEhhc2hNYXA8V2ViUGFnZVBy
b3h5KiwgVmVjdG9yPHVpbnQ2NF90Pj4gcGFnZU5vdGlmaWNhdGlvbklEczsKLSAgICAKKyAgICBI
YXNoTWFwPFdlYlBhZ2VQcm94eSosIFZlY3RvcjxTdHJpbmc+PiBwYWdlTm90aWZpY2F0aW9uSURz
OworCiAgICAgc2l6ZV90IHNpemUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPnNpemUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBhdXRvIGl0ID0g
bV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PEFQ
STo6VUludDY0PihpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgLy8gVGhlIHBhc3NlZCBhcnJheSBtaWdodCBoYXZl
IHVpbnQ2NF90IGlkZW50aWZpZXJzIG9yIFN0cmluZyBpZGVudGlmaWVycy4KKyAgICAgICAgLy8g
SGFuZGxlIGJvdGguCisKKyAgICAgICAgU3RyaW5nIGNvcmVOb3RpZmljYXRpb25JRDsKKyAgICAg
ICAgYXV0byogaW50VmFsdWUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PEFQSTo6VUludDY0
PihpKTsKKyAgICAgICAgaWYgKGludFZhbHVlKSB7CisgICAgICAgICAgICBhdXRvIGl0ID0gbV9n
bG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChpbnRWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgICAg
ICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1
ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xv
YmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6OlN0cmluZz4oaSk7CisgICAgICAgICAgICBpZiAo
IXN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBj
b3JlTm90aWZpY2F0aW9uSUQgPSBzdHJpbmdWYWx1ZS0+c3RyaW5nKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBBU1NFUlQoIWNvcmVOb3RpZmljYXRpb25JRC5pc0VtcHR5KCkpOworCisgICAgICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2UoY29yZU5vdGlmaWNhdGlv
bklEKTsKKyAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCkpIHsKKyAgICAgICAgaWYgKFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCkpKSB7CiAgICAgICAgICAgICBhdXRvIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMu
ZmluZCh3ZWJQYWdlKTsKICAgICAgICAgICAgIGlmIChwYWdlSXQgPT0gcGFnZU5vdGlmaWNhdGlv
bklEcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gbmV3VmVjdG9y
OworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG5ld1ZlY3RvcjsKICAgICAgICAgICAg
ICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKICAgICAgICAgICAg
ICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZNb3ZlKG5l
d1ZlY3RvcikpLml0ZXJhdG9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB1aW50NjRf
dCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuc2Vjb25kOwotICAgICAgICAgICAgcGFn
ZUl0LT52YWx1ZS5hcHBlbmQocGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICAgICAgICAgIHBhZ2VJ
dC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdC0+dmFsdWUpOwotICAg
ICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUoaXQpOworICAgICAgICBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uLT51aU5vdGlmaWNhdGlvbklEKCkp
OwogICAgIH0KIAogICAgIGZvciAoYXV0byBpdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYmVnaW4o
KSwgZW5kID0gcGFnZU5vdGlmaWNhdGlvbklEcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQpAQCAt
MjUwLDE2ICsyNzUsNCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKIH0KIAotdWlu
dDY0X3QgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpub3RpZmljYXRpb25Mb2NhbElERm9y
VGVzdGluZyhXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICBpZiAoIW5vdGlm
aWNhdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXAuZmluZChub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOwotICAgIGlm
IChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gaXQtPnZhbHVlLnNlY29uZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBkYWYzMzk3ZjM4
ZDUuLmIxOTU0YThjZmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CkBAIC02MCwyNyArNjAsMjYgQEAgcHVibGljOgogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBu
b3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogCiAgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSos
IGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKLSAgICB2b2lkIGNhbmNlbChXZWJQ
YWdlUHJveHkqLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2FuY2Vs
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICB2
b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsKLSAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90
aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVBy
b3h5KiwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNsZWFyTm90aWZp
Y2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFnZU5vdGlmaWNh
dGlvbklEcyk7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKIAogICAgIHZvaWQgcHJvdmlkZXJE
aWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHBy
b3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNh
dGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJy
YXkqIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNh
dGlvblBvbGljeShjb25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAg
ICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSog
b3JpZ2lucyk7CiAKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25Mb2NhbElERm9yVGVzdGluZyhX
ZWJOb3RpZmljYXRpb24qKTsKLQogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNp
bmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29s
ICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
ZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmlj
YXRpb25JRHMpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZp
bHRlckZ1bmN0aW9uKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgcGFnZU5v
dGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
Z2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8v
IFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92
ZXJyaWRlOwpAQCAtODgsMTAgKzg3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5v
dGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwotICAgIC8vIFBhaXIgY29tcHJpc2VkIG9m
IHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0
X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKLSAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQg
b2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFs
dWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNh
dGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+
PiBtX25vdGlmaWNhdGlvbnM7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViTm90aWZp
Y2F0aW9uPj4gbV9ub3RpZmljYXRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ZmY2MGU3YTRiNzku
LjZmNDc5YmE1OTJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC04NzQyLDE3ICs4NzQyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvCiAgICAgbV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PigpLT5zaG93KHRoaXMsIG5vdGlmaWNhdGlvbkRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBX
ZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+Y2FuY2VsKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBub3RpZmljYXRpb25JRHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpCiB7CiAgICAgbV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZpY2F0aW9uSURzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5v
dGlmaWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDc5OTk3MGRlZDZhNC4uZTliMGExMzAyNjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzMiw5ICsyMDMyLDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjYW5jZWxOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9p
ZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwog
CiAgICAgdm9pZCByZXF1ZXN0Q29va2llQ29uc2VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OkNvb2tpZUNvbnNlbnREZWNpc2lvblJlc3VsdCk+JiYpOwogICAgIHZvaWQgY2xhc3Np
ZnlNb2RhbENvbnRhaW5lckNvbnRyb2xzKFZlY3RvcjxTdHJpbmc+JiYgdGV4dHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+
JiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGI0MzU2YTQyY2QyYi4uODBhZDM2ZTE4
N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTIwNiw5ICsyMDYsMTMgQEAgdm9pZCBXS0J1
bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdLQnVuZGxlUmVmIGJ1bmRs
ZVJlZiwgV0tCdW5kbGUKICAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKSk7CiB9CiAK
LXVpbnQ2NF90IFdLQnVuZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxl
UmVmLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS1N0
cmluZ1JlZiBXS0J1bmRsZUNvcHlXZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGVS
ZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAg
ICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQoY29u
dGV4dCwgbm90aWZpY2F0aW9uKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJLaXQ6OnRvSW1w
bChidW5kbGVSZWYpLT53ZWJOb3RpZmljYXRpb25JRChjb250ZXh0LCBub3RpZmljYXRpb24pOwor
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0NvcGllZEFQSSgqaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV0tCdW5kbGVT
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJp
dmF0ZS5oCmluZGV4IGE0ZDIzZjUzN2UzNS4uZGM0ZDEzN2JlYTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUHJpdmF0ZS5oCkBAIC01Miw3ICs1Miw3IEBAIFdLX0VYUE9SVCBib29sIFdLQnVuZGxl
SXNQYWdlQm94VmlzaWJsZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25Gb3JUZXN0
aW5nKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbG9jYXRpb24pOwogV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLQnVuZGxlUmVmIGJ1
bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpblN0cmluZ1JlZiwg
Ym9vbCBhbGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSk7Ci1XS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRXZWJOb3RpZmljYXRpb25JRChXS0J1
bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNh
dGlvbik7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9u
SUQoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBu
b3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZy
b21VSW50OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgZGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wg
ZW5hYmxlZCk7CiAvLyBSZXR1cm5zIGFycmF5IG9mIGRpY3Rpb25hcmllcy4gRGljdGlvbmFyeSBr
ZXlzIGFyZSBkb2N1bWVudCBpZGVudGlmaWVycywgdmFsdWVzIGFyZSBkb2N1bWVudCBVUkxzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZjA1YzRlYjZmYzRiLi5hZmRkYjczZDk0NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtMzEwLDE3ICszMTAsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSogcGFnZSkKICNl
bmRpZgogfQogCi11aW50NjRfdCBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlND
b250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0
UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKIHsKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9
IEpTTm90aWZpY2F0aW9uOjp0b1dyYXBwZWQodG9KUyhqc0NvbnRleHQpLT52bSgpLCB0b0pTKHRv
SlMoanNDb250ZXh0KSwganNOb3RpZmljYXRpb24pKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+bm90aWZpY2F0aW9uSURGb3JUZXN0
aW5nKG5vdGlmaWNhdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIG5vdGlmaWNhdGlvbi0+aWRlbnRpZmllcigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
anNDb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oanNOb3RpZmljYXRpb24pOwotICAgIHJldHVy
biAwOworICAgIHJldHVybiBTdHJpbmcgc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmgKaW5kZXggNWE0ZjZhODc5YjEzLi43NWQ5ZTU5Mzk5NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBl
cm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93
ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFn
ZSopOwotICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1
ZVJlZik7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZy
b21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IERvY3VtZW50SURUb1VSTE1hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggOWEyMDE4OTJiMWMxLi40NjZlMDZiOWM5ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC01MSwxNCArNTEsNiBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQo
KQotewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVOb3RpZmljYXRpb25JRCA9IDE7Ci0gICAg
cmV0dXJuIHVuaXF1ZU5vdGlmaWNhdGlvbklEKys7Ci19Ci0jZW5kaWYKLQogY29uc3QgY2hhciog
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAi
V2ViTm90aWZpY2F0aW9uTWFuYWdlciI7CkBAIC0xMjgsMTggKzEyMCw2IEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCkKICNlbmRp
ZgogfQogCi11aW50NjRfdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpub3RpZmljYXRpb25JREZv
clRlc3RpbmcoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0jaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCi0gICAgaWYgKCFub3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBtX25vdGlmaWNhdGlvbk1hcC5nZXQobm90aWZpY2F0aW9uKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5k
Tm90aWZpY2F0aW9uTWVzc2FnZShXZWJQcm9jZXNzJiBwcm9jZXNzLCBVJiYgbWVzc2FnZSwgV2Vi
UGFnZSYgcGFnZSkKIHsKQEAgLTE1MSwyMiArMTMxLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoV2ViUHJvY2VzcyYgcHJvY2VzcywgVSYmIG1l
c3NhCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCiAKLWJvb2wgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSog
cGFnZSkKK2Jvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5v
dGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
LSAgICBpZiAoIW5vdGlmaWNhdGlvbiB8fCAhcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5u
b3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGlu
Z3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKCk7
Ci0gICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uSUQp
OwotICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24pOwotICAgIAotICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5v
dGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkp
Lml0ZXJhdG9yOwotICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAg
YXV0byBub3RpZmljYXRpb25EYXRhID0gbm90aWZpY2F0aW9uLT5kYXRhV2l0aG91dE5vdGlmaWNh
dGlvbklEKCk7Ci0gICAgbm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRpb25JRCA9IG5vdGlmaWNh
dGlvbklEOwotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6
Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05vdGlmaWNhdGlvbihXVEZN
b3ZlKG5vdGlmaWNhdGlvbkRhdGEpKSwgKnBhZ2UpOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAu
c2V0KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCksICZub3RpZmljYXRpb24pOworCisgICAgc2Vu
ZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkp
LCAqcGFnZSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3Rp
ZmljYXRpb24pOwpAQCAtMTc1LDcyICsxNDgsNDQgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFub3RpZmljYXRpb24gfHwgIXBh
Z2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKKyAgICBp
ZiAoIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gbV9u
b3RpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKCFub3RpZmljYXRpb25J
RCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1f
cHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2Fu
Y2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgKnBhZ2UpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0jZW5kaWYK
LX0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViUGFnZSogcGFnZSkKLXsK
LSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwOjpp
dGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5maW5kKGNvbnRleHQpOwotICAg
IGlmIChpdCA9PSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpCisgICAgYXV0byBtYXBw
ZWROb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb24uaWRl
bnRpZmllcigpKTsKKyAgICBpZiAoIW1hcHBlZE5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJu
OworICAgIEFTU0VSVChtYXBwZWROb3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7CiAKLSAg
ICBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMgPSBpdC0+dmFsdWU7Ci0gICAgc2Vu
ZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyOjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSwg
KnBhZ2UpOwotICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxOb3Rp
ZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmlj
YXRpb25JRHNbaV0pOwotICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBub3RpZmljYXRpb24tPmZpbmFsaXplKCk7Ci0gICAgICAgIG1fbm90
aWZpY2F0aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24pOwotICAgIH0KLSAgICAKLSAgICBtX25v
dGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVz
c2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXI6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2Up
OwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKG5v
dGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwg
V2ViUGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBSZWZQdHIg
cHJvdGVjdGVkTm90aWZpY2F0aW9uIHsgbm90aWZpY2F0aW9uIH07CisgICAgUmVmIHByb3RlY3Rl
ZE5vdGlmaWNhdGlvbiB7IG5vdGlmaWNhdGlvbiB9OwogCi0gICAgdWludDY0X3Qgbm90aWZpY2F0
aW9uSUQgPSBtX25vdGlmaWNhdGlvbk1hcC50YWtlKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKCFu
b3RpZmljYXRpb25JRCkKKyAgICBhdXRvIHRha2VuTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRp
b25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpOworICAgIGlmICghdGFrZW5O
b3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQodGFrZW5Ob3RpZmljYXRp
b24gPT0gJm5vdGlmaWNhdGlvbik7CiAKLSAgICBtX25vdGlmaWNhdGlvbklETWFwLnJlbW92ZShu
b3RpZmljYXRpb25JRCk7Ci0gICAgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAobm90
aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2Uo
bV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpE
aWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgKnBhZ2UpOworICAgIHNlbmRO
b3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRl
bnRpZmllcigpKSwgKnBhZ2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
KQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0
IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0g
ICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9u
b3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0
aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsMTIgKzE5Niw5IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25J
RCkKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90
aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklE
KQogewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICghaXNOb3RpZmljYXRpb25J
RFZhbGlkKG5vdGlmaWNhdGlvbklEKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVmUHRyPE5v
dGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZp
Y2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0y
NjksMjIgKzIxMSwxNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90
aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25J
RHMpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgc2l6ZV90IGNvdW50ID0gbm90
aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb25JRHNb
aV07Ci0gICAgICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5vdGlmaWNhdGlvbklEKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbklEID0gbm90
aWZpY2F0aW9uSURzW2ldOwogCiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRCk7CiAgICAgICAg
IGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9u
b3RpZmljYXRpb25NYXAucmVtb3ZlKG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHJlbW92ZU5vdGlm
aWNhdGlvbkZyb21Db250ZXh0TWFwKG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uZ2V0KCkp
OwotCiAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CiAgICAgfQog
I2Vsc2UKQEAgLTI5MiwxOCArMjI5LDQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpk
aWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWYKICNlbmRp
ZgogfQogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklELCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICAvLyBUaGlzIGlzIGEg
aGVscGVyIGZ1bmN0aW9uIGZvciBtYW5hZ2luZyB0aGUgaGFzaCBtYXBzLgotICAgIE5vdGlmaWNh
dGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZp
bmQobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVChp
dCAhPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpOwotICAgIHNpemVfdCBpbmRleCA9
IGl0LT52YWx1ZS5maW5kKG5vdGlmaWNhdGlvbklEKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90
Rm91bmQpOwotICAgIGl0LT52YWx1ZS5yZW1vdmUoaW5kZXgpOwotICAgIGlmIChpdC0+dmFsdWUu
aXNFbXB0eSgpKQotICAgICAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsK
LX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXIuaAppbmRleCA2ZWU5NGY1NmIwM2EuLjJiODBiZWY0ZGNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RpZmljYXRpb25DbGllbnQuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTUzLDExICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKICAgICAKLSAgICBib29sIHNob3coV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKiwgV2ViUGFnZSopOwotICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbiosIFdlYlBhZ2UqKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViUGFnZSopOworICAgIGJvb2wgc2hvdyhX
ZWJDb3JlOjpOb3RpZmljYXRpb24mLCBXZWJQYWdlKik7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uJiwgV2ViUGFnZSopOworCiAgICAgLy8gVGhpcyBjYWxsYmFjayBjb21l
cyBmcm9tIFdlYkNvcmUsIG5vdCBtZXNzYWdlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgotICAgIHZv
aWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJDb3JlOjpOb3RpZmljYXRpb24qLCBXZWJQYWdl
Kik7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
biYsIFdlYlBhZ2UqKTsKIAogICAgIHZvaWQgZGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24o
Y29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAKQEAgLTY1LDcgKzY2
LDYgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lv
biBwb2xpY3lGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpIGNvbnN0OwogCiAg
ICAgdm9pZCByZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKTsKLSAgICB1aW50NjRfdCBu
b3RpZmljYXRpb25JREZvclRlc3RpbmcoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKik7CiAKIHByaXZh
dGU6CiAgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKQEAgLTc1LDI3ICs3NSwxNyBAQCBwcml2
YXRlOgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdm9pZCBkaWRT
aG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZENs
aWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZENs
b3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMp
OworICAgIHZvaWQgZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIGRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZp
Y2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkUmVtb3ZlTm90aWZpY2F0aW9u
RGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKLSAgICAKLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21D
b250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBXZWJDb3JlOjpOb3RpZmljYXRpb24q
KTsKLSNlbmRpZgogCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwogCiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpOb3RpZmlj
YXRpb24+LCB1aW50NjRfdD4gTm90aWZpY2F0aW9uTWFwOwotICAgIE5vdGlmaWNhdGlvbk1hcCBt
X25vdGlmaWNhdGlvbk1hcDsKLSAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPj4gTm90aWZp
Y2F0aW9uSURNYXA7CiAgICAgTm90aWZpY2F0aW9uSURNYXAgbV9ub3RpZmljYXRpb25JRE1hcDsK
ICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ+LCBWZWN0b3I8dWludDY0X3Q+PiBOb3RpZmljYXRpb25Db250ZXh0TWFwOwotICAg
IE5vdGlmaWNhdGlvbkNvbnRleHRNYXAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwOwotICAgIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zTWFwOwogI2VuZGlmCiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNi
MzE4NzA5ZDVkLi4yMTY4OGU5MmY0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBt
ZXNzYWdlcyAtPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERp
ZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIERpZENsaWNr
Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICBEaWRDbG9zZU5vdGlm
aWNhdGlvbnMoVmVjdG9yPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMpOworICAgIERpZFNob3dO
b3RpZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbGlja05vdGlmaWNh
dGlvbihTdHJpbmcgbm90aWZpY2F0aW9uSUQpOworICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhW
ZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25JRHMpOwogICAgIERpZFVwZGF0ZU5vdGlmaWNhdGlv
bkRlY2lzaW9uKFN0cmluZyBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgRGlkUmVt
b3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmluZ3MpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAppbmRleCBjYWU1MDk1ZDM5NmUuLmMy
NGVkMzdkNzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKQEAgLTQ2LDIy
ICs0NiwxNyBAQCBXZWJOb3RpZmljYXRpb25DbGllbnQ6On5XZWJOb3RpZmljYXRpb25DbGllbnQo
KQogewogfQogCi1ib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKK2Jvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNh
dGlvbiYgbm90aWZpY2F0aW9uKQogewogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNob3cobm90aWZpY2F0aW9u
LCBtX3BhZ2UpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNl
bChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNhbmNlbChub3RpZmlj
YXRpb24sIG1fcGFnZSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5v
dGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCkt
PmNsZWFyTm90aWZpY2F0aW9ucyhjb250ZXh0LCBtX3BhZ2UpOwotfQotCi12b2lkIFdlYk5vdGlm
aWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiog
bm90aWZpY2F0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9i
amVjdERlc3Ryb3llZChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRp
ZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBtX3BhZ2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IGEzMTQwOTA5MGQ2NC4uZGNkMjA4OTQ2MmYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00NSwxMCArNDUsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgYm9v
bCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2Vs
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJOb3RpZmlj
YXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2
b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBv
dmVycmlkZTsKKyAgICBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgUGVybWlzc2lvbkhhbmRsZXImJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oCmluZGV4IDAyZjFkYjA0M2Q4OC4uZTU3MTUzZjVmYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQuaApAQCAtNDUsMTAgKzQ1LDkgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IG5vdGlm
aWNhdGlvbklERm9yVGVzdGluZyhXZWJDb3JlOjpOb3RpZmljYXRpb24qKTsKIAogcHJpdmF0ZToK
LSAgICBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVh
ck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRl
OwotICAgIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbiopIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmlj
YXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95
ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBQZXJtaXNzaW9uSGFuZGxlciYmKSBvdmVycmlkZTsKICAgICBX
ZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKQEAgLTU3LDkgKzU2LDYg
QEAgcHJpdmF0ZToKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBIYXNoTWFwPFJlZlB0
cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+LCBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPj4gbV9u
b3RpZmljYXRpb25NYXA7Ci0gICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0PiwgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRp
b24+Pj4gTm90aWZpY2F0aW9uQ29udGV4dE1hcDsKLSAgICBOb3RpZmljYXRpb25Db250ZXh0TWFw
IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcDsKIAogICAgIGJvb2wgbV9ldmVyUmVxdWVzdGVkUGVy
bWlzc2lvbiB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCmluZGV4
IDM5ZWRjNzI3ZGQ1YS4uYzBhYWQwOTkzYzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
Lm1tCkBAIC01OCw2MiArNTgsMzQgQEAgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpXZWJOb3RpZmlj
YXRpb25DbGllbnQoV2ViVmlldyAqd2ViVmlldykKIHsKIH0KIAotYm9vbCBXZWJOb3RpZmljYXRp
b25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCitib29sIFdlYk5vdGlm
aWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBp
ZiAoIVttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZU5vdGlmaWNhdGlv
bklEKCk7Ci0gICAgUmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0g
YWRvcHROUyhbW1dlYk5vdGlmaWNhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRDpub3RpZmljYXRpb25JRF0pOwotICAgIG1fbm90
aWZpY2F0aW9uTWFwLnNldChub3RpZmljYXRpb24sIHdlYk5vdGlmaWNhdGlvbik7Ci0KLSAgICBh
dXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+Pigp
KS5pdGVyYXRvcjsKLSAgICBpdC0+dmFsdWUuYXBwZW5kKHdlYk5vdGlmaWNhdGlvbik7CisgICAg
UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0gYWRvcHROUyhbW1dl
Yk5vdGlmaWNhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOiZub3RpZmljYXRp
b24gbm90aWZpY2F0aW9uSUQ6bm90aWZpY2F0aW9uSURdKTsKKyAgICBtX25vdGlmaWNhdGlvbk1h
cC5zZXQoJm5vdGlmaWNhdGlvbiwgd2ViTm90aWZpY2F0aW9uKTsKIAogICAgIFtbbV93ZWJWaWV3
IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gc2hvd05vdGlmaWNhdGlvbjp3ZWJOb3RpZmljYXRpb24u
Z2V0KCkgZnJvbVdlYlZpZXc6bV93ZWJWaWV3XTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9uJiBub3Rp
ZmljYXRpb24pCiB7Ci0gICAgV2ViTm90aWZpY2F0aW9uICp3ZWJOb3RpZmljYXRpb24gPSBtX25v
dGlmaWNhdGlvbk1hcC5nZXQobm90aWZpY2F0aW9uKS5nZXQoKTsKKyAgICBXZWJOb3RpZmljYXRp
b24gKndlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uTWFwLmdldCgmbm90aWZpY2F0aW9u
KS5nZXQoKTsKICAgICBpZiAoIXdlYk5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBjYW5jZWxOb3RpZmljYXRpb246
d2ViTm90aWZpY2F0aW9uXTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFy
Tm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIGF1
dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChjb250ZXh0KTsKLSAgICBpZiAo
aXQgPT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgYXV0byBmaW5hbGl6ZWROb3RpZmljYXRpb25JRHMgPSBjcmVhdGVOU0FycmF5KGl0
LT52YWx1ZSwgWyZdIChhdXRvJiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgYXV0byYgY29yZU5v
dGlmaWNhdGlvbiA9ICpjb3JlKG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0gICAgICAgIGNvcmVOb3Rp
ZmljYXRpb24uZmluYWxpemUoKTsKLSAgICAgICAgbV9ub3RpZmljYXRpb25NYXAucmVtb3ZlKCZj
b3JlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgcmV0dXJuIEAoW25vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb25JRF0pOwotICAgIH0pOwotCi0gICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3Zp
ZGVyXSBjbGVhck5vdGlmaWNhdGlvbnM6ZmluYWxpemVkTm90aWZpY2F0aW9uSURzLmdldCgpXTsK
LSAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKLX0KLQotdm9pZCBXZWJO
b3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgUmV0
YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25N
YXAudGFrZShub3RpZmljYXRpb24pOworICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdl
Yk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uTWFwLnRha2UoJm5vdGlmaWNhdGlvbik7CiAg
ICAgaWYgKCF3ZWJOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaXQg
PSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1h
cC5lbmQoKSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQtPnZhbHVlLmZpbmQod2ViTm90aWZpY2F0
aW9uKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGl0LT52YWx1ZS5yZW1v
dmUoaW5kZXgpOwotICAgIGlmIChpdC0+dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBtX25vdGlm
aWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKLQogICAgIFtbbV93ZWJWaWV3IF9ub3RpZmlj
YXRpb25Qcm92aWRlcl0gbm90aWZpY2F0aW9uRGVzdHJveWVkOndlYk5vdGlmaWNhdGlvbi5nZXQo
KV07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjdhN2QxMDBhYjk3Li43ZThlZDQyMGJiN2Mg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC02NjMsOSArNjYzLDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6cG9zdFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKICAgICBXS0J1
bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhwYWdlKCktPnBhZ2UoKSwg
dG9XSygiU2V0Vmlld1NpemUiKS5nZXQoKSwgYm9keS5nZXQoKSwgMCk7CiB9CiAKLXZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgcG9zdFBhZ2VN
ZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgYWRvcHRXSyhXS1VJbnQ2NENy
ZWF0ZShub3RpZmljYXRpb25JRCkpKTsKKyAgICBwb3N0UGFnZU1lc3NhZ2UoIlNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wgYWRkc1Zpc2l0ZWRMaW5rcykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuaAppbmRleCA2ODNmZDg1NDc1N2EuLjYyNDc1Njg5ODNiYyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApA
QCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0U2V0QmFja2luZ1NjYWxlRmFj
dG9yKGRvdWJsZSk7CiAgICAgdm9pZCBwb3N0U2V0V2luZG93SXNLZXkoYm9vbCk7CiAgICAgdm9p
ZCBwb3N0U2V0Vmlld1NpemUoZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KTsKLSAgICB2b2lk
IHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
KTsKKyAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVm
IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wp
OwogCiAgICAgLy8gR2VvbG9jYXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBhMzI4MGRmMTZjZDQuLmMzM2E4
ZTUwZDQyYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC04ODEsNyArODgxLDkgQEAgdm9pZCBUZXN0UnVubmVyOjpy
ZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB2b2lkIFRlc3RSdW5uZXI6OnNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiB7CiAg
ICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0g
ICAgaW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tCdW5k
bGVHZXRXZWJOb3RpZmljYXRpb25JRChpbmplY3RlZEJ1bmRsZS5idW5kbGUoKSwgbWFpbkZyYW1l
SlNDb250ZXh0KCksIG5vdGlmaWNhdGlvbikpOworCisgICAgYXV0byBub3RpZmljYXRpb25JRCA9
IGFkb3B0V0soV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoaW5qZWN0ZWRCdW5kbGUuYnVu
ZGxlKCksIG1haW5GcmFtZUpTQ29udGV4dCgpLCBub3RpZmljYXRpb24pKTsKKyAgICBpbmplY3Rl
ZEJ1bmRsZS5wb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhub3RpZmljYXRpb25JRC5n
ZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJv
b2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggNTY5Yjk4YTUyMzk0Li42MTlkNjZlMmRiODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KFdLUGFnZVJlZikKICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAKLXZvaWQg
VGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sodWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhtYWluV2ViVmlldygpLT5w
YWdlKCksIG5vdGlmaWNhdGlvbklEKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAppbmRleCAwN2Y3NTAzNWJmMzEuLjA1ZGM0NzkyMmJhNyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGJlZm9yZVVubG9hZFJldHVyblZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9iZWZvcmVV
bmxvYWRSZXR1cm5WYWx1ZTsgfQogICAgIHZvaWQgc2V0QmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUo
Ym9vbCB2YWx1ZSkgeyBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlID0gdmFsdWU7IH0KIAotICAg
IHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayh1aW50NjRfdCBub3RpZmljYXRpb25J
RCk7CisgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5v
dGlmaWNhdGlvbklEKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgogICAgIHZvaWQgc2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCA3MmZhODJiYmMwMTAuLjJiZjRjMTk5ZTQ4ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZQogICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIpKSB7Ci0g
ICAgICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHkp
OworICAgICAgICBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCA9IHN0cmluZ1ZhbHVlKG1lc3Nh
Z2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uSUQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92
aWRlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCBjZDVmYzY2MjE1YTQuLjU4ZTFmYWY1YmViZCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25Qcm92
aWRlci5oIgogCisjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSA8V2ViS2l0
L1dLTXV0YWJsZUFycmF5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgpAQCAtNjYsOCArNjcsOCBA
QCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoKQogCiBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6fldlYk5vdGlmaWNhdGlvblByb3ZpZGVyKCkKIHsKLSAg
ICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX293bmVkTm90aWZpY2F0aW9ucykKLSAgICAgICAgV0tO
b3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5rZXkuZ2V0KCksIG51bGxwdHIp
OworICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fa25vd25NYW5hZ2VycykKKyAgICAgICAgV0tO
b3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5nZXQoKSwgbnVsbHB0cik7CiB9
CiAKIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cHJv
dmlkZXIoKQpAQCAtODksNDQgKzkwLDI2IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNob3dXZWJOb3RpZmljYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdLTm90aWZpY2F0aW9uCiB7CiAg
ICAgYXV0byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdlKTsKICAgICBhdXRvIG5vdGlm
aWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKGNvbnRleHQp
OwotICAgIHVpbnQ2NF90IGlkID0gV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRpb24pOwor
ICAgIEFTU0VSVChtX2tub3duTWFuYWdlcnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikp
OwogCi0gICAgQVNTRVJUKG1fb3duZWROb3RpZmljYXRpb25zLmNvbnRhaW5zKG5vdGlmaWNhdGlv
bk1hbmFnZXIpKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3duZWROb3RpZmljYXRpb25zLmZp
bmQobm90aWZpY2F0aW9uTWFuYWdlciktPnZhbHVlLmFkZChpZCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBhdXRvIGFkZFJlc3VsdDIg
PSBtX293bmluZ01hbmFnZXIuc2V0KGlkLCBub3RpZmljYXRpb25NYW5hZ2VyKTsKLSAgICBBU1NF
UlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7Ci0gICAgYXV0byBh
ZGRSZXN1bHQzID0gbV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAuYWRkKHN0ZDo6bWFr
ZV9wYWlyKHBhZ2UsIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldExvY2FsSURGb3JUZXN0aW5nKG5v
dGlmaWNhdGlvbk1hbmFnZXIsIG5vdGlmaWNhdGlvbikpLCBpZCk7Ci0gICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQzLCBhZGRSZXN1bHQzLmlzTmV3RW50cnkpOworICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbik7CisgICAgYXV0byBjb3Jl
SWRlbnRpZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhu
b3RpZmljYXRpb24pKTsKIAotICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hv
d05vdGlmaWNhdGlvbihub3RpZmljYXRpb25NYW5hZ2VyLCBpZCk7Ci19CisgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX293bmluZ01hbmFnZXIuc2V0KHRvV1RGU3RyaW5nKGNvcmVJZGVudGlmaWVyLmdl
dCgpKSwgbm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAotc3RhdGljIHZvaWQgcmVtb3ZlR2xvYmFsSURGcm9t
SURNYXAoSGFzaE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50NjRfdD4sIHVpbnQ2NF90PiYg
bWFwLCB1aW50NjRfdCBpZCkKLXsKLSAgICBmb3IgKGF1dG8gaXRlciA9IG1hcC5iZWdpbigpOyBp
dGVyICE9IG1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChpdGVyLT52YWx1ZSA9PSBp
ZCkgewotICAgICAgICAgICAgbWFwLnJlbW92ZShpdGVyKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBXS05vdGlm
aWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uTWFu
YWdlciwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmNs
b3NlV2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAg
ICB1aW50NjRfdCBpZCA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKTsKLSAgICBB
U1NFUlQobV9vd25pbmdNYW5hZ2VyLmNvbnRhaW5zKGlkKSk7Ci0gICAgYXV0byBub3RpZmljYXRp
b25NYW5hZ2VyID0gbV9vd25pbmdNYW5hZ2VyLmdldChpZCk7Ci0KLSAgICBBU1NFUlQobV9vd25l
ZE5vdGlmaWNhdGlvbnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwotICAgIGJvb2wg
c3VjY2VzcyA9IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uTWFuYWdlcikt
PnZhbHVlLnJlbW92ZShpZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsK
LSAgICBtX293bmluZ01hbmFnZXIucmVtb3ZlKGlkKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSB0
b1dURlN0cmluZyhhZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3Rpbmcobm90
aWZpY2F0aW9uKSkuZ2V0KCkpOwogCi0gICAgcmVtb3ZlR2xvYmFsSURGcm9tSURNYXAobV9sb2Nh
bFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAsIGlkKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk1h
bmFnZXIgPSBtX293bmluZ01hbmFnZXIudGFrZShpZGVudGlmaWVyKTsKKyAgICBBU1NFUlQobm90
aWZpY2F0aW9uTWFuYWdlcik7CisgICAgQVNTRVJUKG1fa25vd25NYW5hZ2Vycy5jb250YWlucyhu
b3RpZmljYXRpb25NYW5hZ2VyKSk7CiAKLSAgICBhdXRvIHdrSUQgPSBhZG9wdFdLKFdLVUludDY0
Q3JlYXRlKGlkKSk7CisgICAgYXV0byB3a0lEID0gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShXS05v
dGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbikpKTsKICAgICBhdXRvIGFycmF5ID0gYWRvcHRX
SyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5n
ZXQoKSwgd2tJRC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRD
bG9zZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uTWFuYWdlciwgYXJyYXkuZ2V0KCkpOwpAQCAt
MTM0LDIzICsxMTcsMjggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VXZWJO
b3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW8KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWYgbWFuYWdlcikKIHsKLSAgICBtX293bmVkTm90aWZpY2F0aW9ucy5hZGQobWFuYWdl
ciwgSGFzaFNldDx1aW50NjRfdD4oKSk7CisgICAgQVNTRVJUKCFtX2tub3duTWFuYWdlcnMuY29u
dGFpbnMobWFuYWdlcikpOworICAgIG1fa25vd25NYW5hZ2Vycy5hZGQobWFuYWdlcik7CiB9CiAK
IHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIo
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobWFuYWdlcik7Ci0gICAgQVNTRVJUKGl0ZXJhdG9y
ICE9IG1fb3duZWROb3RpZmljYXRpb25zLmVuZCgpKTsKLSAgICBhdXRvIHRvUmVtb3ZlID0gaXRl
cmF0b3ItPnZhbHVlOwotICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4g
Z3VhcmQobWFuYWdlcik7Ci0gICAgbV9vd25lZE5vdGlmaWNhdGlvbnMucmVtb3ZlKGl0ZXJhdG9y
KTsKKyAgICBhdXRvIHByb3RlY3RlZE1hbmFnZXIgPSBtX2tub3duTWFuYWdlcnMudGFrZShtYW5h
Z2VyKTsKKyAgICBBU1NFUlQocHJvdGVjdGVkTWFuYWdlcik7CisKKyAgICBhdXRvIHRvUmVtb3Zl
ID0gVmVjdG9yPFN0cmluZz4geyB9OworICAgIGZvciAoYXV0byYgaXRlcmF0b3IgOiBtX293bmlu
Z01hbmFnZXIpIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVlICE9IG1hbmFnZXIpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdG9SZW1vdmUuYXBwZW5kKGl0ZXJhdG9yLmtleSk7
CisgICAgfQorCiAgICAgYXV0byBhcnJheSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUo
KSk7Ci0gICAgZm9yICh1aW50NjRfdCBub3RpZmljYXRpb25JRCA6IHRvUmVtb3ZlKSB7Ci0gICAg
ICAgIGJvb2wgc3VjY2VzcyA9IG1fb3duaW5nTWFuYWdlci5yZW1vdmUobm90aWZpY2F0aW9uSUQp
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgICAgICByZW1v
dmVHbG9iYWxJREZyb21JRE1hcChtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcCwgbm90
aWZpY2F0aW9uSUQpOwotICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgYWRv
cHRXSyhXS1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25JRCkpLmdldCgpKTsKKyAgICBmb3IgKGF1
dG8mIGlkZW50aWZpZXIgOiB0b1JlbW92ZSkgeworICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShh
cnJheS5nZXQoKSwgdG9XSyhpZGVudGlmaWVyKS5nZXQoKSk7CisgICAgICAgIG1fb3duaW5nTWFu
YWdlci5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQorCiAgICAgV0tOb3RpZmljYXRpb25NYW5h
Z2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMobWFuYWdlciwgYXJyYXkuZ2V0KCkpOwog
fQogCkBAIC0xNjAsMjggKzE0OCwyMyBAQCBXS0RpY3Rpb25hcnlSZWYgV2ViTm90aWZpY2F0aW9u
UHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKICAgICByZXR1cm4gV0tNdXRhYmxl
RGljdGlvbmFyeUNyZWF0ZSgpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpz
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiBwYWdlLCB1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRlV2ViTm90
aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKIHsK
LSAgICBBU1NFUlQobV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAuY29udGFpbnMoc3Rk
OjptYWtlX3BhaXIocGFnZSwgbm90aWZpY2F0aW9uSUQpKSk7Ci0gICAgYXV0byBnbG9iYWxJRCA9
IG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLmdldChzdGQ6Om1ha2VfcGFpcihwYWdl
LCBub3RpZmljYXRpb25JRCkpOwotICAgIEFTU0VSVChtX293bmluZ01hbmFnZXIuY29udGFpbnMo
Z2xvYmFsSUQpKTsKLSAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90
aWZpY2F0aW9uKG1fb3duaW5nTWFuYWdlci5nZXQoZ2xvYmFsSUQpLCBnbG9iYWxJRCk7CisgICAg
YXV0byBpZGVudGlmaWVyID0gdG9XVEZTdHJpbmcobm90aWZpY2F0aW9uSUQpOworICAgIEFTU0VS
VChtX293bmluZ01hbmFnZXIuY29udGFpbnMoaWRlbnRpZmllcikpOworCisgICAgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKG1fb3duaW5nTWFuYWdl
ci5nZXQoaWRlbnRpZmllciksIG5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBXZWJOb3RpZmlj
YXRpb25Qcm92aWRlcjo6cmVzZXQoKQogewotICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uUGFp
ciA6IG1fb3duZWROb3RpZmljYXRpb25zKSB7Ci0gICAgICAgIGlmIChub3RpZmljYXRpb25QYWly
LnZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGZvciAoYXV0byBp
dGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikgewogICAgICAgICBhdXRvIGFycmF5ID0gYWRvcHRX
SyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgZm9yICh1aW50NjRfdCBub3RpZmlj
YXRpb25JRCA6IG5vdGlmaWNhdGlvblBhaXIudmFsdWUpCi0gICAgICAgICAgICBXS0FycmF5QXBw
ZW5kSXRlbShhcnJheS5nZXQoKSwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25J
RCkpLmdldCgpKTsKLQotICAgICAgICBub3RpZmljYXRpb25QYWlyLnZhbHVlLmNsZWFyKCk7Ci0g
ICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25z
KG5vdGlmaWNhdGlvblBhaXIua2V5LmdldCgpLCBhcnJheS5nZXQoKSk7CisgICAgICAgIFdLQXJy
YXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB0b1dLKGl0ZXJhdG9yLmtleSkuZ2V0KCkpOworICAg
ICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhp
dGVyYXRvci52YWx1ZSwgYXJyYXkuZ2V0KCkpOwogICAgIH0KKwogICAgIG1fb3duaW5nTWFuYWdl
ci5jbGVhcigpOwotICAgIG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLmNsZWFyKCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGNjZjhiMWJjZTk5Ni4uMzkyNjFiZDQyNjVk
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAKQEAgLTQ2LDE1
ICs0NywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZik7CiAgICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKCk7CiAKLSAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
V0tQYWdlUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0ZVdl
Yk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQp
OwogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBJbnZlcnNlcyBvZiBlYWNo
IG90aGVyLgotICAgIEhhc2hNYXA8V0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
PiwgSGFzaFNldDx1aW50NjRfdD4+IG1fb3duZWROb3RpZmljYXRpb25zOwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdNYW5hZ2VyOwotCi0g
ICAgSGFzaE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50NjRfdD4sIHVpbnQ2NF90PiBtX2xv
Y2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcDsKKyAgICBIYXNoU2V0PFdLUmV0YWluUHRyPFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2VyczsKKyAgICBIYXNoTWFwPFN0
cmluZywgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01hbmFnZXI7CiB9OwogCiB9
Cg==
</data>
<flag name="commit-queue"
          id="473370"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447681</attachid>
            <date>2021-12-20 20:41:42 -0800</date>
            <delta_ts>2021-12-20 20:43:09 -0800</delta_ts>
            <desc>Does it build and test v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>71814</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaCBiL1NvdXJjZS9XVEYvd3Rm
L0lkZW50aWZpZWQuaAppbmRleCA1NzI1NWNhYTcyZjcuLjU2ZTllMTdhNTU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lkZW50
aWZpZWQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC0xMDQsNyArMTA1LDI3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVudGlm
aWVkQmFzZTxTdHJpbmcsIFQ+IHsKK3Byb3RlY3RlZDoKKyAgICBVVUlESWRlbnRpZmllZCgpCisg
ICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkpCisgICAgeworICAgIH0KKworICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJZGVu
dGlmaWVkJiBvdGhlcikKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90aGVy
Lmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBVVUlESWRlbnRp
ZmllZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8
U3RyaW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpJZGVudGlmaWVkOwogdXNpbmcgV1RG
OjpUaHJlYWRTYWZlSWRlbnRpZmllZDsKK3VzaW5nIFdURjo6VVVJRElkZW50aWZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwCmluZGV4IDI4MTdlMjFmMDZlNC4uZWM0YTY4ODU2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTAy
LDcgKzEwMiw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgZGlzcGF0Y2hF
cnJvckV2ZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGNsaWVudC5zaG93
KHRoaXMpKQorICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBT
aG93aW5nOwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3Nl
KCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOiB7CiAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKHRoaXMpOworICAgICAgICAgICAg
Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKCp0aGlz
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2xvc2VkOgpAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
OmZyb20ocGFnZSktPmNsaWVudCgpLm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCkBA
IC0yMjUsNyArMjI1LDcgQEAgYm9vbCBOb3RpZmljYXRpb246OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXRlID09IFNob3dpbmcgJiYgbV9oYXNSZWxl
dmFudEV2ZW50TGlzdGVuZXI7CiB9CiAKLU5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpk
YXRhV2l0aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKK05vdGlmaWNhdGlvbkRhdGEgTm90aWZp
Y2F0aW9uOjpkYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBtX3RpdGxlLApA
QCAtMjM1LDcgKzIzNSw3IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhV2l0
aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2Rp
cmVjdGlvbiwKICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLAotICAgICAgICAwCisgICAgICAgIGlkZW50aWZpZXIoKSwKICAgICB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKaW5kZXggZmUwY2Y0YzBiZDk5Li5hMDczNDEzZmFlOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIK
KyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJXcml0aW5nTW9kZS5oIgogCkBAIC00OCw3ICs0OSw3IEBAIGNsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjazsKIAogc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiAKLWNsYXNz
IE5vdGlmaWNhdGlvbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOb3RpZmlj
YXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSB7CitjbGFzcyBOb3RpZmljYXRpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBVVUlESWRlbnRpZmllZDxOb3RpZmljYXRp
b24+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChOb3RpZmljYXRpb24sIFdF
QkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKICAgICB1c2luZyBQZXJtaXNzaW9uID0gTm90aWZpY2F0
aW9uUGVybWlzc2lvbjsKQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb25EYXRhIGRhdGFXaXRob3V0Tm90aWZpY2F0aW9uSUQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb25EYXRhIGRhdGEoKSBjb25z
dDsKIAogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IGI4MWRkNWI2
NWRlMy4uN2ExNzhkZmI4M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00NywxOSArNDcsMTUg
QEAgcHVibGljOgogICAgIHVzaW5nIFBlcm1pc3Npb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChQZXJtaXNzaW9uKT47CiAKICAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0
aW9uIGJlIHNob3duLgotICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24mKSA9IDA7CiAKICAgICAvLyBSZXF1
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBzaG93biBiZSBj
YW5jZWxlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiYpID0gMDsKIAotICAgIC8vIFdoZW4g
dGhlIHVzZXIgY2xvc2VzIGEgcGFnZSwgb3IgcXVpdHMgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiwg
YWxsIG9mIHRoZSBwYWdlJ3MKLSAgICAvLyBhc3NvY2lhdGVkIG5vdGlmaWNhdGlvbnMgYXJlIGNs
ZWFyZWQuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikgeyB9Ci0gICAgCiAgICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRoYXQg
YSBOb3RpZmljYXRpb24gb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZAogICAgIC8vIChzdWNoIGFz
IGJ5IGEgcGFnZSB0cmFuc2l0aW9uKS4gVGhlIHByZXNlbnRlciBtYXkgY29udGludWUgc2hvd2lu
ZwogICAgIC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBhdHRlbXB0IHRvIGNhbGwg
dGhlIGV2ZW50IGhhbmRsZXJzLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3RE
ZXN0cm95ZWQoTm90aWZpY2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJikgPSAwOwogCiAgICAgLy8gSW5mb3JtcyB0
aGUgcHJlc2VudGVyIHRoZSBjb250cm9sbGVyIGF0dGFjaGVkIHRvIHRoZSBwYWdlIGhhcyBiZWVu
IGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ry
b3llZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCmluZGV4IDAwMDBmMmZlMGMyZC4uOGRmYmQ3NWFhNjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25EYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRh
dGEgewogICAgIFN0cmluZyBsYW5ndWFnZTsKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uOwogICAgIFN0cmluZyBvcmlnaW5TdHJpbmc7Ci0gICAgdWludDY0X3Qg
bm90aWZpY2F0aW9uSUQ7CisgICAgU3RyaW5nIG5vdGlmaWNhdGlvbklEOwogfTsKIAogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTkwLDcgKzkwLDcgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmlj
YXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIW9yaWdpblN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBub3RpZmljYXRpb25JRDsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbklE
OwogICAgIGlmICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMv
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2
MjQ5MDBlZmQ0ZmQuLjNmNjc4YmUzYzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdAogLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VU
eXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1F
OiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3QpCit2b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiB9CiAKLXZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3QpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmgKaW5kZXggMDUzZjMwYTE1ZWFhLi4zNTRlNzQwOGJlMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02MCw5ICs2MCw5IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9u
KGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQg
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7Cisg
ICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkg
ZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG5vdGlmaWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgdm9pZCBtYXliZVNl
bmRDb25uZWN0aW9uQ29uZmlndXJhdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBlMjEyZWQxZmQ2MmMuLmI1ZTA3ZGVjYTIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC00MSw5ICs0
MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRp
b24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNh
dGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlm
aWNhdGlvbklEcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpID0gMDsKIAogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgppbmRleCBhYmNmOTc0NmIwNDkuLjFjOTU2ODkxNTIy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
bWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxs
b3dlZCkgQXN5bmMKICAgICBTaG93Tm90aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhIG5vdGlmaWNhdGlvbkRhdGEpCi0gICAgQ2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQotICAgIENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8dWludDY0
X3Q+IG5vdGlmaWNhdGlvbklEcykKLSAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKQorICAgIENhbmNlbE5vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0
aW9uSUQpCisgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxTdHJpbmc+IG5vdGlmaWNhdGlv
bklEcykKKyAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNw
cAppbmRleCA4YjZjMDM0NDQwNmUuLmY5Y2ZjY2M5MTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcApAQCAtODUsNSArODUsMTAgQEAg
V0tTZWN1cml0eU9yaWdpblJlZiBXS05vdGlmaWNhdGlvbkdldFNlY3VyaXR5T3JpZ2luKFdLTm90
aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGkKIAogdWludDY0X3QgV0tOb3RpZmljYXRpb25HZXRJRChX
S05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChub3Rp
ZmljYXRpb24pLT5ub3RpZmljYXRpb25JRCgpOworICAgIHJldHVybiB0b0ltcGwobm90aWZpY2F0
aW9uKS0+dWlOb3RpZmljYXRpb25JRCgpOworfQorCitXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlv
bkNvcHlDb3JlSURGb3JUZXN0aW5nKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKK3sK
KyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKG5vdGlmaWNhdGlvbiktPmNvcmVOb3RpZmlj
YXRpb25JRCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlm
aWNhdGlvbi5oCmluZGV4IGQzYWU5OGJmNzRkMi4uODg0MTc0Y2Q0MmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgKQEAgLTQyLDYgKzQyLDcg
QEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weUxhbmcoV0tOb3RpZmlj
YXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNh
dGlvbkNvcHlEaXIoV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBX
S1NlY3VyaXR5T3JpZ2luUmVmIFdLTm90aWZpY2F0aW9uR2V0U2VjdXJpdHlPcmlnaW4oV0tOb3Rp
ZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCB1aW50NjRfdCBXS05vdGlmaWNh
dGlvbkdldElEKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CitXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlv
blJlZiBub3RpZmljYXRpb24pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CmluZGV4IDc2OTIzOTkwYWI1Yi4uOGY0NDk5ODQxMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTU0
LDYgKzU0LDExIEBAIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYKICAgICB0b0ltcGwobWFuYWdlclJl
ZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQogCit2
b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tTdHJpbmdSZWYgbm90aWZpY2F0
aW9uSUQpCit7CisgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZENsaWNrTm90aWZp
Y2F0aW9uKHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlvbklEKSk7Cit9CisKIHZvaWQgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKQogewogICAg
IHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnModG9JbXBs
KG5vdGlmaWNhdGlvbklEcykpOwpAQCAtNjgsOCArNzMsMyBAQCB2b2lkIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRp
b25NYQogewogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmlj
YXRpb25Qb2xpY2llcyh0b0ltcGwob3JpZ2lucykpOwogfQotCi11aW50NjRfdCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJHZXRMb2NhbElERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYg
bWFuYWdlciwgV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQotewotICAgIHJldHVybiB0
b0ltcGwobWFuYWdlciktPm5vdGlmaWNhdGlvbkxvY2FsSURGb3JUZXN0aW5nKHRvSW1wbChub3Rp
ZmljYXRpb24pKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggYjc4OTA5YzZjZTQyLi4wY2YyMTQ1MTc5YWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uTWFuYWdlci5oCkBAIC0zOCwxMCArMzgsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmlj
YXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIK
IAogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90
aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCB1aW50NjRfdCBu
b3RpZmljYXRpb25JRCk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2Vy
UmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CitXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IoV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKIFdLX0VY
UE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRp
b25zKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5vdGlm
aWNhdGlvbklEcyk7CiBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRl
ckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFu
YWdlclJlZiwgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CiBXS19F
WFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNh
dGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5
UmVmIG9yaWdpbnMpOwotV0tfRVhQT1JUIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uTWFuYWdlckdl
dExvY2FsSURGb3JUZXN0aW5nKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBX
S05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uLmNwcAppbmRleCAwOGE2ZjZlMmY0YmYuLmI4ZGE3MWJiMGZkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYgZGF0YSkKK1dlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlkZW50aWZpZXIpCiAgICAgOiBtX3RpdGxlKGRhdGEudGl0bGUpCiAgICAgLCBtX2JvZHkoZGF0
YS5ib2R5KQogICAgICwgbV9pY29uVVJMKGRhdGEuaWNvblVSTCkKQEAgLTM4LDcgKzM4LDggQEAg
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYgZGF0YSkKICAgICAsIG1fbGFuZyhkYXRhLmxhbmd1YWdlKQogICAgICwgbV9kaXIo
ZGF0YS5kaXJlY3Rpb24pCiAgICAgLCBtX29yaWdpbihBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKGRhdGEub3JpZ2luU3RyaW5nKSkKLSAgICAsIG1fbm90aWZpY2F0aW9uSUQo
ZGF0YS5ub3RpZmljYXRpb25JRCkKKyAgICAsIG1fY29yZU5vdGlmaWNhdGlvbklEKGRhdGEubm90
aWZpY2F0aW9uSUQpCisgICAgLCBtX3BhZ2VJZGVudGlmaWVyKHBhZ2VJZGVudGlmaWVyKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb24uaAppbmRleCAwZDIyZDQ3ZTIwMWYuLmM5OTMwNmQ1NTNiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbi5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJBUElTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzcsMTEgKzM5LDEx
IEBAIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgV2ViTm90aWZpY2F0aW9uIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6Tm90aWZpY2F0aW9uPiB7CitjbGFzcyBXZWJOb3RpZmljYXRpb24gOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpOb3RpZmljYXRpb24+LCBwdWJsaWMgSWRl
bnRpZmllZDxXZWJOb3RpZmljYXRpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYk5v
dGlmaWNhdGlvbj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEp
CisgICAgc3RhdGljIFJlZjxXZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpO
b3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9u
KGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uKGRh
dGEsIHBhZ2VJZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KQEAgLTUyLDEwICs1NCwxMyBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlyOyB9CiAgICAgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW4uZ2V0KCk7IH0KICAgICAKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uSUQ7IH0KKyAgICB1aW50NjRfdCB1aU5vdGlmaWNh
dGlvbklEKCkgY29uc3QgeyByZXR1cm4gaWRlbnRpZmllcigpOyB9CisgICAgY29uc3QgU3RyaW5n
JiBjb3JlTm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25J
RDsgfQorCisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJOb3RpZmlj
YXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpOworICAgIFdlYk5vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRp
Zmllcik7CiAKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNjQs
NyArNjksOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGlyZWN0aW9uIG1fZGlyOwogICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2lu
PiBtX29yaWdpbjsKLSAgICB1aW50NjRfdCBtX25vdGlmaWNhdGlvbklEOworICAgIFN0cmluZyBt
X2NvcmVOb3RpZmljYXRpb25JRDsKKworICAgIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdl
SWRlbnRpZmllcjsKIH07CiAKIGlubGluZSBib29sIGlzTm90aWZpY2F0aW9uSURWYWxpZCh1aW50
NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmNwcAppbmRleCBhMjlhZWQ1NTA3ZWEuLjhhNWRiMTc2YmY5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtNDUs
MTcgKzQ1LDE3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpz
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmCiAgICAgbV93ZWJQYWdlUHJveHku
c2hvd05vdGlmaWNhdGlvbihkYXRhKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25J
RCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBtX3dlYlBhZ2VQ
cm94eS5jYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG5vdGlmaWNhdGlvbklEcykKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5jbGVhck5vdGlm
aWNhdGlvbnMobm90aWZpY2F0aW9uSURzKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAg
IG1fd2ViUGFnZVByb3h5LmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgK
aW5kZXggNDI1MWY3MmZlYmUyLi5kOTRmYjdjNDdiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzgsOSArMzgsOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25z
dCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2
b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZp
bmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
KSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNh
dGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykg
ZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90
aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTJhYTY1
M2E1ZDVlLi4yMzY0NDkwMjBjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5jcHAKQEAgLTM5LDEyICszOSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVHbG9iYWxOb3RpZmlj
YXRpb25JRCgpCi17Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZUdsb2JhbE5vdGlmaWNhdGlv
bklEID0gMTsKLSAgICByZXR1cm4gdW5pcXVlR2xvYmFsTm90aWZpY2F0aW9uSUQrKzsKLX0KLQog
Y29uc3QgY2hhciogV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgp
CiB7CiAgICAgcmV0dXJuICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkiOwpAQCAtOTYsNTEg
KzkwLDQ3IEBAIEhhc2hNYXA8U3RyaW5nLCBib29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJiBub3RpZmljYXRpb25EYXRhKQogewotICAgIHVpbnQ2NF90IGdsb2JhbE5v
dGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwotICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSk7
Ci0gICAgYXV0byBub3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5p
ZGVudGlmaWVyKCksIG5vdGlmaWNhdGlvbkRhdGEubm90aWZpY2F0aW9uSUQpOwotICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9u
SURQYWlyKTsKLSAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3Rk
OjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkp
KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlm
aWNhdGlvbkRhdGEsIHdlYlBhZ2UtPmlkZW50aWZpZXIoKSk7CisgICAgbV9nbG9iYWxOb3RpZmlj
YXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbi0+dWlOb3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlm
aWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCksIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpOwog
ICAgIG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAK
LXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3
ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5n
JiBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKFdlYk5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVu
dGlmaWVyKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpLnNlY29uZC5nZXQoKSkKLSAgICAgICAgbV9w
cm92aWRlci0+Y2FuY2VsKCpub3RpZmljYXRpb24pOworICAgIGlmIChhdXRvIHdlYk5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQocGFnZU5vdGlmaWNhdGlvbklEKSkKKyAgICAgICAg
bV9wcm92aWRlci0+Y2FuY2VsKCp3ZWJOb3RpZmljYXRpb24pOwogfQogICAgIAotdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVBy
b3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkq
IHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKQogewotICAgIGF1dG8g
Z2xvYmFsSUROb3RpZmljYXRpb25QYWlyID0gbV9ub3RpZmljYXRpb25zLnRha2Uoc3RkOjptYWtl
X3BhaXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQpKTsKLSAgICBp
ZiAodWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnbG9iYWxJRE5vdGlmaWNhdGlvblBh
aXIuZmlyc3QpIHsKLSAgICAgICAgV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBnbG9i
YWxJRE5vdGlmaWNhdGlvblBhaXIuc2Vjb25kLmdldCgpOwotICAgICAgICBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC5yZW1vdmUoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwotICAgICAgICBtX3Byb3Zp
ZGVyLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKCpub3RpZmljYXRpb24pOworICAgIGlmIChhdXRv
IHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VOb3RpZmljYXRpb25J
RCkpIHsKKyAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKHdlYk5vdGlmaWNh
dGlvbi0+dWlOb3RpZmljYXRpb25JRCgpKTsKKyAgICAgICAgbV9wcm92aWRlci0+ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbigqd2ViTm90aWZpY2F0aW9uKTsKICAgICB9CiB9CiAKLXN0YXRpYyBib29s
IHBhZ2VJRHNNYXRjaChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYpCitzdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFN0cmluZyYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBh
Z2VJRDsKIH0KIAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZp
Y2F0aW9uSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdl
SUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKIHsK
ICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmlj
YXRpb25JRHMuY29udGFpbnMocGFnZU5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdl
YlBhZ2UpCiB7Ci0gICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIFZlY3Rvcjx1aW50NjRf
dD4oKSwgcGFnZUlEc01hdGNoKTsKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVj
dG9yPFN0cmluZz4oKSwgcGFnZUlEc01hdGNoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCit2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCiB7CiAgICAg
Y2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIHBhZ2VOb3RpZmljYXRpb25JRHMsIHBhZ2VBbmRO
b3RpZmljYXRpb25JRHNNYXRjaCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbiBmaWx0ZXJGdW5jdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmls
dGVyRnVuY3Rpb24pCiB7CiAgICAgYXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlk
ZW50aWZpZXIoKTsKIApAQCAtMTQ4LDEyICsxMzgsMTIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnMKICAgICBnbG9iYWxOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90
aWZpY2F0aW9uTWFwLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlv
bnMuYmVnaW4oKSwgZW5kID0gbV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgYXV0byBwYWdlUHJveHlJRCA9IGl0LT5rZXkuZmlyc3Q7Ci0gICAgICAgIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT5rZXkuc2Vjb25kOwotICAgICAgICBpZiAo
IWZpbHRlckZ1bmN0aW9uKHBhZ2VQcm94eUlELCBwYWdlTm90aWZpY2F0aW9uSUQsIHRhcmdldFBh
Z2VQcm94eUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKKyAgICAgICAgYXV0byBwYWdlUHJveHlJ
RCA9IGl0LT52YWx1ZS0+cGFnZUlkZW50aWZpZXIoKTsKKyAgICAgICAgU3RyaW5nIGNvcmVOb3Rp
ZmljYXRpb25JRCA9IGl0LT52YWx1ZS0+Y29yZU5vdGlmaWNhdGlvbklEKCk7CisgICAgICAgIGlm
ICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0
UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuZmly
c3Q7CisgICAgICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlLT51
aU5vdGlmaWNhdGlvbklEKCk7CiAgICAgICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5hcHBlbmQo
Z2xvYmFsTm90aWZpY2F0aW9uSUQpOwogICAgIH0KIApAQCAtMTcxLDEyICsxNjEsMTQgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlv
bih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVlLmZpcnN0KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVlKTsKKyAgICBBU1NFUlQobm90aWZpY2F0
aW9uKTsKKworICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uobm90
aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5z
ZWNvbmQ7Ci0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24ocGFnZU5vdGlmaWNhdGlvbklEKSwgMCk7
CisgICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVp
bnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQpAQCAtMTg0LDQwICsxNzYsNzMgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24o
dWludDY0X3QgZ2xvYmFsTm8KICAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAu
ZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVlKTsKKyAgICBBU1NFUlQobm90aWZpY2F0
aW9uKTsKICAgICAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KGl0LT52YWx1ZS5maXJzdCk7CisgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwogICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0g
aXQtPnZhbHVlLnNlY29uZDsKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24ocGFnZU5vdGlmaWNh
dGlvbklEKSwgMCk7CisgICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwog
fQogCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGNvcmVOb3RpZmljYXRpb25JRCkKK3sKKyAgICBhdXRv
IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklEKTsK
KyAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCkpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENs
aWNrTm90aWZpY2F0aW9uKGNvcmVOb3RpZmljYXRpb25JRCksIDApOworfQogCiB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJ
OjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURzKQogewotICAgIEhhc2hNYXA8V2ViUGFnZVBy
b3h5KiwgVmVjdG9yPHVpbnQ2NF90Pj4gcGFnZU5vdGlmaWNhdGlvbklEczsKLSAgICAKKyAgICBI
YXNoTWFwPFdlYlBhZ2VQcm94eSosIFZlY3RvcjxTdHJpbmc+PiBwYWdlTm90aWZpY2F0aW9uSURz
OworCiAgICAgc2l6ZV90IHNpemUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPnNpemUoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBhdXRvIGl0ID0g
bV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PEFQ
STo6VUludDY0PihpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgLy8gVGhlIHBhc3NlZCBhcnJheSBtaWdodCBoYXZl
IHVpbnQ2NF90IGlkZW50aWZpZXJzIG9yIFN0cmluZyBpZGVudGlmaWVycy4KKyAgICAgICAgLy8g
SGFuZGxlIGJvdGguCisKKyAgICAgICAgU3RyaW5nIGNvcmVOb3RpZmljYXRpb25JRDsKKyAgICAg
ICAgYXV0byogaW50VmFsdWUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PEFQSTo6VUludDY0
PihpKTsKKyAgICAgICAgaWYgKGludFZhbHVlKSB7CisgICAgICAgICAgICBhdXRvIGl0ID0gbV9n
bG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChpbnRWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgICAg
ICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1
ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xv
YmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6OlN0cmluZz4oaSk7CisgICAgICAgICAgICBpZiAo
IXN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBj
b3JlTm90aWZpY2F0aW9uSUQgPSBzdHJpbmdWYWx1ZS0+c3RyaW5nKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBBU1NFUlQoIWNvcmVOb3RpZmljYXRpb25JRC5pc0VtcHR5KCkpOworCisgICAgICAg
IGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2UoY29yZU5vdGlmaWNhdGlv
bklEKTsKKyAgICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCkpIHsKKyAgICAgICAgaWYgKFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCkpKSB7CiAgICAgICAgICAgICBhdXRvIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMu
ZmluZCh3ZWJQYWdlKTsKICAgICAgICAgICAgIGlmIChwYWdlSXQgPT0gcGFnZU5vdGlmaWNhdGlv
bklEcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gbmV3VmVjdG9y
OworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG5ld1ZlY3RvcjsKICAgICAgICAgICAg
ICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKICAgICAgICAgICAg
ICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZNb3ZlKG5l
d1ZlY3RvcikpLml0ZXJhdG9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB1aW50NjRf
dCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuc2Vjb25kOwotICAgICAgICAgICAgcGFn
ZUl0LT52YWx1ZS5hcHBlbmQocGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICAgICAgICAgIHBhZ2VJ
dC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdC0+dmFsdWUpOwotICAg
ICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUoaXQpOworICAgICAgICBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uLT51aU5vdGlmaWNhdGlvbklEKCkp
OwogICAgIH0KIAogICAgIGZvciAoYXV0byBpdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYmVnaW4o
KSwgZW5kID0gcGFnZU5vdGlmaWNhdGlvbklEcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQpAQCAt
MjUwLDE2ICsyNzUsNCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlk
ZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAgIHByb2Nlc3NQb29s
KCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKIH0KIAotdWlu
dDY0X3QgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpub3RpZmljYXRpb25Mb2NhbElERm9y
VGVzdGluZyhXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICBpZiAoIW5vdGlm
aWNhdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXAuZmluZChub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOwotICAgIGlm
IChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gaXQtPnZhbHVlLnNlY29uZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBkYWYzMzk3ZjM4
ZDUuLmIxOTU0YThjZmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
CkBAIC02MCwyNyArNjAsMjYgQEAgcHVibGljOgogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBu
b3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogCiAgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSos
IGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKLSAgICB2b2lkIGNhbmNlbChXZWJQ
YWdlUHJveHkqLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2FuY2Vs
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICB2
b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsKLSAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90
aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVBy
b3h5KiwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNsZWFyTm90aWZp
Y2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFnZU5vdGlmaWNh
dGlvbklEcyk7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKIAogICAgIHZvaWQgcHJvdmlkZXJE
aWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHBy
b3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNh
dGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJy
YXkqIG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNh
dGlvblBvbGljeShjb25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAg
ICB2b2lkIHByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSog
b3JpZ2lucyk7CiAKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25Mb2NhbElERm9yVGVzdGluZyhX
ZWJOb3RpZmljYXRpb24qKTsKLQogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNp
bmcgQVBJOjpPYmplY3Q6OmRlcmVmOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29s
ICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
ZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmlj
YXRpb25JRHMpOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZp
bHRlckZ1bmN0aW9uKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbikoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgcGFnZU5v
dGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
Z2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8v
IFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92
ZXJyaWRlOwpAQCAtODgsMTAgKzg3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmV2ViQ29u
dGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5v
dGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwotICAgIC8vIFBhaXIgY29tcHJpc2VkIG9m
IHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0
X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKLSAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQg
b2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFs
dWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNh
dGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+
PiBtX25vdGlmaWNhdGlvbnM7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViTm90aWZp
Y2F0aW9uPj4gbV9ub3RpZmljYXRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ZmY2MGU3YTRiNzku
LjZmNDc5YmE1OTJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC04NzQyLDE3ICs4NzQyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvCiAgICAgbV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PigpLT5zaG93KHRoaXMsIG5vdGlmaWNhdGlvbkRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBX
ZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlv
bklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+Y2FuY2VsKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBub3RpZmljYXRpb25JRHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpCiB7CiAgICAgbV9w
cm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZpY2F0aW9uSURzKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5v
dGlmaWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDc5OTk3MGRlZDZhNC4uZTliMGExMzAyNjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzMiw5ICsyMDMyLDkgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uRGF0YSYpOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjYW5jZWxOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9p
ZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwog
CiAgICAgdm9pZCByZXF1ZXN0Q29va2llQ29uc2VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OkNvb2tpZUNvbnNlbnREZWNpc2lvblJlc3VsdCk+JiYpOwogICAgIHZvaWQgY2xhc3Np
ZnlNb2RhbENvbnRhaW5lckNvbnRyb2xzKFZlY3RvcjxTdHJpbmc+JiYgdGV4dHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+
JiYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCmluZGV4IGI0MzU2YTQyY2QyYi4uODBhZDM2ZTE4
N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5jcHAKQEAgLTIwNiw5ICsyMDYsMTMgQEAgdm9pZCBXS0J1
bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdLQnVuZGxlUmVmIGJ1bmRs
ZVJlZiwgV0tCdW5kbGUKICAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKSk7CiB9CiAK
LXVpbnQ2NF90IFdLQnVuZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxl
UmVmLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS1N0
cmluZ1JlZiBXS0J1bmRsZUNvcHlXZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGVS
ZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAg
ICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQoY29u
dGV4dCwgbm90aWZpY2F0aW9uKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJLaXQ6OnRvSW1w
bChidW5kbGVSZWYpLT53ZWJOb3RpZmljYXRpb25JRChjb250ZXh0LCBub3RpZmljYXRpb24pOwor
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0NvcGllZEFQSSgqaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV0tCdW5kbGVT
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJp
dmF0ZS5oCmluZGV4IGE0ZDIzZjUzN2UzNS4uZGM0ZDEzN2JlYTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUHJpdmF0ZS5oCkBAIC01Miw3ICs1Miw3IEBAIFdLX0VYUE9SVCBib29sIFdLQnVuZGxl
SXNQYWdlQm94VmlzaWJsZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJh
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25Gb3JUZXN0
aW5nKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbG9jYXRpb24pOwogV0tfRVhQT1JU
IHZvaWQgV0tCdW5kbGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLQnVuZGxlUmVmIGJ1
bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpblN0cmluZ1JlZiwg
Ym9vbCBhbGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSk7Ci1XS19FWFBPUlQgdWludDY0X3QgV0tCdW5kbGVHZXRXZWJOb3RpZmljYXRpb25JRChXS0J1
bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNh
dGlvbik7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9u
SUQoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBu
b3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZy
b21VSW50OEFycmF5KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgZGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wg
ZW5hYmxlZCk7CiAvLyBSZXR1cm5zIGFycmF5IG9mIGRpY3Rpb25hcmllcy4gRGljdGlvbmFyeSBr
ZXlzIGFyZSBkb2N1bWVudCBpZGVudGlmaWVycywgdmFsdWVzIGFyZSBkb2N1bWVudCBVUkxzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZjA1YzRlYjZmYzRiLi4zODk1YmMyYjEyOWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtMzEwLDE3ICszMTAsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSogcGFnZSkKICNl
bmRpZgogfQogCi11aW50NjRfdCBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlND
b250ZXh0UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0
UmVmIGpzQ29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKIHsKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9
IEpTTm90aWZpY2F0aW9uOjp0b1dyYXBwZWQodG9KUyhqc0NvbnRleHQpLT52bSgpLCB0b0pTKHRv
SlMoanNDb250ZXh0KSwganNOb3RpZmljYXRpb24pKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+bm90aWZpY2F0aW9uSURGb3JUZXN0
aW5nKG5vdGlmaWNhdGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIG5vdGlmaWNhdGlvbi0+aWRlbnRpZmllcigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
anNDb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oanNOb3RpZmljYXRpb24pOwotICAgIHJldHVy
biAwOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
aAppbmRleCA1YTRmNmE4NzliMTMuLjc1ZDllNTkzOTk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAg
LTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lv
bihXZWJQYWdlKiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAg
ICAgdm9pZCByZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7Ci0g
ICAgdWludDY0X3Qgd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmKTsKICAgICBSZWY8QVBJOjpEYXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4
QXJyYXkoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICAKICAgICB0eXBlZGVmIEhhc2hN
YXA8dWludDY0X3QsIFN0cmluZz4gRG9jdW1lbnRJRFRvVVJMTWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCA5YTIwMTg5MmIxYzEuLjQ2NmUwNmI5YzllMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTUxLDE0ICs1MSw2IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVOb3RpZmljYXRpb25JRCgpCi17Ci0g
ICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZU5vdGlmaWNhdGlvbklEID0gMTsKLSAgICByZXR1cm4g
dW5pcXVlTm90aWZpY2F0aW9uSUQrKzsKLX0KLSNlbmRpZgotCiBjb25zdCBjaGFyKiBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyIjsKQEAgLTEyOCwxOCArMTIwLDYgQEAgdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyOjpyZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKQogI2VuZGlmCiB9CiAK
LXVpbnQ2NF90IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6Om5vdGlmaWNhdGlvbklERm9yVGVzdGlu
ZyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
IG1fbm90aWZpY2F0aW9uTWFwLmdldChub3RpZmljYXRpb24pOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiAjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmROb3RpZmlj
YXRpb25NZXNzYWdlKFdlYlByb2Nlc3MmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBXZWJQYWdlJiBw
YWdlKQogewpAQCAtMTUxLDIyICsxMzEsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBz
ZW5kTm90aWZpY2F0aW9uTWVzc2FnZShXZWJQcm9jZXNzJiBwcm9jZXNzLCBVJiYgbWVzc2EKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIAotYm9vbCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQor
Ym9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0
aW9uLCBXZWJQYWdlKiBwYWdlKQogewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlm
ICghbm90aWZpY2F0aW9uIHx8ICFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNh
dGlvbnNFbmFibGVkKCkpCisgICAgaWYgKCFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5v
dGlmaWNhdGlvbnNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICB1
aW50NjRfdCBub3RpZmljYXRpb25JRCA9IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKTsKLSAgICBt
X25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25JRCk7Ci0gICAg
bV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0g
ICAgCi0gICAgYXV0byBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0
aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuaXRlcmF0
b3I7Ci0gICAgaXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAKLSAgICBhdXRvIG5v
dGlmaWNhdGlvbkRhdGEgPSBub3RpZmljYXRpb24tPmRhdGFXaXRob3V0Tm90aWZpY2F0aW9uSUQo
KTsKLSAgICBub3RpZmljYXRpb25EYXRhLm5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uSUQ7
Ci0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKFdURk1vdmUobm90
aWZpY2F0aW9uRGF0YSkpLCAqcGFnZSk7CisgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90
aWZpY2F0aW9uLmlkZW50aWZpZXIoKSwgJm5vdGlmaWNhdGlvbik7CisKKyAgICBzZW5kTm90aWZp
Y2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmRhdGEoKSksICpwYWdl
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlv
bik7CkBAIC0xNzUsNzIgKzE0OCw0NCBAQCBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNo
b3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAjZW5kaWYKIH0K
IAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNh
bmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNpZiBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIW5vdGlmaWNhdGlvbiB8fCAhcGFnZS0+Y29y
ZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlmICghcGFn
ZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBtX25vdGlmaWNh
dGlvbk1hcC5nZXQobm90aWZpY2F0aW9uKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNz
LCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpDYW5jZWxOb3Rp
ZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCAqcGFnZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShub3RpZmljYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSNlbmRpZgotfQogCi12
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJQYWdlKiBwYWdlKQotewotI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQoY29udGV4dCk7Ci0gICAgaWYgKGl0
ID09IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQoKSkKKyAgICBhdXRvIG1hcHBlZE5vdGlm
aWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVy
KCkpOworICAgIGlmICghbWFwcGVkTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKG1hcHBlZE5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKIAotICAgIFZlY3Rv
cjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyA9IGl0LT52YWx1ZTsKLSAgICBzZW5kTm90aWZp
Y2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCAqcGFnZSk7
Ci0gICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlv
bj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklE
c1tpXSk7Ci0gICAgICAgIGlmICghbm90aWZpY2F0aW9uKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIG5vdGlmaWNhdGlvbi0+ZmluYWxpemUoKTsKLSAgICAgICAgbV9ub3RpZmljYXRp
b25NYXAucmVtb3ZlKG5vdGlmaWNhdGlvbik7Ci0gICAgfQotICAgIAotICAgIG1fbm90aWZpY2F0
aW9uQ29udGV4dE1hcC5yZW1vdmUoaXQpOworICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1f
cHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2Fu
Y2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFnZSk7CiAjZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpk
aWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdl
KiBwYWdlKQogewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIFJlZlB0ciBwcm90ZWN0
ZWROb3RpZmljYXRpb24geyBub3RpZmljYXRpb24gfTsKKyAgICBSZWYgcHJvdGVjdGVkTm90aWZp
Y2F0aW9uIHsgbm90aWZpY2F0aW9uIH07CiAKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9
IG1fbm90aWZpY2F0aW9uTWFwLnRha2Uobm90aWZpY2F0aW9uKTsKLSAgICBpZiAoIW5vdGlmaWNh
dGlvbklEKQorICAgIGF1dG8gdGFrZW5Ob3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFw
LnRha2Uobm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKSk7CisgICAgaWYgKCF0YWtlbk5vdGlmaWNh
dGlvbikKICAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCh0YWtlbk5vdGlmaWNhdGlvbiA9PSAm
bm90aWZpY2F0aW9uKTsKIAotICAgIG1fbm90aWZpY2F0aW9uSURNYXAucmVtb3ZlKG5vdGlmaWNh
dGlvbklEKTsKLSAgICByZW1vdmVOb3RpZmljYXRpb25Gcm9tQ29udGV4dE1hcChub3RpZmljYXRp
b25JRCwgbm90aWZpY2F0aW9uKTsKLSAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nl
c3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkRpZERlc3Ry
b3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCAqcGFnZSk7CisgICAgc2VuZE5vdGlmaWNh
dGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVy
KCkpLCAqcGFnZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAg
IFVOVVNFRF9QQVJBTShwYWdlKTsKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBub3RpZmljYXRpb25JRCkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAo
IWlzTm90aWZpY2F0aW9uSURWYWxpZChub3RpZmljYXRpb25JRCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNh
dGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCiAg
ICAgICAgIHJldHVybjsKQEAgLTI1MSwxMiArMTk2LDkgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogI2Vu
ZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6
OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFsaWQo
bm90aWZpY2F0aW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWZQdHI8Tm90aWZpY2F0
aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25J
RCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSwyMiAr
MjExLDE3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9z
ZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykKIHsK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBzaXplX3QgY291bnQgPSBub3RpZmljYXRp
b25JRHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewot
ICAgICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbklEc1tpXTsKLSAg
ICAgICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRp
b25JRHNbaV07CiAKICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0g
bV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEKTsKICAgICAgICAgaWYgKCFu
b3RpZmljYXRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtX25vdGlmaWNh
dGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uKTsKLSAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9u
RnJvbUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0KICAg
ICAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaENsb3NlRXZlbnQoKTsKICAgICB9CiAjZWxzZQpA
QCAtMjkyLDE4ICsyMjksNCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZgogI2VuZGlmCiB9CiAK
LSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAodWludDY0X3Qgbm90aWZpY2F0aW9uSUQs
IE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQotewotICAgIC8vIFRoaXMgaXMgYSBoZWxwZXIg
ZnVuY3Rpb24gZm9yIG1hbmFnaW5nIHRoZSBoYXNoIG1hcHMuCi0gICAgTm90aWZpY2F0aW9uQ29u
dGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChub3Rp
ZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGl0ICE9IG1f
bm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQoKSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQtPnZh
bHVlLmZpbmQobm90aWZpY2F0aW9uSUQpOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7
Ci0gICAgaXQtPnZhbHVlLnJlbW92ZShpbmRleCk7Ci0gICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5
KCkpCi0gICAgICAgIG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5yZW1vdmUoaXQpOwotfQotI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5o
CmluZGV4IDZlZTk0ZjU2YjAzYS4uMmI4MGJlZjRkY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05v
dGlmaWNhdGlvbkNsaWVudC5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTMsMTEgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwogICAgIAotICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3Rp
ZmljYXRpb24qLCBXZWJQYWdlKik7Ci0gICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uKiwgV2ViUGFnZSopOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJQYWdlKik7CisgICAgYm9vbCBzaG93KFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbiYsIFdlYlBhZ2UqKTsKKyAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3Rp
ZmljYXRpb24mLCBXZWJQYWdlKik7CisKICAgICAvLyBUaGlzIGNhbGxiYWNrIGNvbWVzIGZyb20g
V2ViQ29yZSwgbm90IG1lc3NhZ2VkIGZyb20gdGhlIFVJIHByb2Nlc3MuCi0gICAgdm9pZCBkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiosIFdlYlBhZ2UqKTsKKyAg
ICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViQ29yZTo6Tm90aWZpY2F0aW9uJiwgV2Vi
UGFnZSopOwogCiAgICAgdm9pZCBkaWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lvbihjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKIApAQCAtNjUsNyArNjYsNiBAQCBw
dWJsaWM6CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBvbGlj
eUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykgY29uc3Q7CiAKICAgICB2b2lk
IHJlbW92ZUFsbFBlcm1pc3Npb25zRm9yVGVzdGluZygpOwotICAgIHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklERm9yVGVzdGluZyhXZWJDb3JlOjpOb3RpZmljYXRpb24qKTsKIAogcHJpdmF0ZToKICAg
ICAvLyBXZWJQcm9jZXNzU3VwcGxlbWVudApAQCAtNzUsMjcgKzc1LDE3IEBAIHByaXZhdGU6CiAg
ICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIGRpZFNob3dOb3Rp
ZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgZGlkQ2xpY2tOb3Rp
ZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgZGlkQ2xvc2VOb3Rp
ZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7CisgICAg
dm9pZCBkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwor
ICAgIHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25J
RCk7CisgICAgdm9pZCBkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBkaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lv
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9yaWdpblN0cmluZ3MpOwotICAgIAotI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQotICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRN
YXAodWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopOwotI2Vu
ZGlmCiAKICAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4s
IHVpbnQ2NF90PiBOb3RpZmljYXRpb25NYXA7Ci0gICAgTm90aWZpY2F0aW9uTWFwIG1fbm90aWZp
Y2F0aW9uTWFwOwotICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbj4+IE5vdGlmaWNhdGlvbklETWFwOworICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25J
RE1hcDsKICAgICBOb3RpZmljYXRpb25JRE1hcCBtX25vdGlmaWNhdGlvbklETWFwOwogICAgIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD4sIFZlY3Rvcjx1aW50NjRfdD4+IE5vdGlmaWNhdGlvbkNvbnRleHRNYXA7Ci0gICAgTm90aWZp
Y2F0aW9uQ29udGV4dE1hcCBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXA7Ci0gICAgCiAgICAgSGFz
aE1hcDxTdHJpbmcsIGJvb2w+IG1fcGVybWlzc2lvbnNNYXA7CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBlM2IzMTg3MDlk
NWQuLjIxNjg4ZTkyZjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
Lm1lc3NhZ2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2Vz
IC0+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgRGlkU2hvd05v
dGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Ci0gICAgRGlkQ2xpY2tOb3RpZmlj
YXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIERpZENsb3NlTm90aWZpY2F0aW9u
cyhWZWN0b3I8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEcyk7CisgICAgRGlkU2hvd05vdGlmaWNh
dGlvbihTdHJpbmcgbm90aWZpY2F0aW9uSUQpOworICAgIERpZENsaWNrTm90aWZpY2F0aW9uKFN0
cmluZyBub3RpZmljYXRpb25JRCk7CisgICAgRGlkQ2xvc2VOb3RpZmljYXRpb25zKFZlY3RvcjxT
dHJpbmc+IG5vdGlmaWNhdGlvbklEcyk7CiAgICAgRGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNp
b24oU3RyaW5nIG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICBEaWRSZW1vdmVOb3Rp
ZmljYXRpb25EZWNpc2lvbnMoVmVjdG9yPFN0cmluZz4gb3JpZ2luU3RyaW5ncyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQuY3BwCmluZGV4IGNhZTUwOTVkMzk2ZS4uYzI0ZWQzN2Q3
NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcApAQCAtNDYsMjIgKzQ2LDE3
IEBAIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6fldlYk5vdGlmaWNhdGlvbkNsaWVudCgpCiB7CiB9
CiAKLWJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZp
Y2F0aW9uKQorYm9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uJiBu
b3RpZmljYXRpb24pCiB7CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBs
ZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+c2hvdyhub3RpZmljYXRpb24sIG1fcGFn
ZSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5vdGlmaWNhdGlvbiwg
bV9wYWdlKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0
aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2xlYXJO
b3RpZmljYXRpb25zKGNvbnRleHQsIG1fcGFnZSk7Ci19Ci0KLXZvaWQgV2ViTm90aWZpY2F0aW9u
Q2xpZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVz
dHJveWVkKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG1fcGFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgKaW5kZXggYTMxNDA5MDkwZDY0Li5kY2QyMDg5NDYyZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTQ1LDEwICs0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJOb3RpZmljYXRpb25DbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3co
V2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWwoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgbm90
aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRl
OworICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIG5v
dGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlk
ZTsKICAgICB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBQZXJtaXNzaW9uSGFuZGxlciYmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpOb3RpZmlj
YXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5k
ZXggMDJmMWRiMDQzZDg4Li5lNTcxNTNmNWZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5oCkBAIC00NSwxMCArNDUsOSBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9u
SURGb3JUZXN0aW5nKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopOwogCiBwcml2YXRlOgotICAgIGJv
b2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlkZTsKLSAgICB2b2lkIGNhbmNl
bChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFyTm90aWZp
Y2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikg
b3ZlcnJpZGU7CisgICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYpIG92ZXJyaWRl
OworICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYpIG92ZXJyaWRlOworICAg
IHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFBlcm1pc3Npb25IYW5kbGVyJiYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwpAQCAtNTcsOSArNTYsNiBAQCBwcml2
YXRlOgogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbj4sIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+PiBtX25vdGlmaWNh
dGlvbk1hcDsKLSAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ+LCBWZWN0b3I8UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBO
b3RpZmljYXRpb25Db250ZXh0TWFwOwotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXAgbV9ub3Rp
ZmljYXRpb25Db250ZXh0TWFwOwogCiAgICAgYm9vbCBtX2V2ZXJSZXF1ZXN0ZWRQZXJtaXNzaW9u
IHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KaW5kZXggMzllZGM3
MjdkZDVhLi5jMGFhZDA5OTNjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KQEAg
LTU4LDYyICs1OCwzNCBAQCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OldlYk5vdGlmaWNhdGlvbkNs
aWVudChXZWJWaWV3ICp3ZWJWaWV3KQogewogfQogCi1ib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dDo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK2Jvb2wgV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewogICAgIGlmICghW21f
d2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKTsK
LSAgICBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBhZG9wdE5T
KFtbV2ViTm90aWZpY2F0aW9uIGFsbG9jXSBpbml0V2l0aENvcmVOb3RpZmljYXRpb246bm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbklEOm5vdGlmaWNhdGlvbklEXSk7Ci0gICAgbV9ub3RpZmljYXRp
b25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgd2ViTm90aWZpY2F0aW9uKTsKLQotICAgIGF1dG8gaXQg
PSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBWZWN0b3I8UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4+KCkpLml0ZXJh
dG9yOwotICAgIGl0LT52YWx1ZS5hcHBlbmQod2ViTm90aWZpY2F0aW9uKTsKKyAgICBSZXRhaW5Q
dHI8V2ViTm90aWZpY2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBhZG9wdE5TKFtbV2ViTm90aWZp
Y2F0aW9uIGFsbG9jXSBpbml0V2l0aENvcmVOb3RpZmljYXRpb246Jm5vdGlmaWNhdGlvbiBub3Rp
ZmljYXRpb25JRDpub3RpZmljYXRpb25JRF0pOworICAgIG1fbm90aWZpY2F0aW9uTWFwLnNldCgm
bm90aWZpY2F0aW9uLCB3ZWJOb3RpZmljYXRpb24pOwogCiAgICAgW1ttX3dlYlZpZXcgX25vdGlm
aWNhdGlvblByb3ZpZGVyXSBzaG93Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbi5nZXQoKSBm
cm9tV2ViVmlldzptX3dlYlZpZXddOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdlYk5v
dGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQordm9p
ZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlv
bikKIHsKLSAgICBXZWJOb3RpZmljYXRpb24gKndlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0
aW9uTWFwLmdldChub3RpZmljYXRpb24pLmdldCgpOworICAgIFdlYk5vdGlmaWNhdGlvbiAqd2Vi
Tm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KCZub3RpZmljYXRpb24pLmdldCgp
OwogICAgIGlmICghd2ViTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBbW21f
d2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIGNhbmNlbE5vdGlmaWNhdGlvbjp3ZWJOb3Rp
ZmljYXRpb25dOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2xlYXJOb3RpZmlj
YXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgYXV0byBpdCA9
IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5maW5kKGNvbnRleHQpOwotICAgIGlmIChpdCA9PSBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBhdXRvIGZpbmFsaXplZE5vdGlmaWNhdGlvbklEcyA9IGNyZWF0ZU5TQXJyYXkoaXQtPnZhbHVl
LCBbJl0gKGF1dG8mIG5vdGlmaWNhdGlvbikgewotICAgICAgICBhdXRvJiBjb3JlTm90aWZpY2F0
aW9uID0gKmNvcmUobm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICAgICAgY29yZU5vdGlmaWNhdGlv
bi5maW5hbGl6ZSgpOwotICAgICAgICBtX25vdGlmaWNhdGlvbk1hcC5yZW1vdmUoJmNvcmVOb3Rp
ZmljYXRpb24pOwotICAgICAgICByZXR1cm4gQChbbm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklE
XSk7Ci0gICAgfSk7Ci0KLSAgICBbW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIGNs
ZWFyTm90aWZpY2F0aW9uczpmaW5hbGl6ZWROb3RpZmljYXRpb25JRHMuZ2V0KCldOwotICAgIG1f
bm90aWZpY2F0aW9uQ29udGV4dE1hcC5yZW1vdmUoaXQpOwotfQotCi12b2lkIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90
aWZpY2F0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVj
dERlc3Ryb3llZChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKLSAgICBSZXRhaW5QdHI8
V2ViTm90aWZpY2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbk1hcC50YWtl
KG5vdGlmaWNhdGlvbik7CisgICAgUmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25NYXAudGFrZSgmbm90aWZpY2F0aW9uKTsKICAgICBpZiAo
IXdlYk5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpdCA9IG1fbm90
aWZpY2F0aW9uQ29udGV4dE1hcC5maW5kKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKLSAgICBBU1NFUlQoaXQgIT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmVuZCgp
KTsKLSAgICBzaXplX3QgaW5kZXggPSBpdC0+dmFsdWUuZmluZCh3ZWJOb3RpZmljYXRpb24pOwot
ICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgaXQtPnZhbHVlLnJlbW92ZShpbmRl
eCk7Ci0gICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIG1fbm90aWZpY2F0aW9u
Q29udGV4dE1hcC5yZW1vdmUoaXQpOwotCiAgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblBy
b3ZpZGVyXSBub3RpZmljYXRpb25EZXN0cm95ZWQ6d2ViTm90aWZpY2F0aW9uLmdldCgpXTsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAppbmRleCA2N2E3ZDEwMGFiOTcuLjdlOGVkNDIwYmI3YyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKQEAgLTY2Myw5ICs2NjMsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0
U2V0Vmlld1NpemUoZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KQogICAgIFdLQnVuZGxlUGFn
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKHBhZ2UoKS0+cGFnZSgpLCB0b1dLKCJT
ZXRWaWV3U2l6ZSIpLmdldCgpLCBib2R5LmdldCgpLCAwKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1
bmRsZTo6cG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sodWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpCit2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGljayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKIHsKLSAgICBwb3N0UGFnZU1lc3NhZ2Uo
IlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG5v
dGlmaWNhdGlvbklEKSkpOworICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmlj
YXRpb25DbGljayIsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCBhZGRzVmlzaXRlZExpbmtzKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5o
CmluZGV4IDY4M2ZkODU0NzU3YS4uNjI0NzU2ODk4M2JjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC05NCw3
ICs5NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RTZXRCYWNraW5nU2NhbGVGYWN0b3IoZG91
YmxlKTsKICAgICB2b2lkIHBvc3RTZXRXaW5kb3dJc0tleShib29sKTsKICAgICB2b2lkIHBvc3RT
ZXRWaWV3U2l6ZShkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOwotICAgIHZvaWQgcG9zdFNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgcG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZp
Y2F0aW9uSUQpOwogICAgIHZvaWQgcG9zdFNldEFkZHNWaXNpdGVkTGlua3MoYm9vbCk7CiAKICAg
ICAvLyBHZW9sb2NhdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGEzMjgwZGYxNmNkNC4uYzMzYThlNTBkNDJh
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKQEAgLTg4MSw3ICs4ODEsOSBAQCB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFs
bFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKIHZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGljayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbikKIHsKICAgICBhdXRv
JiBpbmplY3RlZEJ1bmRsZSA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKTsKLSAgICBpbmpl
Y3RlZEJ1bmRsZS5wb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS0J1bmRsZUdldFdl
Yk5vdGlmaWNhdGlvbklEKGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBtYWluRnJhbWVKU0NvbnRl
eHQoKSwgbm90aWZpY2F0aW9uKSk7CisKKyAgICBhdXRvIG5vdGlmaWNhdGlvbklEID0gYWRvcHRX
SyhXS0J1bmRsZUNvcHlXZWJOb3RpZmljYXRpb25JRChpbmplY3RlZEJ1bmRsZS5idW5kbGUoKSwg
bWFpbkZyYW1lSlNDb250ZXh0KCksIG5vdGlmaWNhdGlvbikpOworICAgIGluamVjdGVkQnVuZGxl
LnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG5vdGlmaWNhdGlvbklELmdldCgpKTsK
IH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBlbmFi
bGVkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA1Njli
OThhNTIzOTQuLjYxOWQ2NmUyZGI4NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKQEAgLTIzNDYsNyArMjM0Niw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRp
ZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoV0tQYWdlUmVmKQogICAgIG1fY3VycmVu
dEludm9jYXRpb24tPmRpZFJlbW92ZVN3aXBlU25hcHNob3QoKTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayh1aW50NjRfdCBub3RpZmljYXRp
b25JRCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
V0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93ZWJOb3RpZmljYXRpb25Qcm92
aWRlci5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CmluZGV4IDA3Zjc1MDM1YmYzMS4uMDVkYzQ3OTIyYmE3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIGJvb2wg
YmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2JlZm9yZVVubG9hZFJl
dHVyblZhbHVlOyB9CiAgICAgdm9pZCBzZXRCZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZShib29sIHZh
bHVlKSB7IG1fYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWUgPSB2YWx1ZTsgfQogCi0gICAgdm9pZCBz
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAg
ICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0
aW9uSUQpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CmluZGV4IDcyZmE4MmJiYzAxMC4uMmJmNGMxOTllNDhkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lCiAgICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIikpIHsKLSAgICAgICAg
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keSk7CisgICAg
ICAgIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEID0gc3RyaW5nVmFsdWUobWVzc2FnZUJvZHkp
OwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2ltdWxhdGVXZWJOb3RpZmlj
YXRpb25DbGljayhub3RpZmljYXRpb25JRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCmlu
ZGV4IGNkNWZjNjYyMTVhNC4uNThlMWZhZjViZWJkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAKKyNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tNdXRh
YmxlQXJyYXkuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CkBAIC02Niw4ICs2Nyw4IEBAIFdlYk5v
dGlmaWNhdGlvblByb3ZpZGVyOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcigpCiAKIFdlYk5vdGlm
aWNhdGlvblByb3ZpZGVyOjp+V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIoKQogewotICAgIGZvciAo
YXV0byYgbWFuYWdlciA6IG1fb3duZWROb3RpZmljYXRpb25zKQotICAgICAgICBXS05vdGlmaWNh
dGlvbk1hbmFnZXJTZXRQcm92aWRlcihtYW5hZ2VyLmtleS5nZXQoKSwgbnVsbHB0cik7CisgICAg
Zm9yIChhdXRvJiBtYW5hZ2VyIDogbV9rbm93bk1hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNh
dGlvbk1hbmFnZXJTZXRQcm92aWRlcihtYW5hZ2VyLmdldCgpLCBudWxscHRyKTsKIH0KIAogV0tO
b3RpZmljYXRpb25Qcm92aWRlclYwIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpwcm92aWRlcigp
CkBAIC04OSw0NCArOTAsMjYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2hvd1dl
Yk5vdGlmaWNhdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tOb3RpZmljYXRpb24KIHsKICAgICBhdXRv
IGNvbnRleHQgPSBXS1BhZ2VHZXRDb250ZXh0KHBhZ2UpOwogICAgIGF1dG8gbm90aWZpY2F0aW9u
TWFuYWdlciA9IFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1hbmFnZXIoY29udGV4dCk7Ci0gICAg
dWludDY0X3QgaWQgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbik7CisgICAgQVNT
RVJUKG1fa25vd25NYW5hZ2Vycy5jb250YWlucyhub3RpZmljYXRpb25NYW5hZ2VyKSk7CiAKLSAg
ICBBU1NFUlQobV9vd25lZE5vdGlmaWNhdGlvbnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdl
cikpOwotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vd25lZE5vdGlmaWNhdGlvbnMuZmluZChub3Rp
ZmljYXRpb25NYW5hZ2VyKS0+dmFsdWUuYWRkKGlkKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIGF1dG8gYWRkUmVzdWx0MiA9IG1fb3du
aW5nTWFuYWdlci5zZXQoaWQsIG5vdGlmaWNhdGlvbk1hbmFnZXIpOwotICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0MiwgYWRkUmVzdWx0Mi5pc05ld0VudHJ5KTsKLSAgICBhdXRvIGFkZFJlc3Vs
dDMgPSBtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcC5hZGQoc3RkOjptYWtlX3BhaXIo
cGFnZSwgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0TG9jYWxJREZvclRlc3Rpbmcobm90aWZpY2F0
aW9uTWFuYWdlciwgbm90aWZpY2F0aW9uKSksIGlkKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJl
c3VsdDMsIGFkZFJlc3VsdDMuaXNOZXdFbnRyeSk7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9
IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZpY2F0aW9uKTsKKyAgICBhdXRvIGNvcmVJZGVudGlm
aWVyID0gYWRvcHRXSyhXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKG5vdGlmaWNh
dGlvbikpOwogCi0gICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZp
Y2F0aW9uKG5vdGlmaWNhdGlvbk1hbmFnZXIsIGlkKTsKLX0KKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fb3duaW5nTWFuYWdlci5zZXQodG9XVEZTdHJpbmcoY29yZUlkZW50aWZpZXIuZ2V0KCkpLCBu
b3RpZmljYXRpb25NYW5hZ2VyKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVz
dWx0LmlzTmV3RW50cnkpOwogCi1zdGF0aWMgdm9pZCByZW1vdmVHbG9iYWxJREZyb21JRE1hcChI
YXNoTWFwPHN0ZDo6cGFpcjxXS1BhZ2VSZWYsIHVpbnQ2NF90PiwgdWludDY0X3Q+JiBtYXAsIHVp
bnQ2NF90IGlkKQotewotICAgIGZvciAoYXV0byBpdGVyID0gbWFwLmJlZ2luKCk7IGl0ZXIgIT0g
bWFwLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKGl0ZXItPnZhbHVlID09IGlkKSB7Ci0g
ICAgICAgICAgICBtYXAucmVtb3ZlKGl0ZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb25NYW5hZ2VyLCBp
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6Y2xvc2VXZWJO
b3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogewotICAgIHVpbnQ2
NF90IGlkID0gV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRpb24pOwotICAgIEFTU0VSVCht
X293bmluZ01hbmFnZXIuY29udGFpbnMoaWQpKTsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFn
ZXIgPSBtX293bmluZ01hbmFnZXIuZ2V0KGlkKTsKLQotICAgIEFTU0VSVChtX293bmVkTm90aWZp
Y2F0aW9ucy5jb250YWlucyhub3RpZmljYXRpb25NYW5hZ2VyKSk7Ci0gICAgYm9vbCBzdWNjZXNz
ID0gbV9vd25lZE5vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb25NYW5hZ2VyKS0+dmFsdWUu
cmVtb3ZlKGlkKTsKLSAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwotICAgIG1f
b3duaW5nTWFuYWdlci5yZW1vdmUoaWQpOworICAgIGF1dG8gaWRlbnRpZmllciA9IHRvV1RGU3Ry
aW5nKGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhub3RpZmljYXRp
b24pKS5nZXQoKSk7CiAKLSAgICByZW1vdmVHbG9iYWxJREZyb21JRE1hcChtX2xvY2FsVG9HbG9i
YWxOb3RpZmljYXRpb25JRE1hcCwgaWQpOworICAgIGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9
IG1fb3duaW5nTWFuYWdlci50YWtlKGlkZW50aWZpZXIpOworICAgIEFTU0VSVChub3RpZmljYXRp
b25NYW5hZ2VyKTsKKyAgICBBU1NFUlQobV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG5vdGlmaWNh
dGlvbk1hbmFnZXIpKTsKIAotICAgIGF1dG8gd2tJRCA9IGFkb3B0V0soV0tVSW50NjRDcmVhdGUo
aWQpKTsKKyAgICBhdXRvIHdrSUQgPSBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKFdLTm90aWZpY2F0
aW9uR2V0SUQobm90aWZpY2F0aW9uKSkpOwogICAgIGF1dG8gYXJyYXkgPSBhZG9wdFdLKFdLTXV0
YWJsZUFycmF5Q3JlYXRlKCkpOwogICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB3
a0lELmdldCgpKTsKICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3NlTm90
aWZpY2F0aW9ucyhub3RpZmljYXRpb25NYW5hZ2VyLCBhcnJheS5nZXQoKSk7CkBAIC0xMzQsMjMg
KzExNywyOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNh
dGlvbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpbwogCiB2b2lkIFdlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjphZGROb3RpZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJl
ZiBtYW5hZ2VyKQogewotICAgIG1fb3duZWROb3RpZmljYXRpb25zLmFkZChtYW5hZ2VyLCBIYXNo
U2V0PHVpbnQ2NF90PigpKTsKKyAgICBBU1NFUlQoIW1fa25vd25NYW5hZ2Vycy5jb250YWlucyht
YW5hZ2VyKSk7CisgICAgbV9rbm93bk1hbmFnZXJzLmFkZChtYW5hZ2VyKTsKIH0KIAogdm9pZCBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcihXS05vdGlm
aWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlcikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vd25l
ZE5vdGlmaWNhdGlvbnMuZmluZChtYW5hZ2VyKTsKLSAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9v
d25lZE5vdGlmaWNhdGlvbnMuZW5kKCkpOwotICAgIGF1dG8gdG9SZW1vdmUgPSBpdGVyYXRvci0+
dmFsdWU7Ci0gICAgV0tSZXRhaW5QdHI8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBndWFyZCht
YW5hZ2VyKTsKLSAgICBtX293bmVkTm90aWZpY2F0aW9ucy5yZW1vdmUoaXRlcmF0b3IpOworICAg
IGF1dG8gcHJvdGVjdGVkTWFuYWdlciA9IG1fa25vd25NYW5hZ2Vycy50YWtlKG1hbmFnZXIpOwor
ICAgIEFTU0VSVChwcm90ZWN0ZWRNYW5hZ2VyKTsKKworICAgIGF1dG8gdG9SZW1vdmUgPSBWZWN0
b3I8U3RyaW5nPiB7IH07CisgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdl
cikgeworICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUgIT0gbWFuYWdlcikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB0b1JlbW92ZS5hcHBlbmQoaXRlcmF0b3Iua2V5KTsKKyAgICB9
CisKICAgICBhdXRvIGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAg
ICBmb3IgKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEIDogdG9SZW1vdmUpIHsKLSAgICAgICAgYm9v
bCBzdWNjZXNzID0gbV9vd25pbmdNYW5hZ2VyLnJlbW92ZShub3RpZmljYXRpb25JRCk7Ci0gICAg
ICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7Ci0gICAgICAgIHJlbW92ZUdsb2Jh
bElERnJvbUlETWFwKG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLCBub3RpZmljYXRp
b25JRCk7Ci0gICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCBhZG9wdFdLKFdL
VUludDY0Q3JlYXRlKG5vdGlmaWNhdGlvbklEKSkuZ2V0KCkpOworICAgIGZvciAoYXV0byYgaWRl
bnRpZmllciA6IHRvUmVtb3ZlKSB7CisgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5Lmdl
dCgpLCB0b1dLKGlkZW50aWZpZXIpLmdldCgpKTsKKyAgICAgICAgbV9vd25pbmdNYW5hZ2VyLnJl
bW92ZShpZGVudGlmaWVyKTsKICAgICB9CisKICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhtYW5hZ2VyLCBhcnJheS5nZXQoKSk7CiB9CiAKQEAg
LTE2MCwyOCArMTQ4LDIzIEBAIFdLRGljdGlvbmFyeVJlZiBXZWJOb3RpZmljYXRpb25Qcm92aWRl
cjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogICAgIHJldHVybiBXS011dGFibGVEaWN0aW9u
YXJ5Q3JlYXRlKCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnNpbXVsYXRl
V2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmIHBhZ2UsIHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKQordm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGljayhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQogewotICAgIEFT
U0VSVChtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcC5jb250YWlucyhzdGQ6Om1ha2Vf
cGFpcihwYWdlLCBub3RpZmljYXRpb25JRCkpKTsKLSAgICBhdXRvIGdsb2JhbElEID0gbV9sb2Nh
bFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAuZ2V0KHN0ZDo6bWFrZV9wYWlyKHBhZ2UsIG5vdGlm
aWNhdGlvbklEKSk7Ci0gICAgQVNTRVJUKG1fb3duaW5nTWFuYWdlci5jb250YWlucyhnbG9iYWxJ
RCkpOwotICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRp
b24obV9vd25pbmdNYW5hZ2VyLmdldChnbG9iYWxJRCksIGdsb2JhbElEKTsKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSB0b1dURlN0cmluZyhub3RpZmljYXRpb25JRCk7CisgICAgQVNTRVJUKG1fb3du
aW5nTWFuYWdlci5jb250YWlucyhpZGVudGlmaWVyKSk7CisKKyAgICBXS05vdGlmaWNhdGlvbk1h
bmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IobV9vd25pbmdNYW5hZ2VyLmdldChp
ZGVudGlmaWVyKSwgbm90aWZpY2F0aW9uSUQpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpyZXNldCgpCiB7Ci0gICAgZm9yIChhdXRvJiBub3RpZmljYXRpb25QYWlyIDogbV9v
d25lZE5vdGlmaWNhdGlvbnMpIHsKLSAgICAgICAgaWYgKG5vdGlmaWNhdGlvblBhaXIudmFsdWUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgZm9yIChhdXRvIGl0ZXJhdG9y
IDogbV9vd25pbmdNYW5hZ2VyKSB7CiAgICAgICAgIGF1dG8gYXJyYXkgPSBhZG9wdFdLKFdLTXV0
YWJsZUFycmF5Q3JlYXRlKCkpOwotICAgICAgICBmb3IgKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
IDogbm90aWZpY2F0aW9uUGFpci52YWx1ZSkKLSAgICAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVt
KGFycmF5LmdldCgpLCBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKG5vdGlmaWNhdGlvbklEKSkuZ2V0
KCkpOwotCi0gICAgICAgIG5vdGlmaWNhdGlvblBhaXIudmFsdWUuY2xlYXIoKTsKLSAgICAgICAg
V0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMobm90aWZp
Y2F0aW9uUGFpci5rZXkuZ2V0KCksIGFycmF5LmdldCgpKTsKKyAgICAgICAgV0tBcnJheUFwcGVu
ZEl0ZW0oYXJyYXkuZ2V0KCksIHRvV0soaXRlcmF0b3Iua2V5KS5nZXQoKSk7CisgICAgICAgIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKGl0ZXJhdG9y
LnZhbHVlLCBhcnJheS5nZXQoKSk7CiAgICAgfQorCiAgICAgbV9vd25pbmdNYW5hZ2VyLmNsZWFy
KCk7Ci0gICAgbV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAuY2xlYXIoKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmgKaW5kZXggY2NmOGIxYmNlOTk2Li4zOTI2MWJkNDI2NWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNDYsMTUgKzQ3LDEy
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmKTsKICAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoKTsKIAotICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VS
ZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CiAgICAg
dm9pZCByZXNldCgpOwogCiBwcml2YXRlOgotICAgIC8vIEludmVyc2VzIG9mIGVhY2ggb3RoZXIu
Ci0gICAgSGFzaE1hcDxXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+LCBIYXNo
U2V0PHVpbnQ2NF90Pj4gbV9vd25lZE5vdGlmaWNhdGlvbnM7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01hbmFnZXI7Ci0KLSAgICBIYXNo
TWFwPHN0ZDo6cGFpcjxXS1BhZ2VSZWYsIHVpbnQ2NF90PiwgdWludDY0X3Q+IG1fbG9jYWxUb0ds
b2JhbE5vdGlmaWNhdGlvbklETWFwOworICAgIEhhc2hTZXQ8V0tSZXRhaW5QdHI8V0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmPj4gbV9rbm93bk1hbmFnZXJzOworICAgIEhhc2hNYXA8U3RyaW5nLCBX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fb3duaW5nTWFuYWdlcjsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447682</attachid>
            <date>2021-12-20 20:43:09 -0800</date>
            <delta_ts>2021-12-21 09:35:09 -0800</delta_ts>
            <desc>Does it build and test v3.1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>71665</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaCBiL1NvdXJjZS9XVEYvd3Rm
L0lkZW50aWZpZWQuaAppbmRleCA1NzI1NWNhYTcyZjcuLjU2ZTllMTdhNTU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lkZW50
aWZpZWQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC0xMDQsNyArMTA1LDI3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVudGlm
aWVkQmFzZTxTdHJpbmcsIFQ+IHsKK3Byb3RlY3RlZDoKKyAgICBVVUlESWRlbnRpZmllZCgpCisg
ICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkpCisgICAgeworICAgIH0KKworICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJZGVu
dGlmaWVkJiBvdGhlcikKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90aGVy
Lmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBVVUlESWRlbnRp
ZmllZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8
U3RyaW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpJZGVudGlmaWVkOwogdXNpbmcgV1RG
OjpUaHJlYWRTYWZlSWRlbnRpZmllZDsKK3VzaW5nIFdURjo6VVVJRElkZW50aWZpZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
Y3BwCmluZGV4IDI4MTdlMjFmMDZlNC4uZWM0YTY4ODU2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTAy
LDcgKzEwMiw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgZGlzcGF0Y2hF
cnJvckV2ZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGNsaWVudC5zaG93
KHRoaXMpKQorICAgIGlmIChjbGllbnQuc2hvdygqdGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBT
aG93aW5nOwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3Nl
KCkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaG93aW5nOiB7CiAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKHRoaXMpOworICAgICAgICAgICAg
Tm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKCp0aGlz
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2xvc2VkOgpAQCAtMTM2LDcgKzEz
Niw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpzdG9wKCkKICAgICBBY3RpdmVET01PYmplY3Q6OnN0
b3AoKTsKIAogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAg
ICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6
OmZyb20ocGFnZSktPmNsaWVudCgpLm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCkBA
IC0yMjUsNyArMjI1LDcgQEAgYm9vbCBOb3RpZmljYXRpb246OnZpcnR1YWxIYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdAogICAgIHJldHVybiBtX3N0YXRlID09IFNob3dpbmcgJiYgbV9oYXNSZWxl
dmFudEV2ZW50TGlzdGVuZXI7CiB9CiAKLU5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpk
YXRhV2l0aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKK05vdGlmaWNhdGlvbkRhdGEgTm90aWZp
Y2F0aW9uOjpkYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBtX3RpdGxlLApA
QCAtMjM1LDcgKzIzNSw3IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhV2l0
aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3QKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2Rp
cmVjdGlvbiwKICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLAotICAgICAgICAwCisgICAgICAgIGlkZW50aWZpZXIoKSwKICAgICB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKaW5kZXggZmUwY2Y0YzBiZDk5Li5hMDczNDEzZmFlOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvbkRpcmVjdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIK
KyNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNs
dWRlICJXcml0aW5nTW9kZS5oIgogCkBAIC00OCw3ICs0OSw3IEBAIGNsYXNzIE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjazsKIAogc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiAKLWNsYXNz
IE5vdGlmaWNhdGlvbiBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOb3RpZmlj
YXRpb24+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5s
aW5lRGF0YSB7CitjbGFzcyBOb3RpZmljYXRpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBVVUlESWRlbnRpZmllZDxOb3RpZmljYXRp
b24+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChOb3RpZmljYXRpb24sIFdF
QkNPUkVfRVhQT1JUKTsKIHB1YmxpYzoKICAgICB1c2luZyBQZXJtaXNzaW9uID0gTm90aWZpY2F0
aW9uUGVybWlzc2lvbjsKQEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb25EYXRhIGRhdGFXaXRob3V0Tm90aWZpY2F0aW9uSUQo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb25EYXRhIGRhdGEoKSBjb25z
dDsKIAogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IGI4MWRkNWI2
NWRlMy4uN2ExNzhkZmI4M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00NywxOSArNDcsMTUg
QEAgcHVibGljOgogICAgIHVzaW5nIFBlcm1pc3Npb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChQZXJtaXNzaW9uKT47CiAKICAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0
aW9uIGJlIHNob3duLgotICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24mKSA9IDA7CiAKICAgICAvLyBSZXF1
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBzaG93biBiZSBj
YW5jZWxlZC4KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiopID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiYpID0gMDsKIAotICAgIC8vIFdoZW4g
dGhlIHVzZXIgY2xvc2VzIGEgcGFnZSwgb3IgcXVpdHMgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiwg
YWxsIG9mIHRoZSBwYWdlJ3MKLSAgICAvLyBhc3NvY2lhdGVkIG5vdGlmaWNhdGlvbnMgYXJlIGNs
ZWFyZWQuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KikgeyB9Ci0gICAgCiAgICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRoYXQg
YSBOb3RpZmljYXRpb24gb2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZAogICAgIC8vIChzdWNoIGFz
IGJ5IGEgcGFnZSB0cmFuc2l0aW9uKS4gVGhlIHByZXNlbnRlciBtYXkgY29udGludWUgc2hvd2lu
ZwogICAgIC8vIHRoZSBub3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBhdHRlbXB0IHRvIGNhbGwg
dGhlIGV2ZW50IGhhbmRsZXJzLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3RE
ZXN0cm95ZWQoTm90aWZpY2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRp
b25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJikgPSAwOwogCiAgICAgLy8gSW5mb3JtcyB0
aGUgcHJlc2VudGVyIHRoZSBjb250cm9sbGVyIGF0dGFjaGVkIHRvIHRoZSBwYWdlIGhhcyBiZWVu
IGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ry
b3llZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCmluZGV4IDAwMDBmMmZlMGMyZC4uOGRmYmQ3NWFhNjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25EYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRh
dGEgewogICAgIFN0cmluZyBsYW5ndWFnZTsKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJl
Y3Rpb24gZGlyZWN0aW9uOwogICAgIFN0cmluZyBvcmlnaW5TdHJpbmc7Ci0gICAgdWludDY0X3Qg
bm90aWZpY2F0aW9uSUQ7CisgICAgU3RyaW5nIG5vdGlmaWNhdGlvbklEOwogfTsKIAogdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTkwLDcgKzkwLDcgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmlj
YXRpb25EYXRhPiBOb3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIW9yaWdpblN0cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEOworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBub3RpZmljYXRpb25JRDsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbklE
OwogICAgIGlmICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMv
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2
MjQ5MDBlZmQ0ZmQuLjNmNjc4YmUzYzMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xMTQsMTkgKzExNCwxOSBAQCB2b2lkIE5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdAogLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VU
eXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1F
OiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3QpCit2b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJikKIHsKICAgICBp
ZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiB9CiAKLXZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3QpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmgKaW5kZXggMDUzZjMwYTE1ZWFhLi4zNTRlNzQwOGJlMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02MCw5ICs2MCw5IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9u
KGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQg
ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7Cisg
ICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkg
ZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG5vdGlmaWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgdm9pZCBtYXliZVNl
bmRDb25uZWN0aW9uQ29uZmlndXJhdGlvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBlMjEyZWQxZmQ2MmMuLmI1ZTA3ZGVjYTIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC00MSw5ICs0
MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRp
b24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNh
dGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlm
aWNhdGlvbklEcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpID0gMDsKIAogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgppbmRleCBhYmNmOTc0NmIwNDkuLjFjOTU2ODkxNTIy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
bWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IE5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlciBOb3RSZWZDb3VudGVkIHsKICAgICBSZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikgLT4gKGJvb2wgYWxs
b3dlZCkgQXN5bmMKICAgICBTaG93Tm90aWZpY2F0aW9uKHN0cnVjdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhIG5vdGlmaWNhdGlvbkRhdGEpCi0gICAgQ2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQotICAgIENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8dWludDY0
X3Q+IG5vdGlmaWNhdGlvbklEcykKLSAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKQorICAgIENhbmNlbE5vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0
aW9uSUQpCisgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3RvcjxTdHJpbmc+IG5vdGlmaWNhdGlv
bklEcykKKyAgICBEaWREZXN0cm95Tm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNw
cAppbmRleCA4YjZjMDM0NDQwNmUuLmE3NDFmOGIxMDgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcApAQCAtODcsMyArODcsOCBAQCB1
aW50NjRfdCBXS05vdGlmaWNhdGlvbkdldElEKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlv
bikKIHsKICAgICByZXR1cm4gdG9JbXBsKG5vdGlmaWNhdGlvbiktPm5vdGlmaWNhdGlvbklEKCk7
CiB9CisKK1dLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tO
b3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0
b0ltcGwobm90aWZpY2F0aW9uKS0+Y29yZU5vdGlmaWNhdGlvbklEKCkpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmgKaW5kZXggZDNhZTk4YmY3
NGQyLi44ODQxNzRjZDQyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb24uaApAQCAtNDIsNiArNDIsNyBAQCBXS19FWFBPUlQgV0tTdHJpbmdSZWYg
V0tOb3RpZmljYXRpb25Db3B5TGFuZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOwog
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weURpcihXS05vdGlmaWNhdGlv
blJlZiBub3RpZmljYXRpb24pOwogV0tfRVhQT1JUIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tOb3Rp
ZmljYXRpb25HZXRTZWN1cml0eU9yaWdpbihXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24p
OwogV0tfRVhQT1JUIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3RpZmljYXRpb25S
ZWYgbm90aWZpY2F0aW9uKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNv
cHlDb3JlSURGb3JUZXN0aW5nKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNzY5MjM5OTBhYjViLi44ZjQ0
OTk4NDEyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtNTQsNiArNTQsMTEgQEAgdm9pZCBXS05vdGlm
aWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9u
TWFuYWdlclJlZgogICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05vdGlm
aWNhdGlvbihub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBt
YW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKK3sKKyAgICB0b0ltcGwobWFu
YWdlclJlZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odG9XVEZTdHJpbmcobm90aWZp
Y2F0aW9uSUQpKTsKK30KKwogdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENs
b3NlTm90aWZpY2F0aW9ucyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tB
cnJheVJlZiBub3RpZmljYXRpb25JRHMpCiB7CiAgICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92
aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyh0b0ltcGwobm90aWZpY2F0aW9uSURzKSk7CkBAIC02
OCw4ICs3MywzIEBAIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVO
b3RpZmljYXRpb25Qb2xpY2llcyhXS05vdGlmaWNhdGlvbk1hCiB7CiAgICAgdG9JbXBsKG1hbmFn
ZXJSZWYpLT5wcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKHRvSW1wbChvcmln
aW5zKSk7CiB9Ci0KLXVpbnQ2NF90IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldExvY2FsSURGb3JU
ZXN0aW5nKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyLCBXS05vdGlmaWNhdGlvblJl
ZiBub3RpZmljYXRpb24pCi17Ci0gICAgcmV0dXJuIHRvSW1wbChtYW5hZ2VyKS0+bm90aWZpY2F0
aW9uTG9jYWxJREZvclRlc3RpbmcodG9JbXBsKG5vdGlmaWNhdGlvbikpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaApp
bmRleCBiNzg5MDljNmNlNDIuLjBjZjIxNDUxNzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTM4LDEwICsz
OCwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlcgogCiBXS19FWFBPUlQgdm9pZCBXS05vdGlm
aWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKIFdLX0VYUE9S
VCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24o
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKTsKK1dLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb25fYihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tT
dHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpOwogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgbm90aWZpY2F0aW9uSURzKTsKIFdLX0VYUE9SVCB2
b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9s
aWN5KFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1NlY3VyaXR5T3JpZ2lu
UmVmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9u
TWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoV0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLQXJyYXlSZWYgb3JpZ2lucyk7Ci1XS19FWFBPUlQg
dWludDY0X3QgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0TG9jYWxJREZvclRlc3RpbmcoV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNh
dGlvbik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IDA4
YTZmNmUyZjRiZi4uYjhkYTcxYmIwZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJOb3RpZmljYXRpb246OldlYk5vdGlm
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQorV2ViTm90aWZp
Y2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYg
ZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKICAgICA6IG1fdGl0
bGUoZGF0YS50aXRsZSkKICAgICAsIG1fYm9keShkYXRhLmJvZHkpCiAgICAgLCBtX2ljb25VUkwo
ZGF0YS5pY29uVVJMKQpAQCAtMzgsNyArMzgsOCBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlm
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQogICAgICwgbV9s
YW5nKGRhdGEubGFuZ3VhZ2UpCiAgICAgLCBtX2RpcihkYXRhLmRpcmVjdGlvbikKICAgICAsIG1f
b3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoZGF0YS5vcmlnaW5T
dHJpbmcpKQotICAgICwgbV9ub3RpZmljYXRpb25JRChkYXRhLm5vdGlmaWNhdGlvbklEKQorICAg
ICwgbV9jb3JlTm90aWZpY2F0aW9uSUQoZGF0YS5ub3RpZmljYXRpb25JRCkKKyAgICAsIG1fcGFn
ZUlkZW50aWZpZXIocGFnZUlkZW50aWZpZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCmluZGV4IDBk
MjJkNDdlMjAxZi4uM2E4ZjExZDczMTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmgKQEAgLTI3LDYgKzI3LDgg
QEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkFQSVNlY3VyaXR5T3JpZ2lu
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgorI2luY2x1ZGUgPHd0Zi9J
ZGVudGlmaWVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC0zNywxMSArMzksMTEgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRh
dGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJOb3RpZmljYXRpb24gOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpOb3RpZmljYXRpb24+IHsKK2Ns
YXNzIFdlYk5vdGlmaWNhdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6
OlR5cGU6Ok5vdGlmaWNhdGlvbj4sIHB1YmxpYyBJZGVudGlmaWVkPFdlYk5vdGlmaWNhdGlvbj4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSkKKyAgICBzdGF0aWMgUmVmPFdlYk5vdGlm
aWNhdGlvbj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIGRhdGEsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSwgcGFnZUlkZW50aWZpZXIpKTsKICAg
ICB9CiAKICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsg
fQpAQCAtNTIsMTAgKzU0LDEzIEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25E
aXJlY3Rpb24gZGlyKCkgY29uc3QgeyByZXR1cm4gbV9kaXI7IH0KICAgICBBUEk6OlNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbi5nZXQoKTsgfQogICAgIAot
ICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9ub3RpZmljYXRp
b25JRDsgfQorICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKCkgY29uc3QgeyByZXR1cm4gaWRl
bnRpZmllcigpOyB9CisgICAgY29uc3QgU3RyaW5nJiBjb3JlTm90aWZpY2F0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX2NvcmVOb3RpZmljYXRpb25JRDsgfQorCisgICAgV2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7
IH0KIAogcHJpdmF0ZToKLSAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uRGF0YSYpOworICAgIFdlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EYXRhJiwgV2ViUGFnZVByb3h5SWRlbnRpZmllcik7CiAKICAgICBTdHJpbmcgbV90aXRs
ZTsKICAgICBTdHJpbmcgbV9ib2R5OwpAQCAtNjQsNyArNjksOSBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBtX2xhbmc7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIG1fZGlyOwog
ICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBtX29yaWdpbjsKLSAgICB1aW50NjRfdCBt
X25vdGlmaWNhdGlvbklEOworICAgIFN0cmluZyBtX2NvcmVOb3RpZmljYXRpb25JRDsKKworICAg
IFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKIH07CiAKIGlubGluZSBi
b29sIGlzTm90aWZpY2F0aW9uSURWYWxpZCh1aW50NjRfdCBpZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCBhMjlhZWQ1NTA3
ZWEuLjhhNWRiMTc2YmY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtNDUsMTcgKzQ1LDE3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6Ok5vdGlmCiAgICAgbV93ZWJQYWdlUHJveHkuc2hvd05vdGlmaWNhdGlvbihkYXRhKTsKIH0K
IAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25JRCkKIHsKICAgICBtX3dlYlBhZ2VQcm94eS5jYW5jZWxOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uSUQpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNh
dGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVh
ck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykKIHsK
ICAgICBtX3dlYlBhZ2VQcm94eS5jbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKTsK
IH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5LmRpZERlc3Ryb3lO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggNDI1MWY3MmZlYmUyLi5kOTRmYjdj
NDdiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaApAQCAtMzgsOSArMzgsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0U3lz
dGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3Qg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsTm90aWZp
Y2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKLSAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFs
OwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25J
RCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAg
V2ViUGFnZVByb3h5JiBtX3dlYlBhZ2VQcm94eTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5jcHAKaW5kZXggNTJhYTY1M2E1ZDVlLi44NmE4ZGRkNzY3ZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTM5LDEyICszOSw2IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMg
dWludDY0X3QgZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpCi17Ci0gICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZUdsb2JhbE5vdGlmaWNhdGlvbklEID0gMTsKLSAgICByZXR1cm4gdW5pcXVl
R2xvYmFsTm90aWZpY2F0aW9uSUQrKzsKLX0KLQogY29uc3QgY2hhciogV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkiOwpAQCAtOTYsNTEgKzkwLDQ3IEBAIEhhc2hNYXA8U3RyaW5nLCBi
b29sPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCkKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5
KiB3ZWJQYWdlLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmljYXRpb25E
YXRhKQogewotICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9i
YWxOb3RpZmljYXRpb25JRCgpOwotICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0
aW9uOjpjcmVhdGUobm90aWZpY2F0aW9uRGF0YSk7Ci0gICAgYXV0byBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVyKCksIG5vdGlmaWNhdGlvbkRh
dGEubm90aWZpY2F0aW9uSUQpOwotICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9i
YWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uSURQYWlyKTsKLSAgICBtX25vdGlmaWNhdGlv
bnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0
aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9
IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKG5vdGlmaWNhdGlvbkRhdGEsIHdlYlBhZ2UtPmlkZW50
aWZpZXIoKSk7CisgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbi0+
bm90aWZpY2F0aW9uSUQoKSwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7Cisg
ICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb24tPmNvcmVOb3RpZmljYXRpb25JRCgp
LCBub3RpZmljYXRpb24uY29weVJlZigpKTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdl
LCBub3RpZmljYXRpb24uZ2V0KCkpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKQogewotICAg
IGlmIChXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQo
c3RkOjptYWtlX3BhaXIod2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQp
KS5zZWNvbmQuZ2V0KCkpCi0gICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgqbm90aWZpY2F0aW9u
KTsKKyAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHBh
Z2VOb3RpZmljYXRpb25JRCkpCisgICAgICAgIG1fcHJvdmlkZXItPmNhbmNlbCgqd2ViTm90aWZp
Y2F0aW9uKTsKIH0KICAgICAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgdWludDY0X3QgcGFnZU5v
dGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VO
b3RpZmljYXRpb25JRCkKIHsKLSAgICBhdXRvIGdsb2JhbElETm90aWZpY2F0aW9uUGFpciA9IG1f
bm90aWZpY2F0aW9ucy50YWtlKHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPmlkZW50aWZpZXIoKSwg
cGFnZU5vdGlmaWNhdGlvbklEKSk7Ci0gICAgaWYgKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlv
bklEID0gZ2xvYmFsSUROb3RpZmljYXRpb25QYWlyLmZpcnN0KSB7Ci0gICAgICAgIFdlYk5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uID0gZ2xvYmFsSUROb3RpZmljYXRpb25QYWlyLnNlY29uZC5n
ZXQoKTsKLSAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKGdsb2JhbE5vdGlm
aWNhdGlvbklEKTsKLSAgICAgICAgbV9wcm92aWRlci0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbigq
bm90aWZpY2F0aW9uKTsKKyAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNh
dGlvbnMudGFrZShwYWdlTm90aWZpY2F0aW9uSUQpKSB7CisgICAgICAgIG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwLnJlbW92ZSh3ZWJOb3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOworICAg
ICAgICBtX3Byb3ZpZGVyLT5kaWREZXN0cm95Tm90aWZpY2F0aW9uKCp3ZWJOb3RpZmljYXRpb24p
OwogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFn
ZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAg
cmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEOwogfQogCi1zdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFn
ZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykK
K3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRlc2ly
ZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBh
Z2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0
aW9uSUQpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3Rp
ZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSkKIHsKLSAgICBjbGVhck5vdGlmaWNhdGlv
bnMod2ViUGFnZSwgVmVjdG9yPHVpbnQ2NF90PigpLCBwYWdlSURzTWF0Y2gpOworICAgIGNsZWFy
Tm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBWZWN0b3I8U3RyaW5nPigpLCBwYWdlSURzTWF0Y2gpOwog
fQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25z
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlm
aWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFn
ZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgcGFn
ZU5vdGlmaWNhdGlvbklEcywgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKTsKIH0KIAotdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25J
RHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQordm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkq
IHdlYlBhZ2UsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3Rp
ZmljYXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlvbikKIHsKICAgICBhdXRvIHRhcmdl
dFBhZ2VQcm94eUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigpOwogCkBAIC0xNDgsMTIgKzEzOCwx
MiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25z
KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29ucwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5y
ZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAgIGZv
ciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNhdGlv
bnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBhdXRvIHBhZ2VQcm94eUlEID0g
aXQtPmtleS5maXJzdDsKLSAgICAgICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0gaXQt
PmtleS5zZWNvbmQ7Ci0gICAgICAgIGlmICghZmlsdGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIHBh
Z2VOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMp
KQorICAgICAgICBhdXRvIHBhZ2VQcm94eUlEID0gaXQtPnZhbHVlLT5wYWdlSWRlbnRpZmllcigp
OworICAgICAgICBTdHJpbmcgY29yZU5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlLT5jb3JlTm90
aWZpY2F0aW9uSUQoKTsKKyAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbihwYWdlUHJveHlJRCwg
Y29yZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklE
cykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB1aW50NjRfdCBnbG9iYWxOb3Rp
ZmljYXRpb25JRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICAgICAgdWludDY0X3QgZ2xvYmFsTm90
aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUtPm5vdGlmaWNhdGlvbklEKCk7CiAgICAgICAgIGdsb2Jh
bE5vdGlmaWNhdGlvbklEcy5hcHBlbmQoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwogICAgIH0KIApA
QCAtMTcxLDEyICsxNjEsMTQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnBy
b3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBpZiAoaXQg
PT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVlLmZpcnN0
KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVl
KTsKKyAgICBBU1NFUlQobm90aWZpY2F0aW9uKTsKKworICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2Uobm90aWZpY2F0aW9uLT5wYWdlSWRlbnRpZmllcigpKTsKICAg
ICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVpbnQ2NF90IHBhZ2VOb3Rp
ZmljYXRpb25JRCA9IGl0LT52YWx1ZS5zZWNvbmQ7Ci0gICAgd2ViUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24o
cGFnZU5vdGlmaWNhdGlvbklEKSwgMCk7CisgICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFNob3dOb3RpZmljYXRpb24oaXQtPnZh
bHVlKSwgMCk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRl
ckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEKQpAQCAt
MTg0LDQwICsxNzYsNzMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3Zp
ZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm8KICAgICBhdXRvIGl0ID0g
bV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRCk7CiAgICAg
aWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoaXQtPnZhbHVl
KTsKKyAgICBBU1NFUlQobm90aWZpY2F0aW9uKTsKICAgICAKLSAgICBhdXRvKiB3ZWJQYWdlID0g
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCk7CisgICAgYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlm
aWVyKCkpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWludDY0
X3QgcGFnZU5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlLnNlY29uZDsKLSAgICB3ZWJQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tO
b3RpZmljYXRpb24ocGFnZU5vdGlmaWNhdGlvbklEKSwgMCk7CisgICAgd2ViUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZp
Y2F0aW9uKGl0LT52YWx1ZSksIDApOwogfQogCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIGNvcmVOb3Rp
ZmljYXRpb25JRCkKK3sKKyAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy5n
ZXQoY29yZU5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShu
b3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGNvcmVOb3RpZmljYXRpb25J
RCksIDApOworfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJE
aWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYmFsTm90aWZpY2F0aW9uSURzKQog
ewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVjdG9yPHVpbnQ2NF90Pj4gcGFnZU5vdGlm
aWNhdGlvbklEczsKLSAgICAKKyAgICBIYXNoTWFwPFdlYlBhZ2VQcm94eSosIFZlY3RvcjxTdHJp
bmc+PiBwYWdlTm90aWZpY2F0aW9uSURzOworCiAgICAgc2l6ZV90IHNpemUgPSBnbG9iYWxOb3Rp
ZmljYXRpb25JRHMtPnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChnbG9i
YWxOb3RpZmljYXRpb25JRHMtPmF0PEFQSTo6VUludDY0PihpKS0+dmFsdWUoKSk7Ci0gICAgICAg
IGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgLy8gVGhl
IHBhc3NlZCBhcnJheSBtaWdodCBoYXZlIHVpbnQ2NF90IGlkZW50aWZpZXJzIG9yIFN0cmluZyBp
ZGVudGlmaWVycy4KKyAgICAgICAgLy8gSGFuZGxlIGJvdGguCisKKyAgICAgICAgU3RyaW5nIGNv
cmVOb3RpZmljYXRpb25JRDsKKyAgICAgICAgYXV0byogaW50VmFsdWUgPSBnbG9iYWxOb3RpZmlj
YXRpb25JRHMtPmF0PEFQSTo6VUludDY0PihpKTsKKyAgICAgICAgaWYgKGludFZhbHVlKSB7Cisg
ICAgICAgICAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZmluZChpbnRWYWx1
ZS0+dmFsdWUoKSk7CisgICAgICAgICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuZW5kKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvcmVO
b3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURzLT5hdDxBUEk6OlN0cmlu
Zz4oaSk7CisgICAgICAgICAgICBpZiAoIXN0cmluZ1ZhbHVlKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBjb3JlTm90aWZpY2F0aW9uSUQgPSBzdHJpbmdWYWx1ZS0+
c3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoIWNvcmVOb3RpZmljYXRpb25J
RC5pc0VtcHR5KCkpOworCisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRp
b25zLnRha2UoY29yZU5vdGlmaWNhdGlvbklEKTsKKyAgICAgICAgaWYgKCFub3RpZmljYXRpb24p
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCkpIHsKKyAgICAg
ICAgaWYgKFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShu
b3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpKSB7CiAgICAgICAgICAgICBhdXRvIHBhZ2VJ
dCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuZmluZCh3ZWJQYWdlKTsKICAgICAgICAgICAgIGlmIChw
YWdlSXQgPT0gcGFnZU5vdGlmaWNhdGlvbklEcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIFZl
Y3Rvcjx1aW50NjRfdD4gbmV3VmVjdG9yOworICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IG5ld1ZlY3RvcjsKICAgICAgICAgICAgICAgICBuZXdWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShzaXplKTsKICAgICAgICAgICAgICAgICBwYWdlSXQgPSBwYWdlTm90aWZpY2F0aW9uSURz
LmFkZCh3ZWJQYWdlLCBXVEZNb3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUu
c2Vjb25kOwotICAgICAgICAgICAgcGFnZUl0LT52YWx1ZS5hcHBlbmQocGFnZU5vdGlmaWNhdGlv
bklEKTsKKyAgICAgICAgICAgIHBhZ2VJdC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29y
ZU5vdGlmaWNhdGlvbklEKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9ub3RpZmljYXRpb25z
LnJlbW92ZShpdC0+dmFsdWUpOwotICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1v
dmUoaXQpOworICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUobm90aWZpY2F0
aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8gaXQgPSBwYWdl
Tm90aWZpY2F0aW9uSURzLmJlZ2luKCksIGVuZCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkKQEAgLTI1MCwxNiArMjc1LDQgQEAgdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJ
OjpBcnIKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhvcmln
aW5TdHJpbmdzKSk7CiB9CiAKLXVpbnQ2NF90IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
bm90aWZpY2F0aW9uTG9jYWxJREZvclRlc3RpbmcoV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCi17Ci0gICAgaWYgKCFub3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
YXV0byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQobm90aWZpY2F0aW9uLT5ub3Rp
ZmljYXRpb25JRCgpKTsKLSAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5k
KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIGl0LT52YWx1ZS5zZWNvbmQ7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgKaW5kZXggZGFmMzM5N2YzOGQ1Li5iMTk1NGE4Y2ZiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNjAsMjcgKzYwLDI2IEBAIHB1YmxpYzoKICAgICBI
YXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKIAogICAgIHZv
aWQgc2hvdyhXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7
Ci0gICAgdm9pZCBjYW5jZWwoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHBhZ2VO
b3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5
Kik7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7Ci0gICAgdm9pZCBkaWREZXN0cm95
Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCk7
CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHBhZ2VOb3RpZmljYXRpb25JRCk7
CiAKICAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmlj
YXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24o
Y29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgcHJv
dmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koY29uc3QgQVBJOjpTZWN1cml0eU9yaWdp
biosIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9pZCBwcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlv
blBvbGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpOwogCi0gICAgdWludDY0X3Qgbm90aWZpY2F0
aW9uTG9jYWxJREZvclRlc3RpbmcoV2ViTm90aWZpY2F0aW9uKik7Ci0KICAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wq
KTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0
aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0
aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CisgICAgdHlwZWRlZiBib29sICgq
Tm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGVzaXJlZFBhZ2VOb3RpZmlj
YXRpb25JRHMpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0
ZXJGdW5jdGlvbik7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogICAgIHZvaWQgcHJv
Y2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAgLTg4LDEwICs4Nyw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKLSAg
ICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mg
bm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7Ci0gICAg
Ly8gS2V5IHBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3Mn
cyBub3RpZmljYXRpb24gSUQ7IHZhbHVlIHBhaXIgY29tcHJpc2VkIG9mIGdsb2JhbCBub3RpZmlj
YXRpb24gSUQsIGFuZCBub3RpZmljYXRpb24gb2JqZWN0Ci0gICAgSGFzaE1hcDxzdGQ6OnBhaXI8
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJl
ZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOworCisgICAgSGFzaE1hcDx1
aW50NjRfdCwgU3RyaW5nPiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBIYXNoTWFwPFN0
cmluZywgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNWZmNjBlN2E0Yjc5Li42ZjQ3OWJhNTkyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODc0MiwxNyArODc0MiwxNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
JiBub3RpZmljYXRpbwogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCBub3RpZmljYXRpb25EYXRh
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBu
b3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0aGlz
LCBub3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlmaWNh
dGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJQ
YWdlUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZp
Y2F0aW9uSURzKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+Y2xlYXJOb3RpZmljYXRpb25zKHRoaXMsIG5v
dGlmaWNhdGlvbklEcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZERl
c3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBt
X3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24odGhpcywgbm90aWZpY2F0aW9uSUQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3OTk5NzBkZWQ2YTQu
LmU5YjBhMTMwMjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTIwMzIsOSArMjAzMiw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzaG93Tm90aWZp
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKLSAgICB2b2lkIGNhbmNl
bE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Ci0gICAgdm9pZCBjbGVhck5v
dGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKTsKLSAg
ICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwor
ICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQp
OworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3Rp
ZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIG5vdGlmaWNhdGlvbklEKTsKIAogICAgIHZvaWQgcmVxdWVzdENvb2tpZUNvbnNlbnQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb29raWVDb25zZW50RGVjaXNpb25SZXN1bHQp
PiYmKTsKICAgICB2b2lkIGNsYXNzaWZ5TW9kYWxDb250YWluZXJDb250cm9scyhWZWN0b3I8U3Ry
aW5nPiYmIHRleHRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNb2Rh
bENvbnRhaW5lckNvbnRyb2xUeXBlPiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAppbmRleCBi
NDM1NmE0MmNkMmIuLjgwYWQzNmUxODdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuY3BwCkBAIC0yMDYs
OSArMjA2LDEzIEBAIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNz
aW9ucyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxlCiAgICAgV2ViS2l0Ojp0b0ltcGwo
YnVuZGxlUmVmKS0+cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViS2l0Ojp0
b0ltcGwocGFnZVJlZikpOwogfQogCi11aW50NjRfdCBXS0J1bmRsZUdldFdlYk5vdGlmaWNhdGlv
bklEKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgbm90aWZpY2F0aW9uKQorV0tTdHJpbmdSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9u
SUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGJ1bmRsZVJlZikt
PndlYk5vdGlmaWNhdGlvbklEKGNvbnRleHQsIG5vdGlmaWNhdGlvbik7CisgICAgYXV0byBpZGVu
dGlmaWVyID0gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQoY29u
dGV4dCwgbm90aWZpY2F0aW9uKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoKmlkZW50aWZpZXIp
OwogfQogCiB2b2lkIFdLQnVuZGxlU2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKFdLQnVu
ZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgZW5hYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCBhNGQyM2Y1MzdlMzUuLmRjNGQxMzdi
ZWE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaApAQCAtNTIsNyArNTIsNyBAQCBX
S19FWFBPUlQgYm9vbCBXS0J1bmRsZUlzUGFnZUJveFZpc2libGUoV0tCdW5kbGVSZWYgYnVuZGxl
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYQogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVm
IGxvY2F0aW9uKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlU2V0V2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBvcmlnaW5TdHJpbmdSZWYsIGJvb2wgYWxsb3dlZCk7CiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwotV0tfRVhQT1JUIHVpbnQ2NF90IFdLQnVuZGxlR2V0
V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVu
ZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uKTsKIFdLX0VYUE9SVCBXS0RhdGFSZWYg
V0tCdW5kbGVDcmVhdGVXS0RhdGFGcm9tVUludDhBcnJheShXS0J1bmRsZVJlZiBidW5kbGUsIEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEpOwogV0tfRVhQT1JUIHZvaWQgV0tC
dW5kbGVTZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZEZvclRlc3RpbmcoV0tCdW5k
bGVSZWYgYnVuZGxlUmVmLCBib29sIGVuYWJsZWQpOwogLy8gUmV0dXJucyBhcnJheSBvZiBkaWN0
aW9uYXJpZXMuIERpY3Rpb25hcnkga2V5cyBhcmUgZG9jdW1lbnQgaWRlbnRpZmllcnMsIHZhbHVl
cyBhcmUgZG9jdW1lbnQgVVJMcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGYwNWM0ZWI2ZmM0
Yi4uMzg5NWJjMmIxMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMxMCwxNyArMzEwLDE3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKFdlYlBhZ2UqIHBhZ2UpCiAjZW5kaWYKIH0KIAotdWludDY0X3QgSW5qZWN0ZWRCdW5kbGU6
OndlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganNO
b3RpZmljYXRpb24pCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gSW5qZWN0ZWRCdW5kbGU6OndlYk5v
dGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiBqc0NvbnRleHQsIEpTVmFsdWVSZWYganNOb3RpZmlj
YXRpb24pCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24gPSBKU05vdGlmaWNhdGlvbjo6dG9XcmFwcGVkKHRvSlMoanND
b250ZXh0KS0+dm0oKSwgdG9KUyh0b0pTKGpzQ29udGV4dCksIGpzTm90aWZpY2F0aW9uKSk7CiAg
ICAgaWYgKCFub3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCkt
Pm5vdGlmaWNhdGlvbklERm9yVGVzdGluZyhub3RpZmljYXRpb24pOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHJldHVybiBub3RpZmljYXRpb24tPmlkZW50aWZpZXIoKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGpzQ29udGV4dCk7CiAgICAgVU5VU0VEX1BBUkFNKGpzTm90
aWZpY2F0aW9uKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggNWE0ZjZhODc5YjEzLi43NWQ5ZTU5Mzk5Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV2ViUGFnZSosIGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nLCBib29sIGFsbG93ZWQpOwogICAgIHZvaWQgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoV2ViUGFnZSopOwotICAgIHVpbnQ2NF90IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZik7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHdlYk5vdGlm
aWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgUmVmPEFQSTo6RGF0YT4g
Y3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAg
ICAgCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IERvY3VtZW50SURUb1VS
TE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggOWEyMDE4OTJiMWMx
Li40NjZlMDZiOWM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC01
MSwxNCArNTEsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRl
Tm90aWZpY2F0aW9uSUQoKQotewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVOb3RpZmljYXRp
b25JRCA9IDE7Ci0gICAgcmV0dXJuIHVuaXF1ZU5vdGlmaWNhdGlvbklEKys7Ci19Ci0jZW5kaWYK
LQogY29uc3QgY2hhciogV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c3VwcGxlbWVudE5hbWUoKQog
ewogICAgIHJldHVybiAiV2ViTm90aWZpY2F0aW9uTWFuYWdlciI7CkBAIC0xMjgsMTggKzEyMCw2
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVtb3ZlQWxsUGVybWlzc2lvbnNGb3JU
ZXN0aW5nKCkKICNlbmRpZgogfQogCi11aW50NjRfdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpu
b3RpZmljYXRpb25JREZvclRlc3RpbmcoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0j
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFub3RpZmljYXRpb24pCi0gICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBtX25vdGlmaWNhdGlvbk1hcC5nZXQobm90aWZpY2F0aW9u
KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7Ci0gICAgcmV0dXJuIDA7
Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogdGVtcGxhdGU8dHlwZW5h
bWUgVT4gYm9vbCBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShXZWJQcm9jZXNzJiBwcm9jZXNzLCBV
JiYgbWVzc2FnZSwgV2ViUGFnZSYgcGFnZSkKIHsKQEAgLTE1MSwyMiArMTMxLDE1IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoV2ViUHJvY2VzcyYg
cHJvY2VzcywgVSYmIG1lc3NhCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCiAK
LWJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNh
dGlvbiwgV2ViUGFnZSogcGFnZSkKK2Jvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhO
b3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIW5vdGlmaWNhdGlvbiB8fCAhcGFnZS0+Y29yZVBhZ2Uo
KS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlmICghcGFnZS0+Y29y
ZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgCi0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZU5v
dGlmaWNhdGlvbklEKCk7Ci0gICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwg
bm90aWZpY2F0aW9uSUQpOwotICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlv
bklELCBub3RpZmljYXRpb24pOwotICAgIAotICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNv
bnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0
b3I8dWludDY0X3Q+KCkpLml0ZXJhdG9yOwotICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0
aW9uSUQpOwogCi0gICAgYXV0byBub3RpZmljYXRpb25EYXRhID0gbm90aWZpY2F0aW9uLT5kYXRh
V2l0aG91dE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgbm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRp
b25JRCA9IG5vdGlmaWNhdGlvbklEOwotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJv
Y2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6U2hvd05v
dGlmaWNhdGlvbihXVEZNb3ZlKG5vdGlmaWNhdGlvbkRhdGEpKSwgKnBhZ2UpOworICAgIG1fbm90
aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCksICZub3RpZmljYXRp
b24pOworCisgICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvbi5kYXRhKCkpLCAqcGFnZSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAtMTc1LDcyICsxNDgsNDQgQEAgYm9vbCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQ
YWdlKiBwYWdlKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2Fu
Y2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQordm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdl
YlBhZ2UqIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFub3Rp
ZmljYXRpb24gfHwgIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0Vu
YWJsZWQoKSkKKyAgICBpZiAoIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0
aW9uc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHVpbnQ2NF90IG5vdGlm
aWNhdGlvbklEID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbik7Ci0gICAgaWYg
KCFub3RpZmljYXRpb25JRCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNlbmROb3RpZmlj
YXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgKnBhZ2UpOwot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
cGFnZSk7Ci0jZW5kaWYKLX0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5v
dGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2Vi
UGFnZSogcGFnZSkKLXsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBOb3RpZmljYXRp
b25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5maW5k
KGNvbnRleHQpOwotICAgIGlmIChpdCA9PSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkp
CisgICAgYXV0byBtYXBwZWROb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChu
b3RpZmljYXRpb24uaWRlbnRpZmllcigpKTsKKyAgICBpZiAoIW1hcHBlZE5vdGlmaWNhdGlvbikK
ICAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtYXBwZWROb3RpZmljYXRpb24gPT0gJm5vdGlm
aWNhdGlvbik7CiAKLSAgICBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMgPSBpdC0+
dmFsdWU7Ci0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpDbGVhck5vdGlmaWNhdGlvbnMobm90
aWZpY2F0aW9uSURzKSwgKnBhZ2UpOwotICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklE
cy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAg
ICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURN
YXAudGFrZShub3RpZmljYXRpb25JRHNbaV0pOwotICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBub3RpZmljYXRpb24tPmZpbmFsaXplKCk7
Ci0gICAgICAgIG1fbm90aWZpY2F0aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24pOwotICAgIH0K
LSAgICAKLSAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKKyAgICBzZW5k
Tm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXI6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRp
ZmllcigpKSwgKnBhZ2UpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwogI2Vu
ZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNh
dGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24m
IG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLSAgICBSZWZQdHIgcHJvdGVjdGVkTm90aWZpY2F0aW9uIHsgbm90aWZpY2F0aW9uIH07Cisg
ICAgUmVmIHByb3RlY3RlZE5vdGlmaWNhdGlvbiB7IG5vdGlmaWNhdGlvbiB9OwogCi0gICAgdWlu
dDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBtX25vdGlmaWNhdGlvbk1hcC50YWtlKG5vdGlmaWNhdGlv
bik7Ci0gICAgaWYgKCFub3RpZmljYXRpb25JRCkKKyAgICBhdXRvIHRha2VuTm90aWZpY2F0aW9u
ID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpOwor
ICAgIGlmICghdGFrZW5Ob3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQo
dGFrZW5Ob3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7CiAKLSAgICBtX25vdGlmaWNhdGlv
bklETWFwLnJlbW92ZShub3RpZmljYXRpb25JRCk7Ci0gICAgcmVtb3ZlTm90aWZpY2F0aW9uRnJv
bUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0gICAgc2VuZE5vdGlm
aWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgKnBh
Z2UpOworICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCi0gICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9u
SUQpKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAg
IGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yNTEsMTIgKzE5Niw5IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRf
dCBub3RpZmljYXRpb25JRCkKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbklEKQogewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICgh
aXNOb3RpZmljYXRpb25JRFZhbGlkKG5vdGlmaWNhdGlvbklEKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25J
RE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAg
ICByZXR1cm47CkBAIC0yNjksMjIgKzIxMSwxNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogI2VuZGlm
CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25z
KGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBub3RpZmljYXRpb25JRHMpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgc2l6
ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBu
b3RpZmljYXRpb25JRHNbaV07Ci0gICAgICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5v
dGlmaWNhdGlvbklEKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIG5vdGlm
aWNhdGlvbklEID0gbm90aWZpY2F0aW9uSURzW2ldOwogCiAgICAgICAgIFJlZlB0cjxOb3RpZmlj
YXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRp
b25JRCk7CiAgICAgICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgbV9ub3RpZmljYXRpb25NYXAucmVtb3ZlKG5vdGlmaWNhdGlvbik7Ci0gICAg
ICAgIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKG5vdGlmaWNhdGlvbklELCBub3Rp
ZmljYXRpb24uZ2V0KCkpOwotCiAgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbG9zZUV2
ZW50KCk7CiAgICAgfQogI2Vsc2UKQEAgLTI5MiwxOCArMjI5LDQgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgbm90aWYKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi12b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKHVp
bnQ2NF90IG5vdGlmaWNhdGlvbklELCBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAg
ICAvLyBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBtYW5hZ2luZyB0aGUgaGFzaCBtYXBz
LgotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRp
b25Db250ZXh0TWFwLmZpbmQobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwotICAgIEFTU0VSVChpdCAhPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpOwotICAg
IHNpemVfdCBpbmRleCA9IGl0LT52YWx1ZS5maW5kKG5vdGlmaWNhdGlvbklEKTsKLSAgICBBU1NF
UlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGl0LT52YWx1ZS5yZW1vdmUoaW5kZXgpOwotICAg
IGlmIChpdC0+dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRN
YXAucmVtb3ZlKGl0KTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA2ZWU5NGY1NmIwM2EuLjJiODBiZWY0ZGNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGllbnQuaD4KKyNpbmNsdWRlIDxvcHRp
b25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUzLDExICs1NCwxMSBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKICAgICAKLSAgICBi
b29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwgV2ViUGFnZSopOwotICAgIHZvaWQgY2Fu
Y2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiosIFdlYlBhZ2UqKTsKLSAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViUGFnZSopOwor
ICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24mLCBXZWJQYWdlKik7CisgICAgdm9p
ZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJiwgV2ViUGFnZSopOworCiAgICAgLy8gVGhp
cyBjYWxsYmFjayBjb21lcyBmcm9tIFdlYkNvcmUsIG5vdCBtZXNzYWdlZCBmcm9tIHRoZSBVSSBw
cm9jZXNzLgotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJDb3JlOjpOb3RpZmlj
YXRpb24qLCBXZWJQYWdlKik7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbiYsIFdlYlBhZ2UqKTsKIAogICAgIHZvaWQgZGlkVXBkYXRlTm90aWZp
Y2F0aW9uRGVjaXNpb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7
CiAKQEAgLTY1LDcgKzY2LDYgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNs
aWVudDo6UGVybWlzc2lvbiBwb2xpY3lGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJp
bmcpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKTsK
LSAgICB1aW50NjRfdCBub3RpZmljYXRpb25JREZvclRlc3RpbmcoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uKik7CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKQEAgLTc1LDI3
ICs3NSwxNyBAQCBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAg
Ci0gICAgdm9pZCBkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsK
LSAgICB2b2lkIGRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsK
LSAgICB2b2lkIGRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0
IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgZGlkUmVt
b3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcmlnaW5TdHJp
bmdzKTsKLSAgICAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2b2lkIHJlbW92ZU5v
dGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBXZWJDb3Jl
OjpOb3RpZmljYXRpb24qKTsKLSNlbmRpZgogCiAgICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwog
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxX
ZWJDb3JlOjpOb3RpZmljYXRpb24+LCB1aW50NjRfdD4gTm90aWZpY2F0aW9uTWFwOwotICAgIE5v
dGlmaWNhdGlvbk1hcCBtX25vdGlmaWNhdGlvbk1hcDsKLSAgICAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25J
RE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZp
Y2F0aW9uPj4gTm90aWZpY2F0aW9uSURNYXA7CiAgICAgTm90aWZpY2F0aW9uSURNYXAgbV9ub3Rp
ZmljYXRpb25JRE1hcDsKICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+LCBWZWN0b3I8dWludDY0X3Q+PiBOb3RpZmljYXRpb25D
b250ZXh0TWFwOwotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXAgbV9ub3RpZmljYXRpb25Db250
ZXh0TWFwOwotICAgIAogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBtX3Blcm1pc3Npb25zTWFw
OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggZTNiMzE4NzA5ZDVkLi4yMTY4OGU5MmY0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjEsOSArMjEsOSBAQAogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIE5vdFJlZkNv
dW50ZWQgewotICAgIERpZFNob3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQp
OwotICAgIERpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAg
ICBEaWRDbG9zZU5vdGlmaWNhdGlvbnMoVmVjdG9yPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRHMp
OworICAgIERpZFNob3dOb3RpZmljYXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklEKTsKKyAgICBE
aWRDbGlja05vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0aW9uSUQpOworICAgIERpZENsb3Nl
Tm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBub3RpZmljYXRpb25JRHMpOwogICAgIERpZFVw
ZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKFN0cmluZyBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dl
ZCk7CiAgICAgRGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKFZlY3RvcjxTdHJpbmc+IG9y
aWdpblN0cmluZ3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcAppbmRleCBj
YWU1MDk1ZDM5NmUuLmMyNGVkMzdkNzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVu
dC5jcHAKQEAgLTQ2LDIyICs0NiwxNyBAQCBXZWJOb3RpZmljYXRpb25DbGllbnQ6On5XZWJOb3Rp
ZmljYXRpb25DbGllbnQoKQogewogfQogCi1ib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hv
dyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK2Jvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50
OjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewogICAgIHJldHVybiBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPnNo
b3cobm90aWZpY2F0aW9uLCBtX3BhZ2UpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQordm9pZCBXZWJOb3RpZmljYXRp
b25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCkt
PmNhbmNlbChub3RpZmljYXRpb24sIG1fcGFnZSk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXI+KCktPmNsZWFyTm90aWZpY2F0aW9ucyhjb250ZXh0LCBtX3BhZ2UpOwotfQot
Ci12b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVk
KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6
Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikK
IHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBtX3BhZ2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IGEzMTQwOTA5MGQ2NC4uZGNk
MjA4OTQ2MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00NSwxMCArNDUs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uQ2xpZW50KCk7CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBv
dmVycmlkZTsKLSAgICB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpO
b3RpZmljYXRpb24qKSBvdmVycmlkZTsKKyAgICBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0
aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVy
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGVybWlzc2lvbkhhbmRsZXImJikgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlz
c2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDAyZjFkYjA0M2Q4OC4uZTU3MTUzZjVmYWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtNDUsMTAgKzQ1LDkgQEAgcHVibGljOgogICAg
IHVpbnQ2NF90IG5vdGlmaWNhdGlvbklERm9yVGVzdGluZyhXZWJDb3JlOjpOb3RpZmljYXRpb24q
KTsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpO
b3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmlj
YXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChX
ZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmaWNhdGlvbkNv
bnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9u
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQZXJtaXNzaW9uSGFuZGxlciYmKSBv
dmVycmlkZTsKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hl
Y2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsK
QEAgLTU3LDkgKzU2LDYgQEAgcHJpdmF0ZToKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAg
ICBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+LCBSZXRhaW5QdHI8V2ViTm90
aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25NYXA7Ci0gICAgCi0gICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0PiwgVmVjdG9yPFJldGFpblB0
cjxXZWJOb3RpZmljYXRpb24+Pj4gTm90aWZpY2F0aW9uQ29udGV4dE1hcDsKLSAgICBOb3RpZmlj
YXRpb25Db250ZXh0TWFwIG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcDsKIAogICAgIGJvb2wgbV9l
dmVyUmVxdWVzdGVkUGVybWlzc2lvbiB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50Lm1tCmluZGV4IDM5ZWRjNzI3ZGQ1YS4uYzBhYWQwOTkzYzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90
aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC01OCw2MiArNTgsMzQgQEAgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OjpXZWJOb3RpZmljYXRpb25DbGllbnQoV2ViVmlldyAqd2ViVmlldykKIHsKIH0KIAotYm9v
bCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24p
Citib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNh
dGlvbikKIHsKICAgICBpZiAoIVttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBnZW5l
cmF0ZU5vdGlmaWNhdGlvbklEKCk7Ci0gICAgUmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2Vi
Tm90aWZpY2F0aW9uID0gYWRvcHROUyhbW1dlYk5vdGlmaWNhdGlvbiBhbGxvY10gaW5pdFdpdGhD
b3JlTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRDpub3RpZmljYXRpb25J
RF0pOwotICAgIG1fbm90aWZpY2F0aW9uTWFwLnNldChub3RpZmljYXRpb24sIHdlYk5vdGlmaWNh
dGlvbik7Ci0KLSAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3Rp
ZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPFJldGFpblB0cjxXZWJO
b3RpZmljYXRpb24+PigpKS5pdGVyYXRvcjsKLSAgICBpdC0+dmFsdWUuYXBwZW5kKHdlYk5vdGlm
aWNhdGlvbik7CisgICAgUmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9u
ID0gYWRvcHROUyhbW1dlYk5vdGlmaWNhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlTm90aWZpY2F0
aW9uOiZub3RpZmljYXRpb24gbm90aWZpY2F0aW9uSUQ6bm90aWZpY2F0aW9uSURdKTsKKyAgICBt
X25vdGlmaWNhdGlvbk1hcC5zZXQoJm5vdGlmaWNhdGlvbiwgd2ViTm90aWZpY2F0aW9uKTsKIAog
ICAgIFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gc2hvd05vdGlmaWNhdGlvbjp3
ZWJOb3RpZmljYXRpb24uZ2V0KCkgZnJvbVdlYlZpZXc6bV93ZWJWaWV3XTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90
aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCiB7Ci0gICAgV2ViTm90aWZpY2F0aW9uICp3ZWJOb3Rp
ZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbk1hcC5nZXQobm90aWZpY2F0aW9uKS5nZXQoKTsKKyAg
ICBXZWJOb3RpZmljYXRpb24gKndlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uTWFwLmdl
dCgmbm90aWZpY2F0aW9uKS5nZXQoKTsKICAgICBpZiAoIXdlYk5vdGlmaWNhdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBjYW5j
ZWxOb3RpZmljYXRpb246d2ViTm90aWZpY2F0aW9uXTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRp
b25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQotewotICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChjb250
ZXh0KTsKLSAgICBpZiAoaXQgPT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmVuZCgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBmaW5hbGl6ZWROb3RpZmljYXRpb25JRHMgPSBj
cmVhdGVOU0FycmF5KGl0LT52YWx1ZSwgWyZdIChhdXRvJiBub3RpZmljYXRpb24pIHsKLSAgICAg
ICAgYXV0byYgY29yZU5vdGlmaWNhdGlvbiA9ICpjb3JlKG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0g
ICAgICAgIGNvcmVOb3RpZmljYXRpb24uZmluYWxpemUoKTsKLSAgICAgICAgbV9ub3RpZmljYXRp
b25NYXAucmVtb3ZlKCZjb3JlTm90aWZpY2F0aW9uKTsKLSAgICAgICAgcmV0dXJuIEAoW25vdGlm
aWNhdGlvbiBub3RpZmljYXRpb25JRF0pOwotICAgIH0pOwotCi0gICAgW1ttX3dlYlZpZXcgX25v
dGlmaWNhdGlvblByb3ZpZGVyXSBjbGVhck5vdGlmaWNhdGlvbnM6ZmluYWxpemVkTm90aWZpY2F0
aW9uSURzLmdldCgpXTsKLSAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsK
LX0KLQotdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ry
b3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24pCiB7Ci0gICAgUmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0g
bV9ub3RpZmljYXRpb25NYXAudGFrZShub3RpZmljYXRpb24pOworICAgIFJldGFpblB0cjxXZWJO
b3RpZmljYXRpb24+IHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uTWFwLnRha2UoJm5v
dGlmaWNhdGlvbik7CiAgICAgaWYgKCF3ZWJOb3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChub3RpZmljYXRp
b24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fbm90aWZp
Y2F0aW9uQ29udGV4dE1hcC5lbmQoKSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQtPnZhbHVlLmZp
bmQod2ViTm90aWZpY2F0aW9uKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAg
IGl0LT52YWx1ZS5yZW1vdmUoaW5kZXgpOwotICAgIGlmIChpdC0+dmFsdWUuaXNFbXB0eSgpKQot
ICAgICAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKLQogICAgIFtbbV93
ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gbm90aWZpY2F0aW9uRGVzdHJveWVkOndlYk5v
dGlmaWNhdGlvbi5nZXQoKV07CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjdhN2QxMDBhYjk3
Li43ZThlZDQyMGJiN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC02NjMsOSArNjYzLDkgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhl
aWdodCkKICAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhw
YWdlKCktPnBhZ2UoKSwgdG9XSygiU2V0Vmlld1NpemUiKS5nZXQoKSwgYm9keS5nZXQoKSwgMCk7
CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQpCiB7
Ci0gICAgcG9zdFBhZ2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgYWRv
cHRXSyhXS1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25JRCkpKTsKKyAgICBwb3N0UGFnZU1lc3Nh
Z2UoIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wgYWRkc1Zp
c2l0ZWRMaW5rcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCA2ODNmZDg1NDc1N2EuLjYyNDc1Njg5ODNiYyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0U2V0
QmFja2luZ1NjYWxlRmFjdG9yKGRvdWJsZSk7CiAgICAgdm9pZCBwb3N0U2V0V2luZG93SXNLZXko
Ym9vbCk7CiAgICAgdm9pZCBwb3N0U2V0Vmlld1NpemUoZG91YmxlIHdpZHRoLCBkb3VibGUgaGVp
Z2h0KTsKLSAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHBvc3RTZXRBZGRzVmlz
aXRlZExpbmtzKGJvb2wpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBhMzI4
MGRmMTZjZDQuLmMzM2E4ZTUwZDQyYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC04ODEsNyArODgxLDkgQEAgdm9p
ZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB2b2lk
IFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3Rp
ZmljYXRpb24pCiB7CiAgICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2soV0tCdW5kbGVHZXRXZWJOb3RpZmljYXRpb25JRChpbmplY3RlZEJ1bmRsZS5idW5k
bGUoKSwgbWFpbkZyYW1lSlNDb250ZXh0KCksIG5vdGlmaWNhdGlvbikpOworCisgICAgYXV0byBu
b3RpZmljYXRpb25JRCA9IGFkb3B0V0soV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoaW5q
ZWN0ZWRCdW5kbGUuYnVuZGxlKCksIG1haW5GcmFtZUpTQ29udGV4dCgpLCBub3RpZmljYXRpb24p
KTsKKyAgICBpbmplY3RlZEJ1bmRsZS5wb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhu
b3RpZmljYXRpb25JRC5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRp
b25QZXJtaXNzaW9uKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggNTY5Yjk4YTUyMzk0Li42MTlkNjZlMmRiODQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KFdL
UGFnZVJlZikKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVTd2lwZVNuYXBzaG90
KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xp
Y2sodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQogewogICAg
IG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayht
YWluV2ViVmlldygpLT5wYWdlKCksIG5vdGlmaWNhdGlvbklEKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAwN2Y3NTAzNWJmMzEuLjA1ZGM0NzkyMmJhNyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI1LDcgKzEyNSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGJlZm9yZVVubG9hZFJldHVyblZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZTsgfQogICAgIHZvaWQgc2V0QmVmb3JlVW5s
b2FkUmV0dXJuVmFsdWUoYm9vbCB2YWx1ZSkgeyBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVlID0g
dmFsdWU7IH0KIAotICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayh1aW50NjRf
dCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
KFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgogICAg
IHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA3MmZhODJiYmMwMTAuLjJiZjRjMTk5ZTQ4ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5MCw3ICsz
OTAsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgIH0KIAogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3RpZmljYXRp
b25DbGljayIpKSB7Ci0gICAgICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gdWludDY0VmFs
dWUobWVzc2FnZUJvZHkpOworICAgICAgICBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCA9IHN0
cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uSUQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCBjZDVmYzY2MjE1YTQuLjU4ZTFmYWY1YmViZCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oIgogCisjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25zLmgiCiAj
aW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZUFycmF5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90
aWZpY2F0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgpA
QCAtNjYsOCArNjcsOCBAQCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViTm90aWZpY2F0aW9u
UHJvdmlkZXIoKQogCiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6fldlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyKCkKIHsKLSAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX293bmVkTm90aWZpY2F0aW9u
cykKLSAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5rZXku
Z2V0KCksIG51bGxwdHIpOworICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fa25vd25NYW5hZ2Vy
cykKKyAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5nZXQo
KSwgbnVsbHB0cik7CiB9CiAKIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBXZWJOb3RpZmljYXRp
b25Qcm92aWRlcjo6cHJvdmlkZXIoKQpAQCAtODksNDQgKzkwLDI2IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdLTm90
aWZpY2F0aW9uCiB7CiAgICAgYXV0byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdlKTsK
ICAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRpb25N
YW5hZ2VyKGNvbnRleHQpOwotICAgIHVpbnQ2NF90IGlkID0gV0tOb3RpZmljYXRpb25HZXRJRChu
b3RpZmljYXRpb24pOworICAgIEFTU0VSVChtX2tub3duTWFuYWdlcnMuY29udGFpbnMobm90aWZp
Y2F0aW9uTWFuYWdlcikpOwogCi0gICAgQVNTRVJUKG1fb3duZWROb3RpZmljYXRpb25zLmNvbnRh
aW5zKG5vdGlmaWNhdGlvbk1hbmFnZXIpKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3duZWRO
b3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uTWFuYWdlciktPnZhbHVlLmFkZChpZCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAgICBh
dXRvIGFkZFJlc3VsdDIgPSBtX293bmluZ01hbmFnZXIuc2V0KGlkLCBub3RpZmljYXRpb25NYW5h
Z2VyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRy
eSk7Ci0gICAgYXV0byBhZGRSZXN1bHQzID0gbV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURN
YXAuYWRkKHN0ZDo6bWFrZV9wYWlyKHBhZ2UsIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldExvY2Fs
SURGb3JUZXN0aW5nKG5vdGlmaWNhdGlvbk1hbmFnZXIsIG5vdGlmaWNhdGlvbikpLCBpZCk7Ci0g
ICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQzLCBhZGRSZXN1bHQzLmlzTmV3RW50cnkpOworICAg
IHVpbnQ2NF90IGlkZW50aWZpZXIgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbik7
CisgICAgYXV0byBjb3JlSWRlbnRpZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5Q29y
ZUlERm9yVGVzdGluZyhub3RpZmljYXRpb24pKTsKIAotICAgIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb25NYW5hZ2VyLCBpZCk7Ci19
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX293bmluZ01hbmFnZXIuc2V0KHRvV1RGU3RyaW5nKGNv
cmVJZGVudGlmaWVyLmdldCgpKSwgbm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAotc3RhdGljIHZvaWQgcmVt
b3ZlR2xvYmFsSURGcm9tSURNYXAoSGFzaE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50NjRf
dD4sIHVpbnQ2NF90PiYgbWFwLCB1aW50NjRfdCBpZCkKLXsKLSAgICBmb3IgKGF1dG8gaXRlciA9
IG1hcC5iZWdpbigpOyBpdGVyICE9IG1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChp
dGVyLT52YWx1ZSA9PSBpZCkgewotICAgICAgICAgICAgbWFwLnJlbW92ZShpdGVyKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uTWFuYWdlciwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OmNsb3NlV2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlm
aWNhdGlvbikKIHsKLSAgICB1aW50NjRfdCBpZCA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90aWZp
Y2F0aW9uKTsKLSAgICBBU1NFUlQobV9vd25pbmdNYW5hZ2VyLmNvbnRhaW5zKGlkKSk7Ci0gICAg
YXV0byBub3RpZmljYXRpb25NYW5hZ2VyID0gbV9vd25pbmdNYW5hZ2VyLmdldChpZCk7Ci0KLSAg
ICBBU1NFUlQobV9vd25lZE5vdGlmaWNhdGlvbnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdl
cikpOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobm90aWZp
Y2F0aW9uTWFuYWdlciktPnZhbHVlLnJlbW92ZShpZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKLSAgICBtX293bmluZ01hbmFnZXIucmVtb3ZlKGlkKTsKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNvcmVJ
REZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSkuZ2V0KCkpOwogCi0gICAgcmVtb3ZlR2xvYmFsSURG
cm9tSURNYXAobV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAsIGlkKTsKKyAgICBhdXRv
IG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBtX293bmluZ01hbmFnZXIudGFrZShpZGVudGlmaWVyKTsK
KyAgICBBU1NFUlQobm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgQVNTRVJUKG1fa25vd25NYW5h
Z2Vycy5jb250YWlucyhub3RpZmljYXRpb25NYW5hZ2VyKSk7CiAKLSAgICBhdXRvIHdrSUQgPSBh
ZG9wdFdLKFdLVUludDY0Q3JlYXRlKGlkKSk7CisgICAgYXV0byB3a0lEID0gYWRvcHRXSyhXS1VJ
bnQ2NENyZWF0ZShXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbikpKTsKICAgICBhdXRv
IGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBXS0FycmF5QXBw
ZW5kSXRlbShhcnJheS5nZXQoKSwgd2tJRC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25NYW5h
Z2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uTWFuYWdlciwgYXJy
YXkuZ2V0KCkpOwpAQCAtMTM0LDIzICsxMTcsMjggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92
aWRlcjo6Y2xvc2VXZWJOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW8K
IAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFuYWdlcihX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlcikKIHsKLSAgICBtX293bmVkTm90aWZpY2F0
aW9ucy5hZGQobWFuYWdlciwgSGFzaFNldDx1aW50NjRfdD4oKSk7CisgICAgQVNTRVJUKCFtX2tu
b3duTWFuYWdlcnMuY29udGFpbnMobWFuYWdlcikpOworICAgIG1fa25vd25NYW5hZ2Vycy5hZGQo
bWFuYWdlcik7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlm
aWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIpCiB7Ci0gICAg
YXV0byBpdGVyYXRvciA9IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobWFuYWdlcik7Ci0gICAg
QVNTRVJUKGl0ZXJhdG9yICE9IG1fb3duZWROb3RpZmljYXRpb25zLmVuZCgpKTsKLSAgICBhdXRv
IHRvUmVtb3ZlID0gaXRlcmF0b3ItPnZhbHVlOwotICAgIFdLUmV0YWluUHRyPFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZj4gZ3VhcmQobWFuYWdlcik7Ci0gICAgbV9vd25lZE5vdGlmaWNhdGlvbnMu
cmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICBhdXRvIHByb3RlY3RlZE1hbmFnZXIgPSBtX2tub3duTWFu
YWdlcnMudGFrZShtYW5hZ2VyKTsKKyAgICBBU1NFUlQocHJvdGVjdGVkTWFuYWdlcik7CisKKyAg
ICBhdXRvIHRvUmVtb3ZlID0gVmVjdG9yPFN0cmluZz4geyB9OworICAgIGZvciAoYXV0byYgaXRl
cmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVlICE9
IG1hbmFnZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdG9SZW1vdmUuYXBwZW5k
KGl0ZXJhdG9yLmtleSk7CisgICAgfQorCiAgICAgYXV0byBhcnJheSA9IGFkb3B0V0soV0tNdXRh
YmxlQXJyYXlDcmVhdGUoKSk7Ci0gICAgZm9yICh1aW50NjRfdCBub3RpZmljYXRpb25JRCA6IHRv
UmVtb3ZlKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IG1fb3duaW5nTWFuYWdlci5yZW1vdmUo
bm90aWZpY2F0aW9uSUQpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3Mp
OwotICAgICAgICByZW1vdmVHbG9iYWxJREZyb21JRE1hcChtX2xvY2FsVG9HbG9iYWxOb3RpZmlj
YXRpb25JRE1hcCwgbm90aWZpY2F0aW9uSUQpOwotICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShh
cnJheS5nZXQoKSwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25JRCkpLmdldCgp
KTsKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiB0b1JlbW92ZSkgeworICAgICAgICBXS0Fy
cmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgdG9XSyhpZGVudGlmaWVyKS5nZXQoKSk7CisgICAg
ICAgIG1fb3duaW5nTWFuYWdlci5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQorCiAgICAgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMobWFuYWdlciwg
YXJyYXkuZ2V0KCkpOwogfQogCkBAIC0xNjAsMjggKzE0OCwyMyBAQCBXS0RpY3Rpb25hcnlSZWYg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKICAgICBy
ZXR1cm4gV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpOwogfQogCi12b2lkIFdlYk5vdGlmaWNh
dGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiBwYWdl
LCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBub3Rp
ZmljYXRpb25JRCkKIHsKLSAgICBBU1NFUlQobV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURN
YXAuY29udGFpbnMoc3RkOjptYWtlX3BhaXIocGFnZSwgbm90aWZpY2F0aW9uSUQpKSk7Ci0gICAg
YXV0byBnbG9iYWxJRCA9IG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLmdldChzdGQ6
Om1ha2VfcGFpcihwYWdlLCBub3RpZmljYXRpb25JRCkpOwotICAgIEFTU0VSVChtX293bmluZ01h
bmFnZXIuY29udGFpbnMoZ2xvYmFsSUQpKTsKLSAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKG1fb3duaW5nTWFuYWdlci5nZXQoZ2xvYmFsSUQpLCBn
bG9iYWxJRCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gdG9XVEZTdHJpbmcobm90aWZpY2F0aW9u
SUQpOworICAgIEFTU0VSVChtX293bmluZ01hbmFnZXIuY29udGFpbnMoaWRlbnRpZmllcikpOwor
CisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9i
KG1fb3duaW5nTWFuYWdlci5nZXQoaWRlbnRpZmllciksIG5vdGlmaWNhdGlvbklEKTsKIH0KIAog
dm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVzZXQoKQogewotICAgIGZvciAoYXV0byYg
bm90aWZpY2F0aW9uUGFpciA6IG1fb3duZWROb3RpZmljYXRpb25zKSB7Ci0gICAgICAgIGlmIChu
b3RpZmljYXRpb25QYWlyLnZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgIGZvciAoYXV0byBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikgewogICAgICAgICBhdXRv
IGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgZm9yICh1
aW50NjRfdCBub3RpZmljYXRpb25JRCA6IG5vdGlmaWNhdGlvblBhaXIudmFsdWUpCi0gICAgICAg
ICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0
ZShub3RpZmljYXRpb25JRCkpLmdldCgpKTsKLQotICAgICAgICBub3RpZmljYXRpb25QYWlyLnZh
bHVlLmNsZWFyKCk7Ci0gICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xv
c2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvblBhaXIua2V5LmdldCgpLCBhcnJheS5nZXQoKSk7
CisgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB0b1dLKGl0ZXJhdG9yLmtl
eSkuZ2V0KCkpOworICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3Nl
Tm90aWZpY2F0aW9ucyhpdGVyYXRvci52YWx1ZSwgYXJyYXkuZ2V0KCkpOwogICAgIH0KKwogICAg
IG1fb3duaW5nTWFuYWdlci5jbGVhcigpOwotICAgIG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlv
bklETWFwLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGNjZjhiMWJjZTk5
Ni4uMzkyNjFiZDQyNjVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dL
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdU
UiB7CiAKQEAgLTQ2LDE1ICs0NywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVOb3RpZmlj
YXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZik7CiAgICAgV0tEaWN0aW9uYXJ5
UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKLSAgICB2b2lkIHNpbXVsYXRlV2ViTm90
aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAg
dm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYg
bm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBJ
bnZlcnNlcyBvZiBlYWNoIG90aGVyLgotICAgIEhhc2hNYXA8V0tSZXRhaW5QdHI8V0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmPiwgSGFzaFNldDx1aW50NjRfdD4+IG1fb3duZWROb3RpZmljYXRpb25z
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25p
bmdNYW5hZ2VyOwotCi0gICAgSGFzaE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50NjRfdD4s
IHVpbnQ2NF90PiBtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcDsKKyAgICBIYXNoU2V0
PFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2VyczsK
KyAgICBIYXNoTWFwPFN0cmluZywgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmluZ01h
bmFnZXI7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447726</attachid>
            <date>2021-12-21 09:35:09 -0800</date>
            <delta_ts>2021-12-21 14:53:09 -0800</delta_ts>
            <desc>PFR</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>82154</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOTgzZDE3MzExZmZlLi43ZWQ3NGM2MjU3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1h
a2UgTm90aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBh
IHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYSBuZXcgZm9ybSBvZiBJZGVudGlmaWVkIHRoYXQgdXNlcyBhIFVVSUQgU3RyaW5nIGFz
IHRoZSBpZGVudGlmaWVyLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvSWRlbnRpZmllZC5oOgor
ICAgICAgICAoV1RGOjpVVUlESWRlbnRpZmllZDo6VVVJRElkZW50aWZpZWQpOgorCiAyMDIxLTEy
LTIwICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
SURMXSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0lkZW50aWZpZWQuaCBiL1NvdXJjZS9XVEYv
d3RmL0lkZW50aWZpZWQuaAppbmRleCA1NzI1NWNhYTcyZjcuLjU2ZTllMTdhNTU5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lk
ZW50aWZpZWQuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8YXRvbWljPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVz
cGFjZSBXVEYgewogCkBAIC0xMDQsNyArMTA1LDI3IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBVVUlESWRlbnRpZmllZCA6IHB1YmxpYyBJZGVu
dGlmaWVkQmFzZTxTdHJpbmcsIFQ+IHsKK3Byb3RlY3RlZDoKKyAgICBVVUlESWRlbnRpZmllZCgp
CisgICAgICAgIDogSWRlbnRpZmllZEJhc2U8U3RyaW5nLCBUPihjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkpCisgICAgeworICAgIH0KKworICAgIFVVSURJZGVudGlmaWVkKGNvbnN0IFVVSURJ
ZGVudGlmaWVkJiBvdGhlcikKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KG90
aGVyLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBVVUlESWRl
bnRpZmllZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSWRlbnRpZmllZEJh
c2U8U3RyaW5nLCBUPihpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpKQorICAgIHsKKyAgICB9Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpJZGVudGlmaWVkOwogdXNpbmcg
V1RGOjpUaHJlYWRTYWZlSWRlbnRpZmllZDsKK3VzaW5nIFdURjo6VVVJRElkZW50aWZpZWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMzA4YjE0NWNjMjZkLi5mOWMzNzYzYTg1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmlu
ZyBpbnN0ZWFkIG9mIGEgdWludDY0X3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoUmVmYWN0b3IsIGNvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMpCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIE5vdGlmaWNhdGlvbnMgd2Vy
ZSB0YWdnZWQgd2l0aCBhbiBpbi1XZWJDb250ZW50LXByb2Nlc3MtdW5pcXVlIGlkZW50aWZpZXIK
KyAgICAgICAgYW5kIGFsc28gdGFnZ2VkIHdpdGggYSBVSVByb2Nlc3MtdW5pcXVlIGlkZW50aWZp
ZXIuCisgICAgICAgIAorICAgICAgICBUaGVyZSB3ZXJlIG1hcHMgYmV0d2VlbiB0aGVzZSB0d28g
aWRlbnRpZmllcnMgaW4gV2ViS2l0LCBhbmQgYm90aCBvZiB0aGVtIHdlcmUgZXhwb3NlZCB2aWEg
QVBJL1NQSQorICAgICAgICAoZS5nLiB0aHJvdWdoIHRoZSBpbmplY3RlZCBidW5kbGUpLCBuZWNl
c3NpdGF0aW5nIG1hcHMgYmV0d2VlbiB0aGVtIGluIFdLVFIgYXMgd2VsbC4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MgYnkgbWFraW5nIGEgVVVJRCBpZGVudGlmaWVy
IGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhhdCBjYW4gYmUgdHJlYXRlZAorICAgICAgICBh
cyB0aGUgT25lIFRydWUgSWRlbnRpZmllciB3aXRoaW4gV2ViS2l0LgorICAgICAgICAKKyAgICAg
ICAgVGhlcmUncyBleGlzdGluZyBTUEkgY2xpZW50cyB0aGF0IHJlbHkgb24gdGhlIFVJUHJvY2Vz
cy11bmlxdWUgdWluNjRfdCBpZGVudGlmaWVyLCBzbyB3ZSBzYWRseQorICAgICAgICBjb3VsZG4n
dCBnZXQgcmlkIG9mIHRoYXQgZW50aXJlbHkuIEJ1dCB0aGlzIHBhdGNoIHN0aWxsIHB1dHMgdXMg
aW4gYSBtdWNoIGJldHRlciBwbGFjZS4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpzaG93
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bjo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmRhdGFXaXRo
b3V0Tm90aWZpY2F0aW9uSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaDoKKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkNsaWVudDo6Y2xlYXJOb3RpZmljYXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKToKKwogMjAyMS0xMi0yMCAgQWxleGV5IFNodmF5a2EgIDxh
c2h2YXlrYUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYklETF0gY29udmVydFZhcmlhZGljQXJn
dW1lbnRzKCkgc2hvdWxkIHJldHVybiBhIEZpeGVkVmVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IDI4MTdl
MjFmMDZlNC4uZWM0YTY4ODU2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgTm90aWZpY2F0aW9uOjpzaG93KCkKICAgICAgICAgZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGNsaWVudC5zaG93KHRoaXMpKQorICAgIGlm
IChjbGllbnQuc2hvdygqdGhpcykpCiAgICAgICAgIG1fc3RhdGUgPSBTaG93aW5nOwogfQogCkBA
IC0xMTMsNyArMTEzLDcgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTaG93aW5nOiB7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1l
bnQoKS0+cGFnZSgpKQotICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShw
YWdlKS0+Y2xpZW50KCkuY2FuY2VsKHRoaXMpOworICAgICAgICAgICAgTm90aWZpY2F0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkuY2FuY2VsKCp0aGlzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgQ2xvc2VkOgpAQCAtMTM2LDcgKzEzNiw3IEBAIHZvaWQgTm90
aWZpY2F0aW9uOjpzdG9wKCkKICAgICBBY3RpdmVET01PYmplY3Q6OnN0b3AoKTsKIAogICAgIGlm
IChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBOb3RpZmljYXRpb25D
b250cm9sbGVyOjpmcm9tKHBhZ2UpLT5jbGllbnQoKS5ub3RpZmljYXRpb25PYmplY3REZXN0cm95
ZWQodGhpcyk7CisgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNs
aWVudCgpLm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCgqdGhpcyk7CiB9CiAKIHZvaWQgTm90
aWZpY2F0aW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCkBAIC0yMjUsNyArMjI1LDcg
QEAgYm9vbCBOb3RpZmljYXRpb246OnZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAog
ICAgIHJldHVybiBtX3N0YXRlID09IFNob3dpbmcgJiYgbV9oYXNSZWxldmFudEV2ZW50TGlzdGVu
ZXI7CiB9CiAKLU5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhV2l0aG91dE5vdGlm
aWNhdGlvbklEKCkgY29uc3QKK05vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gewogICAgICAgICBtX3RpdGxlLApAQCAtMjM1LDcgKzIzNSw3
IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhV2l0aG91dE5vdGlmaWNhdGlv
bklEKCkgY29uc3QKICAgICAgICAgbV9sYW5nLAogICAgICAgICBtX2RpcmVjdGlvbiwKICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
LAotICAgICAgICAwCisgICAgICAgIGlkZW50aWZpZXIoKSwKICAgICB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5k
ZXggZmUwY2Y0YzBiZDk5Li5hMDczNDEzZmFlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRpcmVjdGlv
bi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYv
SWRlbnRpZmllZC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJXcml0aW5nTW9k
ZS5oIgogCkBAIC00OCw3ICs0OSw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxs
YmFjazsKIAogc3RydWN0IE5vdGlmaWNhdGlvbkRhdGE7CiAKLWNsYXNzIE5vdGlmaWNhdGlvbiBm
aW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxOb3RpZmljYXRpb24+LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CitjbGFz
cyBOb3RpZmljYXRpb24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Tm90aWZp
Y2F0aW9uPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEsIHB1YmxpYyBVVUlESWRlbnRpZmllZDxOb3RpZmljYXRpb24+IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0VYUE9SVChOb3RpZmljYXRpb24sIFdFQkNPUkVfRVhQT1JUKTsK
IHB1YmxpYzoKICAgICB1c2luZyBQZXJtaXNzaW9uID0gTm90aWZpY2F0aW9uUGVybWlzc2lvbjsK
QEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBO
b3RpZmljYXRpb25EYXRhIGRhdGFXaXRob3V0Tm90aWZpY2F0aW9uSUQoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBOb3RpZmljYXRpb25EYXRhIGRhdGEoKSBjb25zdDsKIAogICAgIHVzaW5n
IFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ6OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IGI4MWRkNWI2NWRlMy4uN2ExNzhkZmI4
M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC00NywxOSArNDcsMTUgQEAgcHVibGljOgogICAg
IHVzaW5nIFBlcm1pc3Npb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQZXJtaXNz
aW9uKT47CiAKICAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uIGJlIHNob3duLgot
ICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdyhOb3RpZmljYXRpb24mKSA9IDA7CiAKICAgICAvLyBSZXF1ZXN0cyB0aGF0IGEgbm90
aWZpY2F0aW9uIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBzaG93biBiZSBjYW5jZWxlZC4KLSAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsKE5vdGlmaWNhdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsKE5vdGlmaWNhdGlvbiYpID0gMDsKIAotICAgIC8vIFdoZW4gdGhlIHVzZXIgY2xvc2Vz
IGEgcGFnZSwgb3IgcXVpdHMgdGhlIGNsaWVudCBhcHBsaWNhdGlvbiwgYWxsIG9mIHRoZSBwYWdl
J3MKLSAgICAvLyBhc3NvY2lhdGVkIG5vdGlmaWNhdGlvbnMgYXJlIGNsZWFyZWQuCi0gICAgdmly
dHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgeyB9
Ci0gICAgCiAgICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRoYXQgYSBOb3RpZmljYXRpb24g
b2JqZWN0IGhhcyBiZWVuIGRlc3Ryb3llZAogICAgIC8vIChzdWNoIGFzIGJ5IGEgcGFnZSB0cmFu
c2l0aW9uKS4gVGhlIHByZXNlbnRlciBtYXkgY29udGludWUgc2hvd2luZwogICAgIC8vIHRoZSBu
b3RpZmljYXRpb24sIGJ1dCBtdXN0IG5vdCBhdHRlbXB0IHRvIGNhbGwgdGhlIGV2ZW50IGhhbmRs
ZXJzLgotICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZp
Y2F0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95
ZWQoTm90aWZpY2F0aW9uJikgPSAwOwogCiAgICAgLy8gSW5mb3JtcyB0aGUgcHJlc2VudGVyIHRo
ZSBjb250cm9sbGVyIGF0dGFjaGVkIHRvIHRoZSBwYWdlIGhhcyBiZWVuIGRlc3Ryb3llZC4KICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uRGF0YS5oCmluZGV4IDAwMDBmMmZlMGMyZC4uOGRmYmQ3NWFhNjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRh
LmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFN0cmlu
ZyBsYW5ndWFnZTsKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyZWN0aW9u
OwogICAgIFN0cmluZyBvcmlnaW5TdHJpbmc7Ci0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQ7
CisgICAgU3RyaW5nIG5vdGlmaWNhdGlvbklEOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KQEAgLTkwLDcgKzkwLDcgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBOb3Rp
ZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIW9yaWdpblN0
cmluZykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG5vdGlmaWNhdGlvbklEOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBub3Rp
ZmljYXRpb25JRDsKICAgICBkZWNvZGVyID4+IG5vdGlmaWNhdGlvbklEOwogICAgIGlmICghbm90
aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5
YzA3OWJmMDIxYy4uNjBiODZhN2VlNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIx
LTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtl
IE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5nIGluc3RlYWQgb2YgYSB1
aW50NjRfdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBUaGlzIGlzIG1vc3RseSBjaGFuZ2luZyBhIHdob2xlIGJ1bmNoIG9mIHVpbnQ2NF90
cyB0byBTdHJpbmdzLCBidXQgYWxzbyBnZXRzIHJpZCBvZiBsb3RzIG9mIHdlaXJkCisgICAgICAg
IGFuZCBmcmFnaWxlIG1hcHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5v
dGlmaWNhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9Ob3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOgorICAgICAgICAqIFNoYXJlZC9O
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHA6CisgICAg
ICAgIChXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV0tOb3RpZmljYXRpb25NYW5h
Z2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKToKKyAgICAgICAgKFdLTm90aWZpY2F0
aW9uTWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMpOgorICAgICAg
ICAoV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0TG9jYWxJREZvclRlc3RpbmcpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaDoKKyAgICAgICAgKFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb246Om5vdGlmaWNhdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uOjpjb3JlTm90aWZpY2F0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb246OnBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
cjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpwYWdlSURzTWF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpwYWdlQW5kTm90
aWZpY2F0aW9uSURzTWF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNr
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Omdl
bmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvbkxvY2FsSURGb3JUZXN0aW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlQ29w
eVdlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKFdLQnVuZGxlR2V0V2ViTm90aWZpY2F0aW9u
SUQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQcml2YXRlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6Ondl
Yk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6Z2VuZXJhdGVOb3RpZmljYXRpb25JRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6Om5vdGlmaWNhdGlvbklERm9yVGVzdGluZyk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZp
Y2F0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25DbGll
bnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNl
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9u
T2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uQ2xpZW50
OjpjbGVhck5vdGlmaWNhdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjEtMTItMjAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIE1vZGFsQ29u
dGFpbmVyQ29udHJvbENsYXNzaWZpZXIgYW5kIHVzZSBpdCB0byBpbXBsZW1lbnQgY2xhc3NpZnlN
b2RhbENvbnRhaW5lckNvbnRyb2xzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCmluZGV4IDYyNDkwMGVmZDRmZC4uM2Y2NzhiZTNjMzM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTExNCwxOSAr
MTE0LDE5IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRp
b24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0CiAvLyAgICBzZW5kTWVzc2FnZVdpdGhS
ZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkVjaG9Ud2ljZT4oV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIFN0cmluZygiRklYTUU6IERvIHVzZWZ1bCB3b3JrIGhlcmUiKSk7CiB9CiAKLXZv
aWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRf
dCkKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47
CiB9CiAKLXZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCkKK3ZvaWQgTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3Ry
aW5nJikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAwNTNmMzBhMTVlYWEu
LjM1NGU3NDA4YmUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdFN5c3Rl
bU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2hvd05vdGlmaWNh
dGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7Ci0gICAgdm9pZCBj
YW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwotICAgIHZv
aWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlv
bklEcykgZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBT
dHJpbmcmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSBmaW5hbDsKKyAgICB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgZmlu
YWw7CiAKICAgICB2b2lkIG1heWJlU2VuZENvbm5lY3Rpb25Db25maWd1cmF0aW9uKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCmluZGV4IGUyMTJl
ZDFmZDYyYy4uYjVlMDdkZWNhMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyLmgKQEAgLTQxLDkgKzQxLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgc2VjdXJp
dHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlm
aWNhdGlvbklEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkgPSAw
OwogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IGFi
Y2Y5NzQ2YjA0OS4uMWM5NTY4OTE1MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogbWVz
c2FnZXMgLT4gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIE5vdFJlZkNvdW50ZWQg
ewogICAgIFJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKFN0cmluZyBvcmlnaW5J
ZGVudGlmaWVyKSAtPiAoYm9vbCBhbGxvd2VkKSBBc3luYwogICAgIFNob3dOb3RpZmljYXRpb24o
c3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0YSkKLSAgICBD
YW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCi0gICAgQ2xlYXJOb3Rp
ZmljYXRpb25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQotICAgIERpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCisgICAgQ2FuY2VsTm90aWZp
Y2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkKKyAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVj
dG9yPFN0cmluZz4gbm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24o
U3RyaW5nIG5vdGlmaWNhdGlvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCmluZGV4IDhiNmMwMzQ0NDA2ZS4uYTc0MWY4YjEwODM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24u
Y3BwCkBAIC04NywzICs4Nyw4IEBAIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQoV0tOb3Rp
ZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogewogICAgIHJldHVybiB0b0ltcGwobm90aWZpY2F0
aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsKIH0KKworV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRpb25D
b3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pCit7Cisg
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChub3RpZmljYXRpb24pLT5jb3JlTm90aWZpY2F0
aW9uSUQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb24uaAppbmRleCBkM2FlOThiZjc0ZDIuLjg4NDE3NGNkNDJkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBA
IFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlMYW5nKFdLTm90aWZpY2F0
aW9uUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3RpZmljYXRp
b25Db3B5RGlyKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgV0tT
ZWN1cml0eU9yaWdpblJlZiBXS05vdGlmaWNhdGlvbkdldFNlY3VyaXR5T3JpZ2luKFdLTm90aWZp
Y2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgdWludDY0X3QgV0tOb3RpZmljYXRp
b25HZXRJRChXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOworV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25S
ZWYgbm90aWZpY2F0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApp
bmRleCA3NjkyMzk5MGFiNWIuLjhmNDQ5OTg0MTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC01NCw2
ICs1NCwxMSBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAgICAgdG9JbXBsKG1hbmFnZXJSZWYp
LT5wcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9p
ZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IoV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlv
bklEKQoreworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05vdGlmaWNh
dGlvbih0b1dURlN0cmluZyhub3RpZmljYXRpb25JRCkpOworfQorCiB2b2lkIFdLTm90aWZpY2F0
aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5vdGlmaWNhdGlvbklEcykKIHsKICAgICB0
b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKHRvSW1wbChu
b3RpZmljYXRpb25JRHMpKTsKQEAgLTY4LDggKzczLDMgQEAgdm9pZCBXS05vdGlmaWNhdGlvbk1h
bmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZpY2F0aW9u
TWEKIHsKICAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0
aW9uUG9saWNpZXModG9JbXBsKG9yaWdpbnMpKTsKIH0KLQotdWludDY0X3QgV0tOb3RpZmljYXRp
b25NYW5hZ2VyR2V0TG9jYWxJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1h
bmFnZXIsIFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKLXsKLSAgICByZXR1cm4gdG9J
bXBsKG1hbmFnZXIpLT5ub3RpZmljYXRpb25Mb2NhbElERm9yVGVzdGluZyh0b0ltcGwobm90aWZp
Y2F0aW9uKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Tm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IGI3ODkwOWM2Y2U0Mi4uMGNmMjE0NTE3OWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlv
bk1hbmFnZXIuaApAQCAtMzgsMTAgKzM4LDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0
aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyCiAK
IFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hvd05vdGlm
aWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpOwogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJl
ZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRp
b25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZiBtYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CiBXS19FWFBP
UlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9u
cyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJlZiBub3RpZmlj
YXRpb25JRHMpOwogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJE
aWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFn
ZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBib29sIGFsbG93ZWQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRp
b25Qb2xpY2llcyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJl
ZiBvcmlnaW5zKTsKLVdLX0VYUE9SVCB1aW50NjRfdCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRM
b2NhbElERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tO
b3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbi5jcHAKaW5kZXggMDhhNmY2ZTJmNGJmLi5iOGRhNzFiYjBmZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdl
Yk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmIGRhdGEpCitXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyKQogICAgIDogbV90aXRsZShkYXRhLnRpdGxlKQogICAgICwgbV9ib2R5KGRhdGEu
Ym9keSkKICAgICAsIG1faWNvblVSTChkYXRhLmljb25VUkwpCkBAIC0zOCw3ICszOCw4IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkRhdGEmIGRhdGEpCiAgICAgLCBtX2xhbmcoZGF0YS5sYW5ndWFnZSkKICAgICAsIG1fZGlyKGRh
dGEuZGlyZWN0aW9uKQogICAgICwgbV9vcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhkYXRhLm9yaWdpblN0cmluZykpCi0gICAgLCBtX25vdGlmaWNhdGlvbklEKGRh
dGEubm90aWZpY2F0aW9uSUQpCisgICAgLCBtX2NvcmVOb3RpZmljYXRpb25JRChkYXRhLm5vdGlm
aWNhdGlvbklEKQorICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlSWRlbnRpZmllcikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uLmgKaW5kZXggMGQyMmQ0N2UyMDFmLi4zYThmMTFkNzMxOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb24uaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDExICszOSwxMSBA
QCBzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNz
IFdlYk5vdGlmaWNhdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6Ok5vdGlmaWNhdGlvbj4geworY2xhc3MgV2ViTm90aWZpY2F0aW9uIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Tm90aWZpY2F0aW9uPiwgcHVibGljIElkZW50
aWZpZWQ8V2ViTm90aWZpY2F0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJOb3Rp
ZmljYXRpb24+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhKQor
ICAgIHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk5vdGlmaWNhdGlvbihk
YXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk5vdGlmaWNhdGlvbihkYXRh
LCBwYWdlSWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBj
b25zdCB7IHJldHVybiBtX3RpdGxlOyB9CkBAIC01MiwxMCArNTQsMTMgQEAgcHVibGljOgogICAg
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVybiBtX2Rp
cjsgfQogICAgIEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZ2luLmdldCgpOyB9CiAgICAgCi0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQoKSBjb25z
dCB7IHJldHVybiBtX25vdGlmaWNhdGlvbklEOyB9CisgICAgdWludDY0X3Qgbm90aWZpY2F0aW9u
SUQoKSBjb25zdCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIGNv
cmVOb3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZU5vdGlmaWNhdGlvbklEOyB9
CisKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFdlYk5vdGlmaWNhdGlv
bihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CisgICAgV2ViTm90aWZpY2F0aW9u
KGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
KTsKIAogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFN0cmluZyBtX2JvZHk7CkBAIC02NCw3ICs2
OSw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EaXJlY3Rpb24gbV9kaXI7CiAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IG1f
b3JpZ2luOwotICAgIHVpbnQ2NF90IG1fbm90aWZpY2F0aW9uSUQ7CisgICAgU3RyaW5nIG1fY29y
ZU5vdGlmaWNhdGlvbklEOworCisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3BhZ2VJZGVu
dGlmaWVyOwogfTsKIAogaW5saW5lIGJvb2wgaXNOb3RpZmljYXRpb25JRFZhbGlkKHVpbnQ2NF90
IGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIuY3BwCmluZGV4IGEyOWFlZDU1MDdlYS4uOGE1ZGIxNzZiZjkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCkBAIC00NSwxNyAr
NDUsMTcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OnNob3dO
b3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWYKICAgICBtX3dlYlBhZ2VQcm94eS5zaG93
Tm90aWZpY2F0aW9uKGRhdGEpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQor
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNh
dGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5
LmNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbm90aWZpY2F0aW9uSURzKQogewogICAgIG1fd2ViUGFnZVByb3h5LmNsZWFyTm90aWZpY2F0
aW9ucyhub3RpZmljYXRpb25JRHMpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRp
b25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpkaWREZXN0
cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgbV93
ZWJQYWdlUHJveHkuZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRl
eCA0MjUxZjcyZmViZTIuLmQ5NGZiN2M0N2JjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0zOCw5ICszOCw5IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQg
c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7
Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZp
bmFsOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9u
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNh
dGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSBmaW5h
bDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmlj
YXRpb25JRCkgZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA1MmFhNjUzYTVk
NWUuLjg2YThkZGQ3NjdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcApAQCAtMzksMTIgKzM5LDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlv
bklEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlR2xvYmFsTm90aWZpY2F0aW9uSUQg
PSAxOwotICAgIHJldHVybiB1bmlxdWVHbG9iYWxOb3RpZmljYXRpb25JRCsrOwotfQotCiBjb25z
dCBjaGFyKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1lKCkKIHsK
ICAgICByZXR1cm4gIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSI7CkBAIC05Niw1MSArOTAs
NDcgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAgdWludDY0X3QgZ2xvYmFsTm90aWZp
Y2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgYXV0byBub3Rp
ZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZShub3RpZmljYXRpb25EYXRhKTsKLSAg
ICBhdXRvIG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPmlkZW50
aWZpZXIoKSwgbm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRpb25JRCk7Ci0gICAgbV9nbG9iYWxO
b3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb25JRFBh
aXIpOwotICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1h
a2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uLmNvcHlSZWYoKSkpOwor
ICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90aWZpY2F0
aW9uRGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlv
bk1hcC5zZXQobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRpb24tPmNv
cmVOb3RpZmljYXRpb25JRCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlv
bi0+Y29yZU5vdGlmaWNhdGlvbklEKCksIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpOwogICAgIG1f
cHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdl
LCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6Y2FuY2VsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiBwYWdl
Tm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgaWYgKFdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
ID0gbV9ub3RpZmljYXRpb25zLmdldChzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5pZGVudGlmaWVy
KCksIHBhZ2VOb3RpZmljYXRpb25JRCkpLnNlY29uZC5nZXQoKSkKLSAgICAgICAgbV9wcm92aWRl
ci0+Y2FuY2VsKCpub3RpZmljYXRpb24pOworICAgIGlmIChhdXRvIHdlYk5vdGlmaWNhdGlvbiA9
IG1fbm90aWZpY2F0aW9ucy5nZXQocGFnZU5vdGlmaWNhdGlvbklEKSkKKyAgICAgICAgbV9wcm92
aWRlci0+Y2FuY2VsKCp3ZWJOb3RpZmljYXRpb24pOwogfQogICAgIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3
ZWJQYWdlLCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKQogewotICAgIGF1dG8gZ2xvYmFs
SUROb3RpZmljYXRpb25QYWlyID0gbV9ub3RpZmljYXRpb25zLnRha2Uoc3RkOjptYWtlX3BhaXIo
d2ViUGFnZS0+aWRlbnRpZmllcigpLCBwYWdlTm90aWZpY2F0aW9uSUQpKTsKLSAgICBpZiAodWlu
dDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnbG9iYWxJRE5vdGlmaWNhdGlvblBhaXIuZmly
c3QpIHsKLSAgICAgICAgV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBnbG9iYWxJRE5v
dGlmaWNhdGlvblBhaXIuc2Vjb25kLmdldCgpOwotICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlv
bk1hcC5yZW1vdmUoZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwotICAgICAgICBtX3Byb3ZpZGVyLT5k
aWREZXN0cm95Tm90aWZpY2F0aW9uKCpub3RpZmljYXRpb24pOworICAgIGlmIChhdXRvIHdlYk5v
dGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9ucy50YWtlKHBhZ2VOb3RpZmljYXRpb25JRCkpIHsK
KyAgICAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAucmVtb3ZlKHdlYk5vdGlmaWNhdGlvbi0+
bm90aWZpY2F0aW9uSUQoKSk7CisgICAgICAgIG1fcHJvdmlkZXItPmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24oKndlYk5vdGlmaWNhdGlvbik7CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYWdlSURz
TWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90LCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQorc3Rh
dGljIGJvb2wgcGFnZUlEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBTdHJpbmcmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9
CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2ly
ZWRQYWdlTm90aWZpY2F0aW9uSURzKQorc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklE
c01hdGNoKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIHBhZ2VO
b3RpZmljYXRpb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCiB7CiAgICAgcmV0
dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEICYmIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURz
LmNvbnRhaW5zKHBhZ2VOb3RpZmljYXRpb25JRCk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlKQog
ewotICAgIGNsZWFyTm90aWZpY2F0aW9ucyh3ZWJQYWdlLCBWZWN0b3I8dWludDY0X3Q+KCksIHBh
Z2VJRHNNYXRjaCk7CisgICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIFZlY3RvcjxTdHJp
bmc+KCksIHBhZ2VJRHNNYXRjaCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIGNsZWFyTm90
aWZpY2F0aW9ucyh3ZWJQYWdlLCBwYWdlTm90aWZpY2F0aW9uSURzLCBwYWdlQW5kTm90aWZpY2F0
aW9uSURzTWF0Y2gpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xl
YXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmls
dGVyRnVuY3Rpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3Rp
ZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
Z2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0
aW9uKQogewogICAgIGF1dG8gdGFyZ2V0UGFnZVByb3h5SUQgPSB3ZWJQYWdlLT5pZGVudGlmaWVy
KCk7CiAKQEAgLTE0OCwxMiArMTM4LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zCiAgICAg
Z2xvYmFsTm90aWZpY2F0aW9uSURzLnJlc2VydmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlv
bk1hcC5zaXplKCkpOwogCiAgICAgZm9yIChhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25zLmJlZ2lu
KCksIGVuZCA9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIGF1dG8gcGFnZVByb3h5SUQgPSBpdC0+a2V5LmZpcnN0OwotICAgICAgICB1aW50NjRfdCBw
YWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5LnNlY29uZDsKLSAgICAgICAgaWYgKCFmaWx0ZXJG
dW5jdGlvbihwYWdlUHJveHlJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlUHJveHlJ
RCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCisgICAgICAgIGF1dG8gcGFnZVByb3h5SUQgPSBpdC0+
dmFsdWUtPnBhZ2VJZGVudGlmaWVyKCk7CisgICAgICAgIFN0cmluZyBjb3JlTm90aWZpY2F0aW9u
SUQgPSBpdC0+dmFsdWUtPmNvcmVOb3RpZmljYXRpb25JRCgpOworICAgICAgICBpZiAoIWZpbHRl
ckZ1bmN0aW9uKHBhZ2VQcm94eUlELCBjb3JlTm90aWZpY2F0aW9uSUQsIHRhcmdldFBhZ2VQcm94
eUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlLmZpcnN0OworICAg
ICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS0+bm90aWZpY2F0
aW9uSUQoKTsKICAgICAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSURzLmFwcGVuZChnbG9iYWxOb3Rp
ZmljYXRpb25JRCk7CiAgICAgfQogCkBAIC0xNzEsMTIgKzE2MSwxNCBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90
IGdsb2JhbE5vdAogICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZShpdC0+dmFsdWUuZmlyc3QpOworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25zLmdldChpdC0+dmFsdWUpOworICAgIEFTU0VSVChub3RpZmljYXRpb24pOworCisg
ICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24t
PnBhZ2VJZGVudGlmaWVyKCkpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlLnNlY29uZDsKLSAg
ICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6RGlkU2hvd05vdGlmaWNhdGlvbihwYWdlTm90aWZpY2F0aW9uSUQpLCAwKTsKKyAgICB3ZWJQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlk
U2hvd05vdGlmaWNhdGlvbihpdC0+dmFsdWUpLCAwKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xv
YmFsTm90aWZpY2F0aW9uSUQpCkBAIC0xODQsNDAgKzE3Niw3MyBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBn
bG9iYWxObwogICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5maW5kKGdsb2Jh
bE5vdGlmaWNhdGlvbklEKTsKICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAu
ZW5kKCkpCiAgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25zLmdldChpdC0+dmFsdWUpOworICAgIEFTU0VSVChub3RpZmljYXRpb24pOwogICAg
IAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVl
LmZpcnN0KTsKKyAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5v
dGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUu
c2Vjb25kOwotICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpEaWRDbGlja05vdGlmaWNhdGlvbihwYWdlTm90aWZpY2F0aW9uSUQpLCAw
KTsKKyAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24oaXQtPnZhbHVlKSwgMCk7CiB9CiAKK3ZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
KGNvbnN0IFN0cmluZyYgY29yZU5vdGlmaWNhdGlvbklEKQoreworICAgIGF1dG8gbm90aWZpY2F0
aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChjb3JlTm90aWZpY2F0aW9uSUQpOworICAgIGlmICgh
bm90aWZpY2F0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiB3ZWJQYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSk7Cisg
ICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmlj
YXRpb24oY29yZU5vdGlmaWNhdGlvbklEKSwgMCk7Cit9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBn
bG9iYWxOb3RpZmljYXRpb25JRHMpCiB7Ci0gICAgSGFzaE1hcDxXZWJQYWdlUHJveHkqLCBWZWN0
b3I8dWludDY0X3Q+PiBwYWdlTm90aWZpY2F0aW9uSURzOwotICAgIAorICAgIEhhc2hNYXA8V2Vi
UGFnZVByb3h5KiwgVmVjdG9yPFN0cmluZz4+IHBhZ2VOb3RpZmljYXRpb25JRHM7CisKICAgICBz
aXplX3Qgc2l6ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+c2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5v
dGlmaWNhdGlvbk1hcC5maW5kKGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+YXQ8QVBJOjpVSW50NjQ+
KGkpLT52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
LmVuZCgpKQorICAgICAgICAvLyBUaGUgcGFzc2VkIGFycmF5IG1pZ2h0IGhhdmUgdWludDY0X3Qg
aWRlbnRpZmllcnMgb3IgU3RyaW5nIGlkZW50aWZpZXJzLgorICAgICAgICAvLyBIYW5kbGUgYm90
aC4KKworICAgICAgICBTdHJpbmcgY29yZU5vdGlmaWNhdGlvbklEOworICAgICAgICBhdXRvKiBp
bnRWYWx1ZSA9IGdsb2JhbE5vdGlmaWNhdGlvbklEcy0+YXQ8QVBJOjpVSW50NjQ+KGkpOworICAg
ICAgICBpZiAoaW50VmFsdWUpIHsKKyAgICAgICAgICAgIGF1dG8gaXQgPSBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC5maW5kKGludFZhbHVlLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdCA9
PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgY29yZU5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVlOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byogc3RyaW5nVmFsdWUgPSBnbG9iYWxOb3RpZmlj
YXRpb25JRHMtPmF0PEFQSTo6U3RyaW5nPihpKTsKKyAgICAgICAgICAgIGlmICghc3RyaW5nVmFs
dWUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNvcmVOb3RpZmlj
YXRpb25JRCA9IHN0cmluZ1ZhbHVlLT5zdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIEFT
U0VSVCghY29yZU5vdGlmaWNhdGlvbklELmlzRW1wdHkoKSk7CisKKyAgICAgICAgYXV0byBub3Rp
ZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMudGFrZShjb3JlTm90aWZpY2F0aW9uSUQpOworICAg
ICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IGlmIChXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoaXQt
PnZhbHVlLmZpcnN0KSkgeworICAgICAgICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlvbi0+cGFnZUlkZW50aWZpZXIoKSkpIHsK
ICAgICAgICAgICAgIGF1dG8gcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5maW5kKHdlYlBh
Z2UpOwogICAgICAgICAgICAgaWYgKHBhZ2VJdCA9PSBwYWdlTm90aWZpY2F0aW9uSURzLmVuZCgp
KSB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ2NF90PiBuZXdWZWN0b3I7CisgICAgICAg
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmV3VmVjdG9yOwogICAgICAgICAgICAgICAgIG5ld1Zl
Y3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogICAgICAgICAgICAgICAgIHBhZ2VJ
dCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYWRkKHdlYlBhZ2UsIFdURk1vdmUobmV3VmVjdG9yKSku
aXRlcmF0b3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHVpbnQ2NF90IHBhZ2VOb3Rp
ZmljYXRpb25JRCA9IGl0LT52YWx1ZS5zZWNvbmQ7Ci0gICAgICAgICAgICBwYWdlSXQtPnZhbHVl
LmFwcGVuZChwYWdlTm90aWZpY2F0aW9uSUQpOworICAgICAgICAgICAgcGFnZUl0LT52YWx1ZS5h
cHBlbmQobm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBtX25vdGlmaWNhdGlvbnMucmVtb3ZlKGl0LT52YWx1ZSk7Ci0gICAgICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwLnJlbW92ZShpdCk7CisgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwLnJlbW92ZShub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byBpdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuYmVnaW4oKSwgZW5kID0gcGFn
ZU5vdGlmaWNhdGlvbklEcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQpAQCAtMjUwLDE2ICsyNzUs
NCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVO
b3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0Fs
bFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90
aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3MpKTsKIH0KIAotdWludDY0X3QgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpub3RpZmljYXRpb25Mb2NhbElERm9yVGVzdGluZyhXZWJO
b3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKLXsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbikKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAu
ZmluZChub3RpZmljYXRpb24tPm5vdGlmaWNhdGlvbklEKCkpOwotICAgIGlmIChpdCA9PSBtX2ds
b2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1
cm4gaXQtPnZhbHVlLnNlY29uZDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBkYWYzMzk3ZjM4ZDUuLmIxOTU0YThj
ZmI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC02MCwyNyAr
NjAsMjYgQEAgcHVibGljOgogICAgIEhhc2hNYXA8U3RyaW5nLCBib29sPiBub3RpZmljYXRpb25Q
ZXJtaXNzaW9ucygpOwogCiAgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNv
cmU6Ok5vdGlmaWNhdGlvbkRhdGEmKTsKLSAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJveHkqLCB1
aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2FuY2VsKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhX
ZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURz
KTsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgdWludDY0
X3QgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQ
YWdlUHJveHkqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7Cisg
ICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmlu
ZyYgcGFnZU5vdGlmaWNhdGlvbklEKTsKIAogICAgIHZvaWQgcHJvdmlkZXJEaWRTaG93Tm90aWZp
Y2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKICAg
ICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIG5vdGlmaWNh
dGlvbklEcyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShj
b25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3Zp
ZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CiAK
LSAgICB1aW50NjRfdCBub3RpZmljYXRpb25Mb2NhbElERm9yVGVzdGluZyhXZWJOb3RpZmljYXRp
b24qKTsKLQogICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpyZWY7CiAgICAgdXNpbmcgQVBJOjpPYmpl
Y3Q6OmRlcmVmOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0
aW9uRmlsdGVyRnVuY3Rpb24pKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJ
RCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOwot
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9u
KTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbikoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlmaWNhdGlvbklE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBjbGVhck5vdGlmaWNh
dGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRp
b25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRT
dXBwbGVtZW50CiAgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwpAQCAt
ODgsMTAgKzg3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1l
bnQoKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblBy
b3ZpZGVyPiBtX3Byb3ZpZGVyOwotICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElE
IGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2Jh
bE5vdGlmaWNhdGlvbk1hcDsKLSAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2Ug
SUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFsdWUgcGFpciBjb21w
cmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNhdGlvbiBvYmplY3QK
LSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCB1aW50NjRfdD4s
IHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNh
dGlvbnM7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4gbV9u
b3RpZmljYXRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA1ZmY2MGU3YTRiNzkuLjZmNDc5YmE1OTJl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04NzQyLDE3
ICs4NzQyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvCiAgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5zaG93
KHRoaXMsIG5vdGlmaWNhdGlvbkRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2Vs
Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJQYWdlUHJveHk6
OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKS0+Y2FuY2VsKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3Rp
ZmljYXRpb25JRHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpCiB7CiAgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVh
ck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZpY2F0aW9uSURzKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5v
dGlmaWNhdGlvbklEKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50
PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih0
aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDc5OTk3MGRlZDZhNC4uZTliMGExMzAyNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMjAzMiw5ICsyMDMyLDkgQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYpOwotICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBub3RpZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50
NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3Qg
U3RyaW5nJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBkaWREZXN0cm95
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOwogCiAgICAgdm9pZCBy
ZXF1ZXN0Q29va2llQ29uc2VudChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvb2tp
ZUNvbnNlbnREZWNpc2lvblJlc3VsdCk+JiYpOwogICAgIHZvaWQgY2xhc3NpZnlNb2RhbENvbnRh
aW5lckNvbnRyb2xzKFZlY3RvcjxTdHJpbmc+JiYgdGV4dHMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6Ok1vZGFsQ29udGFpbmVyQ29udHJvbFR5cGU+JiYpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGUuY3BwCmluZGV4IGI0MzU2YTQyY2QyYi4uODBhZDM2ZTE4N2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZS5jcHAKQEAgLTIwNiw5ICsyMDYsMTMgQEAgdm9pZCBXS0J1bmRsZVJlbW92ZUFs
bFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5k
bGUKICAgICBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYpLT5yZW1vdmVBbGxXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9ucyhXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKSk7CiB9CiAKLXVpbnQ2NF90IFdL
QnVuZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCitXS1N0cmluZ1JlZiBXS0J1
bmRsZUNvcHlXZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5kbGVSZWYsIEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbikKIHsKLSAgICByZXR1cm4gV2Vi
S2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+d2ViTm90aWZpY2F0aW9uSUQoY29udGV4dCwgbm90aWZp
Y2F0aW9uKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJLaXQ6OnRvSW1wbChidW5kbGVSZWYp
LT53ZWJOb3RpZmljYXRpb25JRChjb250ZXh0LCBub3RpZmljYXRpb24pOworICAgIGlmICghaWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSSgqaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV0tCdW5kbGVTZXRUYWJLZXlDeWNs
ZXNUaHJvdWdoRWxlbWVudHMoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCmluZGV4
IGE0ZDIzZjUzN2UzNS4uZGM0ZDEzN2JlYTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0
ZS5oCkBAIC01Miw3ICs1Miw3IEBAIFdLX0VYUE9SVCBib29sIFdLQnVuZGxlSXNQYWdlQm94Vmlz
aWJsZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlRnJhbWVSZWYgZnJhCiBXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZVNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25Gb3JUZXN0aW5nKFdLQnVuZGxl
UmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbG9jYXRpb24pOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5k
bGVTZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG9yaWdpblN0cmluZ1JlZiwgYm9vbCBhbGxvd2Vk
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlz
c2lvbnMoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7Ci1XS19FWFBP
UlQgdWludDY0X3QgV0tCdW5kbGVHZXRXZWJOb3RpZmljYXRpb25JRChXS0J1bmRsZVJlZiBidW5k
bGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbik7CitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVS
ZWYgYnVuZGxlLCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24p
OwogV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0J1bmRsZUNyZWF0ZVdLRGF0YUZyb21VSW50OEFycmF5
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgZGF0
YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkRm9yVGVzdGluZyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIGJvb2wgZW5hYmxlZCk7CiAv
LyBSZXR1cm5zIGFycmF5IG9mIGRpY3Rpb25hcmllcy4gRGljdGlvbmFyeSBrZXlzIGFyZSBkb2N1
bWVudCBpZGVudGlmaWVycywgdmFsdWVzIGFyZSBkb2N1bWVudCBVUkxzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggZjA1YzRlYjZmYzRiLi4zODk1YmMyYjEyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcApAQCAtMzEwLDE3ICszMTAsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlQWxs
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSogcGFnZSkKICNlbmRpZgogfQogCi11
aW50NjRfdCBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpz
Q29udGV4dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKK3N0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBJbmplY3RlZEJ1bmRsZTo6d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmIGpzQ29udGV4
dCwgSlNWYWx1ZVJlZiBqc05vdGlmaWNhdGlvbikKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IEpTTm90aWZpY2F0
aW9uOjp0b1dyYXBwZWQodG9KUyhqc0NvbnRleHQpLT52bSgpLCB0b0pTKHRvSlMoanNDb250ZXh0
KSwganNOb3RpZmljYXRpb24pKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+bm90aWZpY2F0aW9uSURGb3JUZXN0aW5nKG5vdGlmaWNh
dGlvbik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG5vdGlmaWNh
dGlvbi0+aWRlbnRpZmllcigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oanNDb250ZXh0KTsK
ICAgICBVTlVTRURfUEFSQU0oanNOb3RpZmljYXRpb24pOwotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCA1YTRm
NmE4NzliMTMuLjc1ZDllNTkzOTk3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKQEAgLTEwNiw3ICsxMDYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgc2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXZWJQYWdlKiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9pZCByZW1v
dmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXZWJQYWdlKik7Ci0gICAgdWludDY0X3Qg
d2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gd2ViTm90aWZpY2F0aW9uSUQoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KTsKICAgICBSZWY8QVBJOjpEYXRhPiBjcmVhdGVXZWJEYXRhRnJvbVVpbnQ4QXJyYXkoSlNDb250
ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3Qs
IFN0cmluZz4gRG9jdW1lbnRJRFRvVVJMTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcAppbmRleCA5YTIwMTg5MmIxYzEuLjQ2NmUwNmI5YzllMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKQEAgLTUxLDE0ICs1MSw2IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi1z
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVOb3RpZmljYXRpb25JRCgpCi17Ci0gICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZU5vdGlmaWNhdGlvbklEID0gMTsKLSAgICByZXR1cm4gdW5pcXVlTm90aWZp
Y2F0aW9uSUQrKzsKLX0KLSNlbmRpZgotCiBjb25zdCBjaGFyKiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpzdXBwbGVtZW50TmFtZSgpCiB7CiAgICAgcmV0dXJuICJXZWJOb3RpZmljYXRpb25NYW5h
Z2VyIjsKQEAgLTEyOCwxOCArMTIwLDYgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpy
ZW1vdmVBbGxQZXJtaXNzaW9uc0ZvclRlc3RpbmcoKQogI2VuZGlmCiB9CiAKLXVpbnQ2NF90IFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXI6Om5vdGlmaWNhdGlvbklERm9yVGVzdGluZyhOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKLXsKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAo
IW5vdGlmaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG1fbm90aWZpY2F0
aW9uTWFwLmdldChub3RpZmljYXRpb24pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obm90aWZp
Y2F0aW9uKTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmROb3RpZmljYXRpb25NZXNzYWdl
KFdlYlByb2Nlc3MmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBXZWJQYWdlJiBwYWdlKQogewpAQCAt
MTUxLDIyICsxMzEsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kTm90aWZpY2F0
aW9uTWVzc2FnZShXZWJQcm9jZXNzJiBwcm9jZXNzLCBVJiYgbWVzc2EKIH0KICNlbmRpZiAvLyBF
TkFCTEUoTk9USUZJQ0FUSU9OUykKIAotYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93
KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQorYm9vbCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdl
KiBwYWdlKQogewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIGlmICghbm90aWZpY2F0
aW9uIHx8ICFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVk
KCkpCisgICAgaWYgKCFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICB1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCA9IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKTsKLSAgICBtX25vdGlmaWNhdGlv
bk1hcC5zZXQobm90aWZpY2F0aW9uLCBub3RpZmljYXRpb25JRCk7Ci0gICAgbV9ub3RpZmljYXRp
b25JRE1hcC5zZXQobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbik7Ci0gICAgCi0gICAgYXV0
byBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0aW9uLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuaXRlcmF0b3I7Ci0gICAgaXQt
PnZhbHVlLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAKLSAgICBhdXRvIG5vdGlmaWNhdGlvbkRh
dGEgPSBub3RpZmljYXRpb24tPmRhdGFXaXRob3V0Tm90aWZpY2F0aW9uSUQoKTsKLSAgICBub3Rp
ZmljYXRpb25EYXRhLm5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uSUQ7Ci0gICAgc2VuZE5v
dGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyOjpTaG93Tm90aWZpY2F0aW9uKFdURk1vdmUobm90aWZpY2F0aW9uRGF0
YSkpLCAqcGFnZSk7CisgICAgbV9ub3RpZmljYXRpb25JRE1hcC5zZXQobm90aWZpY2F0aW9uLmlk
ZW50aWZpZXIoKSwgJm5vdGlmaWNhdGlvbik7CisKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2Fn
ZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmRhdGEoKSksICpwYWdlKTsKICAgICByZXR1
cm4gdHJ1ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNzUs
NzIgKzE0OCw0NCBAQCBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdl
YlBhZ2UqIHBhZ2UpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmlj
YXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJ
Q0FUSU9OUykKLSAgICBpZiAoIW5vdGlmaWNhdGlvbiB8fCAhcGFnZS0+Y29yZVBhZ2UoKS0+c2V0
dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQorICAgIGlmICghcGFnZS0+Y29yZVBhZ2Uo
KS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBtX25vdGlmaWNhdGlvbk1hcC5nZXQo
bm90aWZpY2F0aW9uKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpDYW5jZWxOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uSUQpLCAqcGFnZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKLSNlbmRpZgotfQogCi12b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBXZWJQYWdlKiBwYWdlKQotewotI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3Rp
ZmljYXRpb25Db250ZXh0TWFwLmZpbmQoY29udGV4dCk7Ci0gICAgaWYgKGl0ID09IG1fbm90aWZp
Y2F0aW9uQ29udGV4dE1hcC5lbmQoKSkKKyAgICBhdXRvIG1hcHBlZE5vdGlmaWNhdGlvbiA9IG1f
bm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpOworICAgIGlm
ICghbWFwcGVkTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKG1hcHBl
ZE5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9uKTsKIAotICAgIFZlY3Rvcjx1aW50NjRfdD4m
IG5vdGlmaWNhdGlvbklEcyA9IGl0LT52YWx1ZTsKLSAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2Fn
ZShtX3Byb2Nlc3MsIE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCAqcGFnZSk7Ci0gICAgc2l6ZV90
IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7Ci0gICAg
ICAgIGlmICghbm90aWZpY2F0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG5v
dGlmaWNhdGlvbi0+ZmluYWxpemUoKTsKLSAgICAgICAgbV9ub3RpZmljYXRpb25NYXAucmVtb3Zl
KG5vdGlmaWNhdGlvbik7Ci0gICAgfQotICAgIAotICAgIG1fbm90aWZpY2F0aW9uQ29udGV4dE1h
cC5yZW1vdmUoaXQpOworICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVz
c2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFnZSk7CiAjZWxzZQotICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBV
TlVTRURfUEFSQU0ocGFnZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBX
ZWJQYWdlKiBwYWdlKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90
aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogewog
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIFJlZlB0ciBwcm90ZWN0ZWROb3RpZmljYXRp
b24geyBub3RpZmljYXRpb24gfTsKKyAgICBSZWYgcHJvdGVjdGVkTm90aWZpY2F0aW9uIHsgbm90
aWZpY2F0aW9uIH07CiAKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IG1fbm90aWZpY2F0
aW9uTWFwLnRha2Uobm90aWZpY2F0aW9uKTsKLSAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQorICAg
IGF1dG8gdGFrZW5Ob3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRha2Uobm90aWZp
Y2F0aW9uLmlkZW50aWZpZXIoKSk7CisgICAgaWYgKCF0YWtlbk5vdGlmaWNhdGlvbikKICAgICAg
ICAgcmV0dXJuOworICAgIEFTU0VSVCh0YWtlbk5vdGlmaWNhdGlvbiA9PSAmbm90aWZpY2F0aW9u
KTsKIAotICAgIG1fbm90aWZpY2F0aW9uSURNYXAucmVtb3ZlKG5vdGlmaWNhdGlvbklEKTsKLSAg
ICByZW1vdmVOb3RpZmljYXRpb25Gcm9tQ29udGV4dE1hcChub3RpZmljYXRpb25JRCwgbm90aWZp
Y2F0aW9uKTsKLSAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3NhZ2Vz
OjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkRpZERlc3Ryb3lOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uSUQpLCAqcGFnZSk7CisgICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2Uo
bV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpE
aWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkpLCAqcGFnZSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlKTsKICNlbmRpZgogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNo
b3dOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRp
b25JRCkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIWlzTm90aWZpY2F0
aW9uSURWYWxpZChub3RpZmljYXRpb25JRCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKICAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdl
dChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgIHJldHVy
bjsKQEAgLTI1MSwxMiArMTk2LDkgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRT
aG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCi0gICAgaWYgKCFpc05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9u
SUQpKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmlj
YXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYg
KCFub3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTI2OSwyMiArMjExLDE3IEBAIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0
aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlvbklEcykKIHsKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKICAgICBzaXplX3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICB1aW50
NjRfdCBub3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbklEc1tpXTsKLSAgICAgICAgaWYgKCFp
c05vdGlmaWNhdGlvbklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQotICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb25JRHNbaV07CiAK
ICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRp
b25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEKTsKICAgICAgICAgaWYgKCFub3RpZmljYXRpb24p
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtX25vdGlmaWNhdGlvbk1hcC5yZW1v
dmUobm90aWZpY2F0aW9uKTsKLSAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRN
YXAobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5nZXQoKSk7Ci0KICAgICAgICAgbm90aWZp
Y2F0aW9uLT5kaXNwYXRjaENsb3NlRXZlbnQoKTsKICAgICB9CiAjZWxzZQpAQCAtMjkyLDE4ICsy
MjksNCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsb3NlTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZgogI2VuZGlmCiB9CiAKLSNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVtb3ZlTm90aWZp
Y2F0aW9uRnJvbUNvbnRleHRNYXAodWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQotewotICAgIC8vIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9y
IG1hbmFnaW5nIHRoZSBoYXNoIG1hcHMuCi0gICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRl
cmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChub3RpZmljYXRpb24tPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKGl0ICE9IG1fbm90aWZpY2F0aW9u
Q29udGV4dE1hcC5lbmQoKSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gaXQtPnZhbHVlLmZpbmQobm90
aWZpY2F0aW9uSUQpOwotICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgaXQtPnZh
bHVlLnJlbW92ZShpbmRleCk7Ci0gICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAg
IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5yZW1vdmUoaXQpOwotfQotI2VuZGlmCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDZlZTk0
ZjU2YjAzYS4uMmI4MGJlZjRkY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkNs
aWVudC5oPgorI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
NTMsMTEgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVt
ZW50TmFtZSgpOwogICAgIAotICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24qLCBX
ZWJQYWdlKik7Ci0gICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwgV2ViUGFn
ZSopOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJQYWdlKik7CisgICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlv
biYsIFdlYlBhZ2UqKTsKKyAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmljYXRpb24mLCBX
ZWJQYWdlKik7CisKICAgICAvLyBUaGlzIGNhbGxiYWNrIGNvbWVzIGZyb20gV2ViQ29yZSwgbm90
IG1lc3NhZ2VkIGZyb20gdGhlIFVJIHByb2Nlc3MuCi0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiosIFdlYlBhZ2UqKTsKKyAgICB2b2lkIGRpZERl
c3Ryb3lOb3RpZmljYXRpb24oV2ViQ29yZTo6Tm90aWZpY2F0aW9uJiwgV2ViUGFnZSopOwogCiAg
ICAgdm9pZCBkaWRVcGRhdGVOb3RpZmljYXRpb25EZWNpc2lvbihjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZywgYm9vbCBhbGxvd2VkKTsKIApAQCAtNjUsNyArNjYsNiBAQCBwdWJsaWM6CiAgICAg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIHBvbGljeUZvck9yaWdpbihj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykgY29uc3Q7CiAKICAgICB2b2lkIHJlbW92ZUFsbFBl
cm1pc3Npb25zRm9yVGVzdGluZygpOwotICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklERm9yVGVz
dGluZyhXZWJDb3JlOjpOb3RpZmljYXRpb24qKTsKIAogcHJpdmF0ZToKICAgICAvLyBXZWJQcm9j
ZXNzU3VwcGxlbWVudApAQCAtNzUsMjcgKzc1LDE3IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVt
ZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24odWlu
dDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24odWlu
dDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyk7CisgICAgdm9pZCBkaWRTaG93
Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgZGlk
Q2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9p
ZCBkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG5vdGlmaWNhdGlv
bklEcyk7CiAgICAgdm9pZCBkaWRSZW1vdmVOb3RpZmljYXRpb25EZWNpc2lvbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG9yaWdpblN0cmluZ3MpOwotICAgIAotI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQotICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAodWludDY0X3Qg
bm90aWZpY2F0aW9uSUQsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopOwotI2VuZGlmCiAKICAgICBX
ZWJQcm9jZXNzJiBtX3Byb2Nlc3M7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbj4sIHVpbnQ2NF90PiBO
b3RpZmljYXRpb25NYXA7Ci0gICAgTm90aWZpY2F0aW9uTWFwIG1fbm90aWZpY2F0aW9uTWFwOwot
ICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbj4+IE5vdGlmaWNhdGlvbklETWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKICAgICBO
b3RpZmljYXRpb25JRE1hcCBtX25vdGlmaWNhdGlvbklETWFwOwogICAgIAotICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4sIFZlY3Rvcjx1
aW50NjRfdD4+IE5vdGlmaWNhdGlvbkNvbnRleHRNYXA7Ci0gICAgTm90aWZpY2F0aW9uQ29udGV4
dE1hcCBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXA7Ci0gICAgCiAgICAgSGFzaE1hcDxTdHJpbmcs
IGJvb2w+IG1fcGVybWlzc2lvbnNNYXA7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBlM2IzMTg3MDlkNWQuLjIxNjg4ZTky
ZjRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmlu
CkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgRGlkU2hvd05vdGlmaWNhdGlvbih1
aW50NjRfdCBub3RpZmljYXRpb25JRCk7Ci0gICAgRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhWZWN0b3I8dWlu
dDY0X3Q+IG5vdGlmaWNhdGlvbklEcyk7CisgICAgRGlkU2hvd05vdGlmaWNhdGlvbihTdHJpbmcg
bm90aWZpY2F0aW9uSUQpOworICAgIERpZENsaWNrTm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmlj
YXRpb25JRCk7CisgICAgRGlkQ2xvc2VOb3RpZmljYXRpb25zKFZlY3RvcjxTdHJpbmc+IG5vdGlm
aWNhdGlvbklEcyk7CiAgICAgRGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24oU3RyaW5nIG9y
aWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICBEaWRSZW1vdmVOb3RpZmljYXRpb25EZWNp
c2lvbnMoVmVjdG9yPFN0cmluZz4gb3JpZ2luU3RyaW5ncyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmlj
YXRpb25DbGllbnQuY3BwCmluZGV4IGNhZTUwOTVkMzk2ZS4uYzI0ZWQzN2Q3NmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcApAQCAtNDYsMjIgKzQ2LDE3IEBAIFdlYk5vdGlm
aWNhdGlvbkNsaWVudDo6fldlYk5vdGlmaWNhdGlvbkNsaWVudCgpCiB7CiB9CiAKLWJvb2wgV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQorYm9v
bCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24p
CiB7CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlcj4oKS0+c2hvdyhub3RpZmljYXRpb24sIG1fcGFnZSk7CiB9CiAKLXZv
aWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiYgbm90
aWZpY2F0aW9uKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2FuY2VsKG5vdGlmaWNhdGlvbiwgbV9wYWdlKTsKIH0K
IAotdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+Y2xlYXJOb3RpZmljYXRpb25z
KGNvbnRleHQsIG1fcGFnZSk7Ci19Ci0KLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3Rp
ZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit2b2lk
IFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1
cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlcj4oKS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bihub3RpZmljYXRpb24sIG1fcGFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgK
aW5kZXggYTMxNDA5MDkwZDY0Li5kY2QyMDg5NDYyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmgKQEAgLTQ1LDEwICs0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJOb3Rp
ZmljYXRpb25DbGllbnQoKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3coV2ViQ29yZTo6Tm90
aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwotICAgIHZvaWQgbm90aWZpY2F0aW9uT2Jq
ZWN0RGVzdHJveWVkKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOworICAgIGJvb2wg
c2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbChX
ZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbk9i
amVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24mKSBvdmVycmlkZTsKICAgICB2b2lk
IG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQZXJtaXNz
aW9uSGFuZGxlciYmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA5YmRhMjc3YWEz
YmQuLjkxNWMzYzFhMzc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE3IEBACisyMDIxLTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3RyaW5nIGlu
c3RlYWQgb2YgYSB1aW50NjRfdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAg
IChXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpjYW5jZWwpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmlj
YXRpb25PYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpj
bGVhck5vdGlmaWNhdGlvbnMpOiBEZWxldGVkLgorCiAyMDIxLTEyLTE5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjbGllbnQgbGF5ZXIgcGx1
bWJpbmcgZm9yIGNsYXNzaWZ5aW5nIG1vZGFsIGNvbnRhaW5lciBjb250cm9scwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQuaAppbmRleCAwMmYxZGIwNDNkODguLmU1NzE1M2Y1ZmFlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTQ1LDEwICs0NSw5IEBAIHB1YmxpYzoKICAgICB1
aW50NjRfdCBub3RpZmljYXRpb25JREZvclRlc3RpbmcoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKik7
CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJy
aWRlOwotICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJD
b3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlkZTsKKyAgICBib29sIHNob3coV2ViQ29yZTo6Tm90
aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZmljYXRpb25Db250
cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGVybWlzc2lvbkhhbmRsZXImJikgb3Zl
cnJpZGU7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNr
UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7CkBA
IC01Nyw5ICs1Niw2IEBAIHByaXZhdGU6CiAKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiAgICAg
SGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwgUmV0YWluUHRyPFdlYk5vdGlm
aWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uTWFwOwotICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4sIFZlY3RvcjxSZXRhaW5QdHI8
V2ViTm90aWZpY2F0aW9uPj4+IE5vdGlmaWNhdGlvbkNvbnRleHRNYXA7Ci0gICAgTm90aWZpY2F0
aW9uQ29udGV4dE1hcCBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXA7CiAKICAgICBib29sIG1fZXZl
clJlcXVlc3RlZFBlcm1pc3Npb24geyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5tbQppbmRleCAzOWVkYzcyN2RkNWEuLmMwYWFkMDk5M2M4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlm
aWNhdGlvbkNsaWVudC5tbQpAQCAtNTgsNjIgKzU4LDM0IEBAIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dDo6V2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiB7CiB9CiAKLWJvb2wg
V2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQor
Ym9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24pCiB7CiAgICAgaWYgKCFbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gZ2VuZXJh
dGVOb3RpZmljYXRpb25JRCgpOwotICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5v
dGlmaWNhdGlvbiA9IGFkb3B0TlMoW1tXZWJOb3RpZmljYXRpb24gYWxsb2NdIGluaXRXaXRoQ29y
ZU5vdGlmaWNhdGlvbjpub3RpZmljYXRpb24gbm90aWZpY2F0aW9uSUQ6bm90aWZpY2F0aW9uSURd
KTsKLSAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCB3ZWJOb3RpZmljYXRp
b24pOwotCi0gICAgYXV0byBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZp
Y2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvcjxSZXRhaW5QdHI8V2ViTm90
aWZpY2F0aW9uPj4oKSkuaXRlcmF0b3I7Ci0gICAgaXQtPnZhbHVlLmFwcGVuZCh3ZWJOb3RpZmlj
YXRpb24pOworICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlmaWNhdGlvbiA9
IGFkb3B0TlMoW1tXZWJOb3RpZmljYXRpb24gYWxsb2NdIGluaXRXaXRoQ29yZU5vdGlmaWNhdGlv
bjombm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOm5vdGlmaWNhdGlvbklEXSk7CisgICAgbV9u
b3RpZmljYXRpb25NYXAuc2V0KCZub3RpZmljYXRpb24sIHdlYk5vdGlmaWNhdGlvbik7CiAKICAg
ICBbW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHNob3dOb3RpZmljYXRpb246d2Vi
Tm90aWZpY2F0aW9uLmdldCgpIGZyb21XZWJWaWV3Om1fd2ViVmlld107CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewotICAgIFdlYk5vdGlmaWNhdGlvbiAqd2ViTm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbikuZ2V0KCk7CisgICAg
V2ViTm90aWZpY2F0aW9uICp3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbk1hcC5nZXQo
Jm5vdGlmaWNhdGlvbikuZ2V0KCk7CiAgICAgaWYgKCF3ZWJOb3RpZmljYXRpb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gY2FuY2Vs
Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbl07CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKLXsKLSAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQoY29udGV4
dCk7Ci0gICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZmluYWxpemVkTm90aWZpY2F0aW9uSURzID0gY3Jl
YXRlTlNBcnJheShpdC0+dmFsdWUsIFsmXSAoYXV0byYgbm90aWZpY2F0aW9uKSB7Ci0gICAgICAg
IGF1dG8mIGNvcmVOb3RpZmljYXRpb24gPSAqY29yZShub3RpZmljYXRpb24uZ2V0KCkpOwotICAg
ICAgICBjb3JlTm90aWZpY2F0aW9uLmZpbmFsaXplKCk7Ci0gICAgICAgIG1fbm90aWZpY2F0aW9u
TWFwLnJlbW92ZSgmY29yZU5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHJldHVybiBAKFtub3RpZmlj
YXRpb24gbm90aWZpY2F0aW9uSURdKTsKLSAgICB9KTsKLQotICAgIFtbbV93ZWJWaWV3IF9ub3Rp
ZmljYXRpb25Qcm92aWRlcl0gY2xlYXJOb3RpZmljYXRpb25zOmZpbmFsaXplZE5vdGlmaWNhdGlv
bklEcy5nZXQoKV07Ci0gICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLnJlbW92ZShpdCk7Ci19
Ci0KLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95
ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQogewotICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlmaWNhdGlvbiA9IG1f
bm90aWZpY2F0aW9uTWFwLnRha2Uobm90aWZpY2F0aW9uKTsKKyAgICBSZXRhaW5QdHI8V2ViTm90
aWZpY2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbk1hcC50YWtlKCZub3Rp
ZmljYXRpb24pOwogICAgIGlmICghd2ViTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQobm90aWZpY2F0aW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVChpdCAhPSBtX25vdGlmaWNh
dGlvbkNvbnRleHRNYXAuZW5kKCkpOwotICAgIHNpemVfdCBpbmRleCA9IGl0LT52YWx1ZS5maW5k
KHdlYk5vdGlmaWNhdGlvbik7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBp
dC0+dmFsdWUucmVtb3ZlKGluZGV4KTsKLSAgICBpZiAoaXQtPnZhbHVlLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLnJlbW92ZShpdCk7Ci0KICAgICBbW21fd2Vi
VmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIG5vdGlmaWNhdGlvbkRlc3Ryb3llZDp3ZWJOb3Rp
ZmljYXRpb24uZ2V0KCldOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmI0OWE5NmRiNTA1Li40NTBlNWE2MjVhNzIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0ZWFkIG9m
IGEgdWludDY0X3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgV2hlcmUgcG9zc2libGUsIHVzZSB0aGUgU3RyaW5nIFVVSUQgaWRlbnRpZmll
ci4KKyAgICAgICAgVGhpcyBnZXRzIHJpZCBvZiBsb3RzIG9mIHdlaXJkIG1hcHMgYW5kIGNsZWFu
cyB1cCBmbGFreSBzaXR1YXRpb25zIHRoYXQgY291bGQgb2NjYXNpb25hbGx5IG9jY3VyLgorCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3RpZmlj
YXRpb25DbGljayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGljayk6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUpOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRp
b25Qcm92aWRlci5jcHA6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjp+
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6c2hvd1dlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNh
dGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXVFI6OldlYk5v
dGlmaWNhdGlvblByb3ZpZGVyOjphZGROb3RpZmljYXRpb25NYW5hZ2VyKToKKyAgICAgICAgKFdU
Ujo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIpOgor
ICAgICAgICAoV1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmlj
YXRpb25DbGljayk6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZXNl
dCk6CisgICAgICAgIChXVFI6OnJlbW92ZUdsb2JhbElERnJvbUlETWFwKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisKIDIw
MjEtMTItMjAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBpdCBwb3NzaWJsZSB0byBlbmFibGUgbG9nIGNoYW5uZWxzIGluIFdlYktpdFRlc3RS
dW5uZXIgYW5kIER1bXBSZW5kZXJUcmVlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDY3YTdkMTAwYWI5
Ny4uN2U4ZWQ0MjBiYjdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNjYzLDkgKzY2Myw5IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTZXRWaWV3U2l6ZShkb3VibGUgd2lkdGgsIGRvdWJsZSBo
ZWlnaHQpCiAgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3Rpbmco
cGFnZSgpLT5wYWdlKCksIHRvV0soIlNldFZpZXdTaXplIikuZ2V0KCksIGJvZHkuZ2V0KCksIDAp
OwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGljayh1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RT
aW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQog
ewotICAgIHBvc3RQYWdlTWVzc2FnZSgiU2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayIsIGFk
b3B0V0soV0tVSW50NjRDcmVhdGUobm90aWZpY2F0aW9uSUQpKSk7CisgICAgcG9zdFBhZ2VNZXNz
YWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwgbm90aWZpY2F0aW9uSUQpOwogfQog
CiB2b2lkIEluamVjdGVkQnVuZGxlOjpwb3N0U2V0QWRkc1Zpc2l0ZWRMaW5rcyhib29sIGFkZHNW
aXNpdGVkTGlua3MpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggNjgzZmQ4NTQ3NTdhLi42MjQ3NTY4OTgzYmMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFNl
dEJhY2tpbmdTY2FsZUZhY3Rvcihkb3VibGUpOwogICAgIHZvaWQgcG9zdFNldFdpbmRvd0lzS2V5
KGJvb2wpOwogICAgIHZvaWQgcG9zdFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhl
aWdodCk7Ci0gICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayh1aW50NjRf
dCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBwb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25D
bGljayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBwb3N0U2V0QWRkc1Zp
c2l0ZWRMaW5rcyhib29sKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYTMy
ODBkZjE2Y2Q0Li5jMzNhOGU1MGQ0MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtODgxLDcgKzg4MSw5IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogdm9p
ZCBUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKEpTVmFsdWVSZWYgbm90
aWZpY2F0aW9uKQogewogICAgIGF1dG8mIGluamVjdGVkQnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpOwotICAgIGluamVjdGVkQnVuZGxlLnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrKFdLQnVuZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoaW5qZWN0ZWRCdW5kbGUuYnVu
ZGxlKCksIG1haW5GcmFtZUpTQ29udGV4dCgpLCBub3RpZmljYXRpb24pKTsKKworICAgIGF1dG8g
bm90aWZpY2F0aW9uSUQgPSBhZG9wdFdLKFdLQnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKGlu
amVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBtYWluRnJhbWVKU0NvbnRleHQoKSwgbm90aWZpY2F0aW9u
KSk7CisgICAgaW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
bm90aWZpY2F0aW9uSUQuZ2V0KCkpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0
aW9uUGVybWlzc2lvbihib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IDU2OWI5OGE1MjM5NC4uNjE5ZDY2ZTJkYjg0IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMjM0Niw3ICsyMzQ2LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdChX
S1BhZ2VSZWYpCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVtb3ZlU3dpcGVTbmFwc2hv
dCgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBUZXN0Q29udHJvbGxlcjo6c2ltdWxh
dGVXZWJOb3RpZmljYXRpb25DbGljayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCkKIHsKICAg
ICBtX3dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2so
bWFpbldlYlZpZXcoKS0+cGFnZSgpLCBub3RpZmljYXRpb25JRCk7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMDdmNzUwMzViZjMxLi4wNWRjNDc5MjJiYTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBiZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmVmb3JlVW5sb2FkUmV0dXJuVmFsdWU7IH0KICAgICB2b2lkIHNldEJlZm9yZVVu
bG9hZFJldHVyblZhbHVlKGJvb2wgdmFsdWUpIHsgbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZSA9
IHZhbHVlOyB9CiAKLSAgICB2b2lkIHNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sodWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbi4KICAg
ICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNzJmYTgyYmJjMDEwLi4yYmY0YzE5OWU0OGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0zOTAsNyAr
MzkwLDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICB9CiAKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNpbXVsYXRlV2ViTm90aWZpY2F0
aW9uQ2xpY2siKSkgewotICAgICAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IHVpbnQ2NFZh
bHVlKG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQgPSBz
dHJpbmdWYWx1ZShtZXNzYWdlQm9keSk7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5zaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKG5vdGlmaWNhdGlvbklEKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKaW5kZXggY2Q1ZmM2NjIxNWE0Li41OGUxZmFmNWJlYmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKIAorI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgog
I2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVBcnJheS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05v
dGlmaWNhdGlvbi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaD4K
QEAgLTY2LDggKzY3LDggQEAgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OldlYk5vdGlmaWNhdGlv
blByb3ZpZGVyKCkKIAogV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6On5XZWJOb3RpZmljYXRpb25Q
cm92aWRlcigpCiB7Ci0gICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9vd25lZE5vdGlmaWNhdGlv
bnMpCi0gICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG1hbmFnZXIua2V5
LmdldCgpLCBudWxscHRyKTsKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX2tub3duTWFuYWdl
cnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG1hbmFnZXIuZ2V0
KCksIG51bGxwdHIpOwogfQogCiBXS05vdGlmaWNhdGlvblByb3ZpZGVyVjAgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI6OnByb3ZpZGVyKCkKQEAgLTg5LDQ0ICs5MCwyNiBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvblByb3ZpZGVyOjpzaG93V2ViTm90aWZpY2F0aW9uKFdLUGFnZVJlZiBwYWdlLCBXS05v
dGlmaWNhdGlvbgogewogICAgIGF1dG8gY29udGV4dCA9IFdLUGFnZUdldENvbnRleHQocGFnZSk7
CiAgICAgYXV0byBub3RpZmljYXRpb25NYW5hZ2VyID0gV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9u
TWFuYWdlcihjb250ZXh0KTsKLSAgICB1aW50NjRfdCBpZCA9IFdLTm90aWZpY2F0aW9uR2V0SUQo
bm90aWZpY2F0aW9uKTsKKyAgICBBU1NFUlQobV9rbm93bk1hbmFnZXJzLmNvbnRhaW5zKG5vdGlm
aWNhdGlvbk1hbmFnZXIpKTsKIAotICAgIEFTU0VSVChtX293bmVkTm90aWZpY2F0aW9ucy5jb250
YWlucyhub3RpZmljYXRpb25NYW5hZ2VyKSk7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX293bmVk
Tm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbk1hbmFnZXIpLT52YWx1ZS5hZGQoaWQpOwot
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAg
YXV0byBhZGRSZXN1bHQyID0gbV9vd25pbmdNYW5hZ2VyLnNldChpZCwgbm90aWZpY2F0aW9uTWFu
YWdlcik7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQyLCBhZGRSZXN1bHQyLmlzTmV3RW50
cnkpOwotICAgIGF1dG8gYWRkUmVzdWx0MyA9IG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklE
TWFwLmFkZChzdGQ6Om1ha2VfcGFpcihwYWdlLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRMb2Nh
bElERm9yVGVzdGluZyhub3RpZmljYXRpb25NYW5hZ2VyLCBub3RpZmljYXRpb24pKSwgaWQpOwot
ICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0MywgYWRkUmVzdWx0My5pc05ld0VudHJ5KTsKKyAg
ICB1aW50NjRfdCBpZGVudGlmaWVyID0gV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRpb24p
OworICAgIGF1dG8gY29yZUlkZW50aWZpZXIgPSBhZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNv
cmVJREZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSk7CiAKLSAgICBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uTWFuYWdlciwgaWQpOwot
fQorICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9vd25pbmdNYW5hZ2VyLnNldCh0b1dURlN0cmluZyhj
b3JlSWRlbnRpZmllci5nZXQoKSksIG5vdGlmaWNhdGlvbk1hbmFnZXIpOworICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKLXN0YXRpYyB2b2lkIHJl
bW92ZUdsb2JhbElERnJvbUlETWFwKEhhc2hNYXA8c3RkOjpwYWlyPFdLUGFnZVJlZiwgdWludDY0
X3Q+LCB1aW50NjRfdD4mIG1hcCwgdWludDY0X3QgaWQpCi17Ci0gICAgZm9yIChhdXRvIGl0ZXIg
PSBtYXAuYmVnaW4oKTsgaXRlciAhPSBtYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICBpZiAo
aXRlci0+dmFsdWUgPT0gaWQpIHsKLSAgICAgICAgICAgIG1hcC5yZW1vdmUoaXRlcik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbk1hbmFnZXIsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvblByb3ZpZGVyOjpjbG9zZVdlYk5vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvblJlZiBub3Rp
ZmljYXRpb24pCiB7Ci0gICAgdWludDY0X3QgaWQgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlm
aWNhdGlvbik7Ci0gICAgQVNTRVJUKG1fb3duaW5nTWFuYWdlci5jb250YWlucyhpZCkpOwotICAg
IGF1dG8gbm90aWZpY2F0aW9uTWFuYWdlciA9IG1fb3duaW5nTWFuYWdlci5nZXQoaWQpOwotCi0g
ICAgQVNTRVJUKG1fb3duZWROb3RpZmljYXRpb25zLmNvbnRhaW5zKG5vdGlmaWNhdGlvbk1hbmFn
ZXIpKTsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX293bmVkTm90aWZpY2F0aW9ucy5maW5kKG5vdGlm
aWNhdGlvbk1hbmFnZXIpLT52YWx1ZS5yZW1vdmUoaWQpOwotICAgIEFTU0VSVF9VTlVTRUQoc3Vj
Y2Vzcywgc3VjY2Vzcyk7Ci0gICAgbV9vd25pbmdNYW5hZ2VyLnJlbW92ZShpZCk7CisgICAgYXV0
byBpZGVudGlmaWVyID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS05vdGlmaWNhdGlvbkNvcHlDb3Jl
SURGb3JUZXN0aW5nKG5vdGlmaWNhdGlvbikpLmdldCgpKTsKIAotICAgIHJlbW92ZUdsb2JhbElE
RnJvbUlETWFwKG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLCBpZCk7CisgICAgYXV0
byBub3RpZmljYXRpb25NYW5hZ2VyID0gbV9vd25pbmdNYW5hZ2VyLnRha2UoaWRlbnRpZmllcik7
CisgICAgQVNTRVJUKG5vdGlmaWNhdGlvbk1hbmFnZXIpOworICAgIEFTU0VSVChtX2tub3duTWFu
YWdlcnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFuYWdlcikpOwogCi0gICAgYXV0byB3a0lEID0g
YWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShpZCkpOworICAgIGF1dG8gd2tJRCA9IGFkb3B0V0soV0tV
SW50NjRDcmVhdGUoV0tOb3RpZmljYXRpb25HZXRJRChub3RpZmljYXRpb24pKSk7CiAgICAgYXV0
byBhcnJheSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7CiAgICAgV0tBcnJheUFw
cGVuZEl0ZW0oYXJyYXkuZ2V0KCksIHdrSUQuZ2V0KCkpOwogICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbk1hbmFnZXIsIGFy
cmF5LmdldCgpKTsKQEAgLTEzNCwyMyArMTE3LDI4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI6OmNsb3NlV2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlv
CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIo
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIpCiB7Ci0gICAgbV9vd25lZE5vdGlmaWNh
dGlvbnMuYWRkKG1hbmFnZXIsIEhhc2hTZXQ8dWludDY0X3Q+KCkpOworICAgIEFTU0VSVCghbV9r
bm93bk1hbmFnZXJzLmNvbnRhaW5zKG1hbmFnZXIpKTsKKyAgICBtX2tub3duTWFuYWdlcnMuYWRk
KG1hbmFnZXIpOwogfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVOb3Rp
ZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyKQogewotICAg
IGF1dG8gaXRlcmF0b3IgPSBtX293bmVkTm90aWZpY2F0aW9ucy5maW5kKG1hbmFnZXIpOwotICAg
IEFTU0VSVChpdGVyYXRvciAhPSBtX293bmVkTm90aWZpY2F0aW9ucy5lbmQoKSk7Ci0gICAgYXV0
byB0b1JlbW92ZSA9IGl0ZXJhdG9yLT52YWx1ZTsKLSAgICBXS1JldGFpblB0cjxXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWY+IGd1YXJkKG1hbmFnZXIpOwotICAgIG1fb3duZWROb3RpZmljYXRpb25z
LnJlbW92ZShpdGVyYXRvcik7CisgICAgYXV0byBwcm90ZWN0ZWRNYW5hZ2VyID0gbV9rbm93bk1h
bmFnZXJzLnRha2UobWFuYWdlcik7CisgICAgQVNTRVJUKHByb3RlY3RlZE1hbmFnZXIpOworCisg
ICAgYXV0byB0b1JlbW92ZSA9IFZlY3RvcjxTdHJpbmc+IHsgfTsKKyAgICBmb3IgKGF1dG8mIGl0
ZXJhdG9yIDogbV9vd25pbmdNYW5hZ2VyKSB7CisgICAgICAgIGlmIChpdGVyYXRvci52YWx1ZSAh
PSBtYW5hZ2VyKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHRvUmVtb3ZlLmFwcGVu
ZChpdGVyYXRvci5rZXkpOworICAgIH0KKwogICAgIGF1dG8gYXJyYXkgPSBhZG9wdFdLKFdLTXV0
YWJsZUFycmF5Q3JlYXRlKCkpOwotICAgIGZvciAodWludDY0X3Qgbm90aWZpY2F0aW9uSUQgOiB0
b1JlbW92ZSkgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBtX293bmluZ01hbmFnZXIucmVtb3Zl
KG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNz
KTsKLSAgICAgICAgcmVtb3ZlR2xvYmFsSURGcm9tSURNYXAobV9sb2NhbFRvR2xvYmFsTm90aWZp
Y2F0aW9uSURNYXAsIG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0o
YXJyYXkuZ2V0KCksIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobm90aWZpY2F0aW9uSUQpKS5nZXQo
KSk7CisgICAgZm9yIChhdXRvJiBpZGVudGlmaWVyIDogdG9SZW1vdmUpIHsKKyAgICAgICAgV0tB
cnJheUFwcGVuZEl0ZW0oYXJyYXkuZ2V0KCksIHRvV0soaWRlbnRpZmllcikuZ2V0KCkpOworICAg
ICAgICBtX293bmluZ01hbmFnZXIucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KKwogICAgIFdL
Tm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKG1hbmFnZXIs
IGFycmF5LmdldCgpKTsKIH0KIApAQCAtMTYwLDI4ICsxNDgsMjMgQEAgV0tEaWN0aW9uYXJ5UmVm
IFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiAgICAg
cmV0dXJuIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25Qcm92aWRlcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYgcGFn
ZSwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
OjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbm90
aWZpY2F0aW9uSUQpCiB7Ci0gICAgQVNTRVJUKG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklE
TWFwLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKHBhZ2UsIG5vdGlmaWNhdGlvbklEKSkpOwotICAg
IGF1dG8gZ2xvYmFsSUQgPSBtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcC5nZXQoc3Rk
OjptYWtlX3BhaXIocGFnZSwgbm90aWZpY2F0aW9uSUQpKTsKLSAgICBBU1NFUlQobV9vd25pbmdN
YW5hZ2VyLmNvbnRhaW5zKGdsb2JhbElEKSk7Ci0gICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJv
dmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihtX293bmluZ01hbmFnZXIuZ2V0KGdsb2JhbElEKSwg
Z2xvYmFsSUQpOworICAgIGF1dG8gaWRlbnRpZmllciA9IHRvV1RGU3RyaW5nKG5vdGlmaWNhdGlv
bklEKTsKKyAgICBBU1NFUlQobV9vd25pbmdNYW5hZ2VyLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KworICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25f
YihtX293bmluZ01hbmFnZXIuZ2V0KGlkZW50aWZpZXIpLCBub3RpZmljYXRpb25JRCk7CiB9CiAK
IHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlc2V0KCkKIHsKLSAgICBmb3IgKGF1dG8m
IG5vdGlmaWNhdGlvblBhaXIgOiBtX293bmVkTm90aWZpY2F0aW9ucykgewotICAgICAgICBpZiAo
bm90aWZpY2F0aW9uUGFpci52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsK
KyAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsKICAgICAgICAgYXV0
byBhcnJheSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7Ci0gICAgICAgIGZvciAo
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQgOiBub3RpZmljYXRpb25QYWlyLnZhbHVlKQotICAgICAg
ICAgICAgV0tBcnJheUFwcGVuZEl0ZW0oYXJyYXkuZ2V0KCksIGFkb3B0V0soV0tVSW50NjRDcmVh
dGUobm90aWZpY2F0aW9uSUQpKS5nZXQoKSk7Ci0KLSAgICAgICAgbm90aWZpY2F0aW9uUGFpci52
YWx1ZS5jbGVhcigpOwotICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENs
b3NlTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25QYWlyLmtleS5nZXQoKSwgYXJyYXkuZ2V0KCkp
OworICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgdG9XSyhpdGVyYXRvci5r
ZXkpLmdldCgpKTsKKyAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9z
ZU5vdGlmaWNhdGlvbnMoaXRlcmF0b3IudmFsdWUsIGFycmF5LmdldCgpKTsKICAgICB9CisKICAg
ICBtX293bmluZ01hbmFnZXIuY2xlYXIoKTsKLSAgICBtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRp
b25JRE1hcC5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAppbmRleCBjY2Y4YjFiY2U5
OTYuLjM5MjYxYmQ0MjY1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYktpdC9X
S1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBX
VFIgewogCkBAIC00NiwxNSArNDcsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTm90aWZp
Y2F0aW9uTWFuYWdlcihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpOwogICAgIFdLRGljdGlvbmFy
eVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogCi0gICAgdm9pZCBzaW11bGF0ZVdlYk5v
dGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAg
IHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVm
IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6Ci0gICAgLy8g
SW52ZXJzZXMgb2YgZWFjaCBvdGhlci4KLSAgICBIYXNoTWFwPFdLUmV0YWluUHRyPFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZj4sIEhhc2hTZXQ8dWludDY0X3Q+PiBtX293bmVkTm90aWZpY2F0aW9u
czsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fb3du
aW5nTWFuYWdlcjsKLQotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdLUGFnZVJlZiwgdWludDY0X3Q+
LCB1aW50NjRfdD4gbV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXA7CisgICAgSGFzaFNl
dDxXS1JldGFpblB0cjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+PiBtX2tub3duTWFuYWdlcnM7
CisgICAgSGFzaE1hcDxTdHJpbmcsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdN
YW5hZ2VyOwogfTsKIAogfQo=
</data>
<flag name="review"
          id="473431"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447753</attachid>
            <date>2021-12-21 14:53:09 -0800</date>
            <delta_ts>2021-12-21 18:33:02 -0800</delta_ts>
            <desc>PFL v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>82270</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOTgzZDE3MzExZmZlLi41ZDMyZGZlZjhlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMTItMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1h
a2UgTm90aWZpY2F0aW9uIGlkZW50aWZpZXJzIGJlIGEgVVVJRCBzdHJpbmcgaW5zdGVhZCBvZiBh
IHVpbnQ2NF90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ1MzQKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgIEFkZCBhIG5ldyBmb3JtIG9mIElkZW50aWZpZWQgdGhhdCB1c2VzIGEgVVVJRCBTdHJpbmcg
YXMgdGhlIGlkZW50aWZpZXIuCisgICAgICAgIAorICAgICAgICAqIHd0Zi9JZGVudGlmaWVkLmg6
CisgICAgICAgIChXVEY6OlVVSURJZGVudGlmaWVkOjpVVUlESWRlbnRpZmllZCk6CisKIDIwMjEt
MTItMjAgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJJRExdIGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50cygpIHNob3VsZCByZXR1cm4gYSBGaXhlZFZl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSWRlbnRpZmllZC5oIGIvU291cmNlL1dU
Ri93dGYvSWRlbnRpZmllZC5oCmluZGV4IDU3MjU1Y2FhNzJmNy4uNTZlOWUxN2E1NTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JZGVudGlmaWVkLmgKKysrIGIvU291cmNlL1dURi93dGYv
SWRlbnRpZmllZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VVSUQuaD4KIAogbmFt
ZXNwYWNlIFdURiB7CiAKQEAgLTEwNCw3ICsxMDUsMjcgQEAgcHJpdmF0ZToKICAgICB9CiB9Owog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2NsYXNzIFVVSURJZGVudGlmaWVkIDogcHVibGljIElk
ZW50aWZpZWRCYXNlPFN0cmluZywgVD4geworcHJvdGVjdGVkOgorICAgIFVVSURJZGVudGlmaWVk
KCkKKyAgICAgICAgOiBJZGVudGlmaWVkQmFzZTxTdHJpbmcsIFQ+KGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKSkKKyAgICB7CisgICAgfQorCisgICAgVVVJRElkZW50aWZpZWQoY29uc3QgVVVJ
RElkZW50aWZpZWQmIG90aGVyKQorICAgICAgICA6IElkZW50aWZpZWRCYXNlPFN0cmluZywgVD4o
b3RoZXIuaXNvbGF0ZWRDb3B5KCkpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IFVVSURJ
ZGVudGlmaWVkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKKyAgICAgICAgOiBJZGVudGlmaWVk
QmFzZTxTdHJpbmcsIFQ+KGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCisgICAgeworICAgIH0K
K307CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OklkZW50aWZpZWQ7CiB1c2lu
ZyBXVEY6OlRocmVhZFNhZmVJZGVudGlmaWVkOwordXNpbmcgV1RGOjpVVUlESWRlbnRpZmllZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMDhiMTQ1Y2MyNmQuLmU0NTlhZjljOWY1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM3IEBACisyMDIxLTEyLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIE5vdGlmaWNhdGlvbiBpZGVudGlmaWVycyBiZSBhIFVVSUQgc3Ry
aW5nIGluc3RlYWQgb2YgYSB1aW50NjRfdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBjb3ZlcmVkIGJ5IGV4
aXN0aW5nIHRlc3RzKQorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBOb3RpZmljYXRpb25z
IHdlcmUgdGFnZ2VkIHdpdGggYW4gaW4tV2ViQ29udGVudC1wcm9jZXNzLXVuaXF1ZSBpZGVudGlm
aWVyCisgICAgICAgIGFuZCBhbHNvIHRhZ2dlZCB3aXRoIGEgVUlQcm9jZXNzLXVuaXF1ZSBpZGVu
dGlmaWVyLgorICAgICAgICAKKyAgICAgICAgVGhlcmUgd2VyZSBtYXBzIGJldHdlZW4gdGhlc2Ug
dHdvIGlkZW50aWZpZXJzIGluIFdlYktpdCwgYW5kIGJvdGggb2YgdGhlbSB3ZXJlIGV4cG9zZWQg
dmlhIEFQSS9TUEkKKyAgICAgICAgKGUuZy4gdGhyb3VnaCB0aGUgaW5qZWN0ZWQgYnVuZGxlKSwg
bmVjZXNzaXRhdGluZyBtYXBzIGJldHdlZW4gdGhlbSBpbiBXS1RSIGFzIHdlbGwuCisgICAgICAg
IAorICAgICAgICBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGJ5IG1ha2luZyBhIFVVSUQgaWRlbnRp
ZmllciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHRoYXQgY2FuIGJlIHRyZWF0ZWQKKyAgICAg
ICAgYXMgdGhlIE9uZSBUcnVlIElkZW50aWZpZXIgd2l0aGluIFdlYktpdC4KKyAgICAgICAgCisg
ICAgICAgIFRoZXJlJ3MgZXhpc3RpbmcgU1BJIGNsaWVudHMgdGhhdCByZWx5IG9uIHRoZSBVSVBy
b2Nlc3MtdW5pcXVlIHVpbjY0X3QgaWRlbnRpZmllciwgc28gd2Ugc2FkbHkKKyAgICAgICAgY291
bGRuJ3QgZ2V0IHJpZCBvZiB0aGF0IGVudGlyZWx5LiBCdXQgdGhpcyBwYXRjaCBzdGlsbCBwdXRz
IHVzIGluIGEgbXVjaCBiZXR0ZXIgcGxhY2UuCisKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6
c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb246OmNsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb246OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkYXRh
V2l0aG91dE5vdGlmaWNhdGlvbklEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmlj
YXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbkRhdGE6OmRlY29kZSk6CisKIDIwMjEtMTItMjAgIEFsZXhleSBTaHZheWth
ICA8YXNodmF5a2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJJRExdIGNvbnZlcnRWYXJpYWRp
Y0FyZ3VtZW50cygpIHNob3VsZCByZXR1cm4gYSBGaXhlZFZlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCAy
ODE3ZTIxZjA2ZTQuLmVjNGE2ODg1NjZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTEwMiw3ICsxMDIsNyBA
QCB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpCiAgICAgICAgIGRpc3BhdGNoRXJyb3JFdmVudCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChjbGllbnQuc2hvdyh0aGlzKSkKKyAg
ICBpZiAoY2xpZW50LnNob3coKnRoaXMpKQogICAgICAgICBtX3N0YXRlID0gU2hvd2luZzsKIH0K
IApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgTm90aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU2hvd2luZzogewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRv
Y3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgICAgIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXI6OmZy
b20ocGFnZSktPmNsaWVudCgpLmNhbmNlbCh0aGlzKTsKKyAgICAgICAgICAgIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXI6OmZyb20ocGFnZSktPmNsaWVudCgpLmNhbmNlbCgqdGhpcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIENsb3NlZDoKQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lk
IE5vdGlmaWNhdGlvbjo6c3RvcCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0OjpzdG9wKCk7CiAKICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgTm90aWZpY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKS0+Y2xpZW50KCkubm90aWZpY2F0aW9uT2JqZWN0RGVz
dHJveWVkKHRoaXMpOworICAgICAgICBOb3RpZmljYXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2Up
LT5jbGllbnQoKS5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoKnRoaXMpOwogfQogCiB2b2lk
IE5vdGlmaWNhdGlvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQpAQCAtMjI1LDcgKzIy
NSw3IEBAIGJvb2wgTm90aWZpY2F0aW9uOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKICAgICByZXR1cm4gbV9zdGF0ZSA9PSBTaG93aW5nICYmIG1faGFzUmVsZXZhbnRFdmVudExp
c3RlbmVyOwogfQogCi1Ob3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbjo6ZGF0YVdpdGhvdXRO
b3RpZmljYXRpb25JRCgpIGNvbnN0CitOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbjo6ZGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgbV90aXRsZSwKQEAgLTIzNSw3ICsy
MzUsNyBAQCBOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbjo6ZGF0YVdpdGhvdXROb3RpZmlj
YXRpb25JRCgpIGNvbnN0CiAgICAgICAgIG1fbGFuZywKICAgICAgICAgbV9kaXJlY3Rpb24sCiAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJp
bmcoKSwKLSAgICAgICAgMAorICAgICAgICBpZGVudGlmaWVyKCksCiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5o
CmluZGV4IGZlMGNmNGMwYmQ5OS4uYTA3MzQxM2ZhZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25EaXJl
Y3Rpb24uaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uLmgiCisjaW5jbHVkZSA8
d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV3JpdGlu
Z01vZGUuaCIKIApAQCAtNDgsNyArNDksNyBAQCBjbGFzcyBOb3RpZmljYXRpb25QZXJtaXNzaW9u
Q2FsbGJhY2s7CiAKIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogCi1jbGFzcyBOb3RpZmljYXRp
b24gZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uPiwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewor
Y2xhc3MgTm90aWZpY2F0aW9uIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE5v
dGlmaWNhdGlvbj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhLCBwdWJsaWMgVVVJRElkZW50aWZpZWQ8Tm90aWZpY2F0aW9uPiB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQoTm90aWZpY2F0aW9uLCBXRUJDT1JFX0VYUE9S
VCk7CiBwdWJsaWM6CiAgICAgdXNpbmcgUGVybWlzc2lvbiA9IE5vdGlmaWNhdGlvblBlcm1pc3Np
b247CkBAIC04OSw3ICs5MCw3IEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVE
T01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgTm90aWZpY2F0aW9uRGF0YSBkYXRhV2l0aG91dE5vdGlmaWNhdGlvbklEKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgTm90aWZpY2F0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CiAKICAgICB1
c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFRocmVhZFNhZmVSZWZD
b3VudGVkOjpkZXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaAppbmRleCBiODFkZDViNjVkZTMuLjdhMTc4
ZGZiODNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApAQCAtNDcsMTkgKzQ3LDE1IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBQZXJtaXNzaW9uSGFuZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGVy
bWlzc2lvbik+OwogCiAgICAgLy8gUmVxdWVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbiBiZSBzaG93
bi4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHNob3coTm90aWZpY2F0aW9uJikgPSAwOwogCiAgICAgLy8gUmVxdWVzdHMgdGhhdCBh
IG5vdGlmaWNhdGlvbiB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gc2hvd24gYmUgY2FuY2VsZWQuCi0g
ICAgdmlydHVhbCB2b2lkIGNhbmNlbChOb3RpZmljYXRpb24qKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNhbmNlbChOb3RpZmljYXRpb24mKSA9IDA7CiAKLSAgICAvLyBXaGVuIHRoZSB1c2VyIGNs
b3NlcyBhIHBhZ2UsIG9yIHF1aXRzIHRoZSBjbGllbnQgYXBwbGljYXRpb24sIGFsbCBvZiB0aGUg
cGFnZSdzCi0gICAgLy8gYXNzb2NpYXRlZCBub3RpZmljYXRpb25zIGFyZSBjbGVhcmVkLgotICAg
IHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
IHsgfQotICAgIAogICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRlciB0aGF0IGEgTm90aWZpY2F0
aW9uIG9iamVjdCBoYXMgYmVlbiBkZXN0cm95ZWQKICAgICAvLyAoc3VjaCBhcyBieSBhIHBhZ2Ug
dHJhbnNpdGlvbikuIFRoZSBwcmVzZW50ZXIgbWF5IGNvbnRpbnVlIHNob3dpbmcKICAgICAvLyB0
aGUgbm90aWZpY2F0aW9uLCBidXQgbXVzdCBub3QgYXR0ZW1wdCB0byBjYWxsIHRoZSBldmVudCBo
YW5kbGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5v
dGlmaWNhdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVz
dHJveWVkKE5vdGlmaWNhdGlvbiYpID0gMDsKIAogICAgIC8vIEluZm9ybXMgdGhlIHByZXNlbnRl
ciB0aGUgY29udHJvbGxlciBhdHRhY2hlZCB0byB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQu
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkRhdGEuaAppbmRleCAwMDAwZjJmZTBjMmQuLjhkZmJkNzVhYTYxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
RGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhIHsKICAgICBT
dHJpbmcgbGFuZ3VhZ2U7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbjsKICAgICBTdHJpbmcgb3JpZ2luU3RyaW5nOwotICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEOworICAgIFN0cmluZyBub3RpZmljYXRpb25JRDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CkBAIC05MCw3ICs5MCw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9uRGF0YT4g
Tm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFvcmln
aW5TdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBub3RpZmljYXRpb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
bm90aWZpY2F0aW9uSUQ7CiAgICAgZGVjb2RlciA+PiBub3RpZmljYXRpb25JRDsKICAgICBpZiAo
IW5vdGlmaWNhdGlvbklEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA3OWMwNzliZjAyMWMuLjk1MWU0OTFjNWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NSBAQAor
MjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0ZWFkIG9m
IGEgdWludDY0X3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisgICAg
ICAgIAorICAgICAgICBUaGlzIGlzIG1vc3RseSBjaGFuZ2luZyBhIHdob2xlIGJ1bmNoIG9mIHVp
bnQ2NF90cyB0byBTdHJpbmdzLCBidXQgYWxzbyBnZXRzIHJpZCBvZiBsb3RzIG9mIHdlaXJkCisg
ICAgICAgIGFuZCBmcmFnaWxlIG1hcHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9u
cy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFNoYXJlZC9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOgorICAgICAgICAqIFNo
YXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHA6
CisgICAgICAgIChXS05vdGlmaWNhdGlvbkNvcHlDb3JlSURGb3JUZXN0aW5nKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaDoKKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV0tOb3RpZmljYXRp
b25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKToKKyAgICAgICAgKFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMpOgor
ICAgICAgICAoV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0TG9jYWxJREZvclRlc3RpbmcpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaDoK
KworICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb24uaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOb3RpZmljYXRpb246Om5vdGlmaWNhdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTm90aWZpY2F0aW9uOjpjb3JlTm90aWZpY2F0aW9uSUQgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb246OnBhZ2VJZGVudGlmaWVyIGNvbnN0KToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOgorCisgICAgICAgICogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpwYWdlSURzTWF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpwYWdl
QW5kTm90aWZpY2F0aW9uSURzTWF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRp
ZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6Om5vdGlmaWNhdGlvbkxvY2FsSURGb3JU
ZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKFdLQnVuZGxlR2V0V2ViTm90aWZp
Y2F0aW9uSUQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQcml2YXRlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGU6OndlYk5vdGlmaWNhdGlvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAg
ICAgKFdlYktpdDo6Z2VuZXJhdGVOb3RpZmljYXRpb25JRCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6Om5vdGlmaWNhdGlvbklERm9yVGVzdGluZyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFy
Tm90aWZpY2F0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRp
b25DbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25DbGllbnQ6
OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZp
Y2F0aW9uT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisKIDIwMjEtMTItMjAg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIE1v
ZGFsQ29udGFpbmVyQ29udHJvbENsYXNzaWZpZXIgYW5kIHVzZSBpdCB0byBpbXBsZW1lbnQgY2xh
c3NpZnlNb2RhbENvbnRhaW5lckNvbnRyb2xzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDYyNDkwMGVmZDRmZC4uM2Y2NzhiZTNjMzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTEx
NCwxOSArMTE0LDE5IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3dOb3Rp
ZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0CiAvLyAgICBzZW5kTWVzc2Fn
ZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkVjaG9Ud2ljZT4oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIFN0cmluZygiRklYTUU6IERvIHVzZWZ1bCB3b3JrIGhlcmUiKSk7CiB9
CiAKLXZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNhdGlvbih1
aW50NjRfdCkKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbE5vdGlmaWNh
dGlvbihjb25zdCBTdHJpbmcmKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICBy
ZXR1cm47CiB9CiAKLXZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZp
Y2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiB7CiAg
ICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIH0KIAotdm9pZCBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCkKK3Zv
aWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJikKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCAwNTNmMzBh
MTVlYWEuLjM1NGU3NDA4YmUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVz
dFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2hvd05v
dGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikgZmluYWw7Ci0gICAg
dm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwot
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlm
aWNhdGlvbklEcykgZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyTm90aWZp
Y2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25J
RCkgZmluYWw7CiAKICAgICB2b2lkIG1heWJlU2VuZENvbm5lY3Rpb25Db25maWd1cmF0aW9uKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCmluZGV4
IGUyMTJlZDFmZDYyYy4uYjVlMDdkZWNhMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTQxLDkgKzQxLDkgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IG5vdGlmaWNhdGlvbklEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25J
RCkgPSAwOwogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmlu
ZGV4IGFiY2Y5NzQ2YjA0OS4uMWM5NTY4OTE1MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBA
QAogbWVzc2FnZXMgLT4gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIE5vdFJlZkNv
dW50ZWQgewogICAgIFJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyKSAtPiAoYm9vbCBhbGxvd2VkKSBBc3luYwogICAgIFNob3dOb3RpZmlj
YXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZpY2F0aW9uRGF0YSkK
LSAgICBDYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCi0gICAgQ2xl
YXJOb3RpZmljYXRpb25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQotICAgIERp
ZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCisgICAgQ2FuY2Vs
Tm90aWZpY2F0aW9uKFN0cmluZyBub3RpZmljYXRpb25JRCkKKyAgICBDbGVhck5vdGlmaWNhdGlv
bnMoVmVjdG9yPFN0cmluZz4gbm90aWZpY2F0aW9uSURzKQorICAgIERpZERlc3Ryb3lOb3RpZmlj
YXRpb24oU3RyaW5nIG5vdGlmaWNhdGlvbklEKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwCmluZGV4IDhiNmMwMzQ0NDA2ZS4uYTc0MWY4
YjEwODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlm
aWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmlj
YXRpb24uY3BwCkBAIC04NywzICs4Nyw4IEBAIHVpbnQ2NF90IFdLTm90aWZpY2F0aW9uR2V0SUQo
V0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKQogewogICAgIHJldHVybiB0b0ltcGwobm90
aWZpY2F0aW9uKS0+bm90aWZpY2F0aW9uSUQoKTsKIH0KKworV0tTdHJpbmdSZWYgV0tOb3RpZmlj
YXRpb25Db3B5Q29yZUlERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24p
Cit7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChub3RpZmljYXRpb24pLT5jb3JlTm90
aWZpY2F0aW9uSUQoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
b3RpZmljYXRpb24uaAppbmRleCBkM2FlOThiZjc0ZDIuLjg4NDE3NGNkNDJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oCkBAIC00Miw2ICs0
Miw3IEBAIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05vdGlmaWNhdGlvbkNvcHlMYW5nKFdLTm90
aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tOb3Rp
ZmljYXRpb25Db3B5RGlyKFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBP
UlQgV0tTZWN1cml0eU9yaWdpblJlZiBXS05vdGlmaWNhdGlvbkdldFNlY3VyaXR5T3JpZ2luKFdL
Tm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbik7CiBXS19FWFBPUlQgdWludDY0X3QgV0tOb3Rp
ZmljYXRpb25HZXRJRChXS05vdGlmaWNhdGlvblJlZiBub3RpZmljYXRpb24pOworV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLTm90aWZpY2F0aW9uQ29weUNvcmVJREZvclRlc3RpbmcoV0tOb3RpZmlj
YXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcAppbmRleCA3NjkyMzk5MGFiNWIuLjhmNDQ5OTg0MTJiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBA
IC01NCw2ICs1NCwxMSBAQCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmCiAgICAgdG9JbXBsKG1hbmFn
ZXJSZWYpLT5wcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsKIH0K
IAordm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
X2IoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXJSZWYsIFdLU3RyaW5nUmVmIG5vdGlm
aWNhdGlvbklEKQoreworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbih0b1dURlN0cmluZyhub3RpZmljYXRpb25JRCkpOworfQorCiB2b2lkIFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVmIG5vdGlmaWNhdGlvbklEcykKIHsK
ICAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKHRv
SW1wbChub3RpZmljYXRpb25JRHMpKTsKQEAgLTY4LDggKzczLDMgQEAgdm9pZCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJQcm92aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKFdLTm90aWZp
Y2F0aW9uTWEKIHsKICAgICB0b0ltcGwobWFuYWdlclJlZiktPnByb3ZpZGVyRGlkUmVtb3ZlTm90
aWZpY2F0aW9uUG9saWNpZXModG9JbXBsKG9yaWdpbnMpKTsKIH0KLQotdWludDY0X3QgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyR2V0TG9jYWxJREZvclRlc3RpbmcoV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmIG1hbmFnZXIsIFdLTm90aWZpY2F0aW9uUmVmIG5vdGlmaWNhdGlvbikKLXsKLSAgICByZXR1
cm4gdG9JbXBsKG1hbmFnZXIpLT5ub3RpZmljYXRpb25Mb2NhbElERm9yVGVzdGluZyh0b0ltcGwo
bm90aWZpY2F0aW9uKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IGI3ODkwOWM2Y2U0Mi4uMGNmMjE0NTE3
OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlm
aWNhdGlvbk1hbmFnZXIuaApAQCAtMzgsMTAgKzM4LDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLTm90
aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5h
Z2VyCiAKIFdLX0VYUE9SVCB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkU2hv
d05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgdWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpOwogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFu
YWdlclJlZiwgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworV0tfRVhQT1JUIHZvaWQgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbl9iKFdLTm90aWZpY2F0
aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCk7CiBX
S19FWFBPUlQgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3NlTm90aWZp
Y2F0aW9ucyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJlZiBu
b3RpZmljYXRpb25JRHMpOwogV0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJv
dmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3koV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
IG1hbmFnZXJSZWYsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBib29sIGFsbG93ZWQpOwog
V0tfRVhQT1JUIHZvaWQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRSZW1vdmVOb3Rp
ZmljYXRpb25Qb2xpY2llcyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJlZiwgV0tB
cnJheVJlZiBvcmlnaW5zKTsKLVdLX0VYUE9SVCB1aW50NjRfdCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJHZXRMb2NhbElERm9yVGVzdGluZyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlclJl
ZiwgV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggMDhhNmY2ZTJmNGJmLi5iOGRhNzFiYjBmZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVdlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmIGRhdGEpCitXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihjb25z
dCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBkYXRhLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJZGVudGlmaWVyKQogICAgIDogbV90aXRsZShkYXRhLnRpdGxlKQogICAgICwgbV9ib2R5
KGRhdGEuYm9keSkKICAgICAsIG1faWNvblVSTChkYXRhLmljb25VUkwpCkBAIC0zOCw3ICszOCw4
IEBAIFdlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmIGRhdGEpCiAgICAgLCBtX2xhbmcoZGF0YS5sYW5ndWFnZSkKICAgICAsIG1f
ZGlyKGRhdGEuZGlyZWN0aW9uKQogICAgICwgbV9vcmlnaW4oQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhkYXRhLm9yaWdpblN0cmluZykpCi0gICAgLCBtX25vdGlmaWNhdGlv
bklEKGRhdGEubm90aWZpY2F0aW9uSUQpCisgICAgLCBtX2NvcmVOb3RpZmljYXRpb25JRChkYXRh
Lm5vdGlmaWNhdGlvbklEKQorICAgICwgbV9wYWdlSWRlbnRpZmllcihwYWdlSWRlbnRpZmllcikK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uLmgKaW5kZXggMGQyMmQ0N2UyMDFmLi4zYThmMTFkNzMxOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb24uaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTM3LDExICsz
OSwxMSBAQCBzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFdlYk5vdGlmaWNhdGlvbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6Ok5vdGlmaWNhdGlvbj4geworY2xhc3MgV2ViTm90aWZpY2F0aW9uIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Tm90aWZpY2F0aW9uPiwgcHVibGlj
IElkZW50aWZpZWQ8V2ViTm90aWZpY2F0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJOb3RpZmljYXRpb24+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiBk
YXRhKQorICAgIHN0YXRpYyBSZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk5vdGlmaWNh
dGlvbihkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYk5vdGlmaWNhdGlv
bihkYXRhLCBwYWdlSWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgdGl0
bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CkBAIC01MiwxMCArNTQsMTMgQEAgcHVibGlj
OgogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXIoKSBjb25zdCB7IHJldHVy
biBtX2RpcjsgfQogICAgIEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZ2luLmdldCgpOyB9CiAgICAgCi0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQo
KSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvbklEOyB9CisgICAgdWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KKyAgICBjb25zdCBTdHJp
bmcmIGNvcmVOb3RpZmljYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29yZU5vdGlmaWNhdGlv
bklEOyB9CisKKyAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFdlYk5vdGlm
aWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJik7CisgICAgV2ViTm90aWZp
Y2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyKTsKIAogICAgIFN0cmluZyBtX3RpdGxlOwogICAgIFN0cmluZyBtX2JvZHk7CkBAIC02
NCw3ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbGFuZzsKICAgICBXZWJDb3JlOjpO
b3RpZmljYXRpb25EaXJlY3Rpb24gbV9kaXI7CiAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmln
aW4+IG1fb3JpZ2luOwotICAgIHVpbnQ2NF90IG1fbm90aWZpY2F0aW9uSUQ7CisgICAgU3RyaW5n
IG1fY29yZU5vdGlmaWNhdGlvbklEOworCisgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3Bh
Z2VJZGVudGlmaWVyOwogfTsKIAogaW5saW5lIGJvb2wgaXNOb3RpZmljYXRpb25JRFZhbGlkKHVp
bnQ2NF90IGlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXIuY3BwCmluZGV4IGEyOWFlZDU1MDdlYS4uOGE1ZGIxNzZiZjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwCkBAIC00
NSwxNyArNDUsMTcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OnNob3dOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWYKICAgICBtX3dlYlBhZ2VQcm94
eS5zaG93Tm90aWZpY2F0aW9uKGRhdGEpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNhbmNlbE5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFn
ZVByb3h5LmNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKQordm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKQogewogICAgIG1fd2ViUGFnZVByb3h5LmNsZWFyTm90
aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpk
aWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpCiB7CiAg
ICAgbV93ZWJQYWdlUHJveHkuZGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
aAppbmRleCA0MjUxZjcyZmViZTIuLmQ5NGZiN2M0N2JjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0zOCw5ICszOCw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAg
IHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJikg
ZmluYWw7Ci0gICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9u
SUQpIGZpbmFsOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGNhbmNlbE5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKKyAgICB2b2lk
IGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURz
KSBmaW5hbDsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBu
b3RpZmljYXRpb25JRCkgZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1fd2ViUGFnZVByb3h5
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCA1MmFh
NjUzYTVkNWUuLjU0YzU4MTUxYzhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcApAQCAtMzksMTIgKzM5LDYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUdsb2JhbE5vdGlm
aWNhdGlvbklEKCkKLXsKLSAgICBzdGF0aWMgdWludDY0X3QgdW5pcXVlR2xvYmFsTm90aWZpY2F0
aW9uSUQgPSAxOwotICAgIHJldHVybiB1bmlxdWVHbG9iYWxOb3RpZmljYXRpb25JRCsrOwotfQot
CiBjb25zdCBjaGFyKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnN1cHBsZW1lbnROYW1l
KCkKIHsKICAgICByZXR1cm4gIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSI7CkBAIC05Niw2
NCArOTAsNjAgQEAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGEmIG5vdGlmaWNhdGlvbkRhdGEpCiB7Ci0gICAgdWludDY0X3QgZ2xvYmFs
Tm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgYXV0
byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZShub3RpZmljYXRpb25EYXRh
KTsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2Ut
PmlkZW50aWZpZXIoKSwgbm90aWZpY2F0aW9uRGF0YS5ub3RpZmljYXRpb25JRCk7Ci0gICAgbV9n
bG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b25JRFBhaXIpOwotICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBz
dGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uLmNvcHlSZWYo
KSkpOworICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUobm90
aWZpY2F0aW9uRGF0YSwgd2ViUGFnZS0+aWRlbnRpZmllcigpKTsKKyAgICBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpLCBub3RpZmljYXRp
b24tPmNvcmVOb3RpZmljYXRpb25JRCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlm
aWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCksIG5vdGlmaWNhdGlvbik7CiAgICAgbV9wcm92
aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOb3Rp
ZmljYXRpb25JRCkKIHsKLSAgICBpZiAoV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBt
X25vdGlmaWNhdGlvbnMuZ2V0KHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPmlkZW50aWZpZXIoKSwg
cGFnZU5vdGlmaWNhdGlvbklEKSkuc2Vjb25kLmdldCgpKQotICAgICAgICBtX3Byb3ZpZGVyLT5j
YW5jZWwoKm5vdGlmaWNhdGlvbik7CisgICAgaWYgKGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9u
b3RpZmljYXRpb25zLmdldChwYWdlTm90aWZpY2F0aW9uSUQpKQorICAgICAgICBtX3Byb3ZpZGVy
LT5jYW5jZWwoKndlYk5vdGlmaWNhdGlvbik7CiB9CiAgICAgCi12b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwg
Y29uc3QgU3RyaW5nJiBwYWdlTm90aWZpY2F0aW9uSUQpCiB7Ci0gICAgYXV0byBnbG9iYWxJRE5v
dGlmaWNhdGlvblBhaXIgPSBtX25vdGlmaWNhdGlvbnMudGFrZShzdGQ6Om1ha2VfcGFpcih3ZWJQ
YWdlLT5pZGVudGlmaWVyKCksIHBhZ2VOb3RpZmljYXRpb25JRCkpOwotICAgIGlmICh1aW50NjRf
dCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdsb2JhbElETm90aWZpY2F0aW9uUGFpci5maXJzdCkg
ewotICAgICAgICBXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IGdsb2JhbElETm90aWZp
Y2F0aW9uUGFpci5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
LnJlbW92ZShnbG9iYWxOb3RpZmljYXRpb25JRCk7Ci0gICAgICAgIG1fcHJvdmlkZXItPmRpZERl
c3Ryb3lOb3RpZmljYXRpb24oKm5vdGlmaWNhdGlvbik7CisgICAgaWYgKGF1dG8gd2ViTm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2UocGFnZU5vdGlmaWNhdGlvbklEKSkgeworICAg
ICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUod2ViTm90aWZpY2F0aW9uLT5ub3Rp
ZmljYXRpb25JRCgpKTsKKyAgICAgICAgbV9wcm92aWRlci0+ZGlkRGVzdHJveU5vdGlmaWNhdGlv
bigqd2ViTm90aWZpY2F0aW9uKTsKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRj
aChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCitzdGF0aWMg
Ym9vbCBwYWdlSURzTWF0Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0
cmluZyYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsKIH0KIAot
c3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBh
Z2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0
Y2goV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgcGFnZU5vdGlm
aWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICByZXR1cm4g
cGFnZUlEID09IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29u
dGFpbnMocGFnZU5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UpCiB7Ci0g
ICAgY2xlYXJOb3RpZmljYXRpb25zKHdlYlBhZ2UsIFZlY3Rvcjx1aW50NjRfdD4oKSwgcGFnZUlE
c01hdGNoKTsKKyAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgVmVjdG9yPFN0cmluZz4o
KSwgcGFnZUlEc01hdGNoKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMpCiB7CiAgICAgY2xlYXJOb3RpZmlj
YXRpb25zKHdlYlBhZ2UsIHBhZ2VOb3RpZmljYXRpb25JRHMsIHBhZ2VBbmROb3RpZmljYXRpb25J
RHNNYXRjaCk7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5v
dGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJG
dW5jdGlvbikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNh
dGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFnZU5v
dGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24p
CiB7CiAgICAgYXV0byB0YXJnZXRQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsK
IAogICAgIFZlY3Rvcjx1aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2Jh
bE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAu
c2l6ZSgpKTsKIAotICAgIGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBl
bmQgPSBtX25vdGlmaWNhdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBh
dXRvIHBhZ2VQcm94eUlEID0gaXQtPmtleS5maXJzdDsKLSAgICAgICAgdWludDY0X3QgcGFnZU5v
dGlmaWNhdGlvbklEID0gaXQtPmtleS5zZWNvbmQ7Ci0gICAgICAgIGlmICghZmlsdGVyRnVuY3Rp
b24ocGFnZVByb3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVByb3h5SUQsIHBh
Z2VOb3RpZmljYXRpb25JRHMpKQorICAgIGZvciAoYXV0byBub3RpZmljYXRpb24gOiBtX25vdGlm
aWNhdGlvbnMudmFsdWVzKCkpIHsKKyAgICAgICAgYXV0byBwYWdlUHJveHlJRCA9IG5vdGlmaWNh
dGlvbi0+cGFnZUlkZW50aWZpZXIoKTsKKyAgICAgICAgU3RyaW5nIGNvcmVOb3RpZmljYXRpb25J
RCA9IG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCk7CisgICAgICAgIGlmICghZmls
dGVyRnVuY3Rpb24ocGFnZVByb3h5SUQsIGNvcmVOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZVBy
b3h5SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Cisg
ICAgICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uLT5ub3Rp
ZmljYXRpb25JRCgpOwogICAgICAgICBnbG9iYWxOb3RpZmljYXRpb25JRHMuYXBwZW5kKGdsb2Jh
bE5vdGlmaWNhdGlvbklEKTsKICAgICB9CiAKQEAgLTE3MSwxMiArMTYxLDE3IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWlu
dDY0X3QgZ2xvYmFsTm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKGl0LT52YWx1ZS5maXJzdCk7CisgICAgYXV0byBub3RpZmljYXRpb24gPSBt
X25vdGlmaWNhdGlvbnMuZ2V0KGl0LT52YWx1ZSk7CisgICAgaWYgKCFub3RpZmljYXRpb24pIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG5vdGlmaWNhdGlv
bi0+cGFnZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuc2Vjb25kOwot
ICAgIHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKHBhZ2VOb3RpZmljYXRpb25JRCksIDApOworICAgIHdl
YlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpE
aWRTaG93Tm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwogfQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBn
bG9iYWxOb3RpZmljYXRpb25JRCkKQEAgLTE4NCw0MCArMTc5LDc2IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90
IGdsb2JhbE5vCiAgICAgYXV0byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoZ2xv
YmFsTm90aWZpY2F0aW9uSUQpOwogICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1h
cC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UoaXQtPnZhbHVlLmZpcnN0KTsKKworICAgIGF1dG8gbm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25zLmdldChpdC0+dmFsdWUpOworICAgIGlmICghbm90aWZp
Y2F0aW9uKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShu
b3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0gaXQtPnZhbHVl
LnNlY29uZDsKLSAgICB3ZWJQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6RGlkQ2xpY2tOb3RpZmljYXRpb24ocGFnZU5vdGlmaWNhdGlvbklEKSwg
MCk7CisgICAgd2ViUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OkRpZENsaWNrTm90aWZpY2F0aW9uKGl0LT52YWx1ZSksIDApOwogfQogCit2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bihjb25zdCBTdHJpbmcmIGNvcmVOb3RpZmljYXRpb25JRCkKK3sKKyAgICBhdXRvIG5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklEKTsKKyAgICBpZiAo
IW5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogd2ViUGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpOwor
ICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2ViUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZENsaWNrTm90aWZp
Y2F0aW9uKGNvcmVOb3RpZmljYXRpb25JRCksIDApOworfQogCiB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSog
Z2xvYmFsTm90aWZpY2F0aW9uSURzKQogewotICAgIEhhc2hNYXA8V2ViUGFnZVByb3h5KiwgVmVj
dG9yPHVpbnQ2NF90Pj4gcGFnZU5vdGlmaWNhdGlvbklEczsKLSAgICAKKyAgICBIYXNoTWFwPFdl
YlBhZ2VQcm94eSosIFZlY3RvcjxTdHJpbmc+PiBwYWdlTm90aWZpY2F0aW9uSURzOworCiAgICAg
c2l6ZV90IHNpemUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPnNpemUoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBhdXRvIGl0ID0gbV9nbG9iYWxO
b3RpZmljYXRpb25NYXAuZmluZChnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PEFQSTo6VUludDY0
PihpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1h
cC5lbmQoKSkKKyAgICAgICAgLy8gVGhlIHBhc3NlZCBhcnJheSBtaWdodCBoYXZlIHVpbnQ2NF90
IGlkZW50aWZpZXJzIG9yIFN0cmluZyBpZGVudGlmaWVycy4KKyAgICAgICAgLy8gSGFuZGxlIGJv
dGguCisKKyAgICAgICAgU3RyaW5nIGNvcmVOb3RpZmljYXRpb25JRDsKKyAgICAgICAgYXV0byog
aW50VmFsdWUgPSBnbG9iYWxOb3RpZmljYXRpb25JRHMtPmF0PEFQSTo6VUludDY0PihpKTsKKyAg
ICAgICAgaWYgKGludFZhbHVlKSB7CisgICAgICAgICAgICBhdXRvIGl0ID0gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXAuZmluZChpbnRWYWx1ZS0+dmFsdWUoKSk7CisgICAgICAgICAgICBpZiAoaXQg
PT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGF1dG8qIHN0cmluZ1ZhbHVlID0gZ2xvYmFsTm90aWZp
Y2F0aW9uSURzLT5hdDxBUEk6OlN0cmluZz4oaSk7CisgICAgICAgICAgICBpZiAoIXN0cmluZ1Zh
bHVlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBjb3JlTm90aWZp
Y2F0aW9uSUQgPSBzdHJpbmdWYWx1ZS0+c3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBB
U1NFUlQoIWNvcmVOb3RpZmljYXRpb25JRC5pc0VtcHR5KCkpOworCisgICAgICAgIGF1dG8gbm90
aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2UoY29yZU5vdGlmaWNhdGlvbklEKTsKKyAg
ICAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBpZiAoV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKGl0
LT52YWx1ZS5maXJzdCkpIHsKKyAgICAgICAgaWYgKFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShub3RpZmljYXRpb24tPnBhZ2VJZGVudGlmaWVyKCkpKSB7
CiAgICAgICAgICAgICBhdXRvIHBhZ2VJdCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuZmluZCh3ZWJQ
YWdlKTsKICAgICAgICAgICAgIGlmIChwYWdlSXQgPT0gcGFnZU5vdGlmaWNhdGlvbklEcy5lbmQo
KSkgewotICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50NjRfdD4gbmV3VmVjdG9yOworICAgICAg
ICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG5ld1ZlY3RvcjsKICAgICAgICAgICAgICAgICBuZXdW
ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKICAgICAgICAgICAgICAgICBwYWdl
SXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmFkZCh3ZWJQYWdlLCBXVEZNb3ZlKG5ld1ZlY3Rvcikp
Lml0ZXJhdG9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQgPSBpdC0+dmFsdWUuc2Vjb25kOwotICAgICAgICAgICAgcGFnZUl0LT52YWx1
ZS5hcHBlbmQocGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICAgICAgICAgIHBhZ2VJdC0+dmFsdWUu
YXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29yZU5vdGlmaWNhdGlvbklEKCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9ub3RpZmljYXRpb25zLnJlbW92ZShpdC0+dmFsdWUpOwotICAgICAgICBtX2ds
b2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1vdmUoaXQpOworICAgICAgICBtX2dsb2JhbE5vdGlmaWNh
dGlvbk1hcC5yZW1vdmUobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8gaXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmJlZ2luKCksIGVuZCA9IHBh
Z2VOb3RpZmljYXRpb25JRHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKQEAgLTI1MCwxNiArMjgx
LDQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkUmVtb3Zl
Tm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnIKICAgICBwcm9jZXNzUG9vbCgpLT5zZW5kVG9B
bGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OkRpZFJlbW92ZU5v
dGlmaWNhdGlvbkRlY2lzaW9ucyhvcmlnaW5TdHJpbmdzKSk7CiB9CiAKLXVpbnQ2NF90IFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6bm90aWZpY2F0aW9uTG9jYWxJREZvclRlc3RpbmcoV2Vi
Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCi17Ci0gICAgaWYgKCFub3RpZmljYXRpb24pCi0g
ICAgICAgIHJldHVybiAwOwotCi0gICAgYXV0byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
LmZpbmQobm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKLSAgICBpZiAoaXQgPT0gbV9n
bG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0
dXJuIGl0LT52YWx1ZS5zZWNvbmQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggZGFmMzM5N2YzOGQ1Li5mM2ViOGVk
NTFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNjAsMjcg
KzYwLDI2IEBAIHB1YmxpYzoKICAgICBIYXNoTWFwPFN0cmluZywgYm9vbD4gbm90aWZpY2F0aW9u
UGVybWlzc2lvbnMoKTsKIAogICAgIHZvaWQgc2hvdyhXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJik7Ci0gICAgdm9pZCBjYW5jZWwoV2ViUGFnZVByb3h5Kiwg
dWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGNhbmNlbChXZWJQYWdlUHJv
eHkqLCBjb25zdCBTdHJpbmcmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBjbGVhck5v
dGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5Kik7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMo
V2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklE
cyk7Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2Vi
UGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhZ2VOb3RpZmljYXRpb25JRHMpOwor
ICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJp
bmcmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAKICAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENs
aWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHByb3Zp
ZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCk7CiAg
ICAgdm9pZCBwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBub3RpZmlj
YXRpb25JRHMpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3ko
Y29uc3QgQVBJOjpTZWN1cml0eU9yaWdpbiosIGJvb2wgYWxsb3dlZCk7CiAgICAgdm9pZCBwcm92
aWRlckRpZFJlbW92ZU5vdGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyYXkqIG9yaWdpbnMpOwog
Ci0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uTG9jYWxJREZvclRlc3RpbmcoV2ViTm90aWZpY2F0
aW9uKik7Ci0KICAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwogICAgIHVzaW5nIEFQSTo6T2Jq
ZWN0OjpkZXJlZjsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNh
dGlvbkZpbHRlckZ1bmN0aW9uKShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIGRlc2lyZWRQYWdl
SUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsK
LSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlv
bik7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIHBhZ2VOb3RpZmljYXRpb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgY2xlYXJOb3RpZmlj
YXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYWdlTm90aWZpY2F0
aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBXZWJDb250ZXh0
U3VwcGxlbWVudAogICAgIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAg
LTg4LDEwICs4Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Q
cm92aWRlcj4gbV9wcm92aWRlcjsKLSAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJ
RCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50
NjRfdCwgc3RkOjpwYWlyPFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIHVpbnQ2NF90Pj4gbV9nbG9i
YWxOb3RpZmljYXRpb25NYXA7Ci0gICAgLy8gS2V5IHBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdl
IElEIGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQ7IHZhbHVlIHBhaXIgY29t
cHJpc2VkIG9mIGdsb2JhbCBub3RpZmljYXRpb24gSUQsIGFuZCBub3RpZmljYXRpb24gb2JqZWN0
Ci0gICAgSGFzaE1hcDxzdGQ6OnBhaXI8V2ViUGFnZVByb3h5SWRlbnRpZmllciwgdWludDY0X3Q+
LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmlj
YXRpb25zOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX2dsb2JhbE5vdGlmaWNh
dGlvbk1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFdlYk5vdGlmaWNhdGlvbj4+IG1fbm90
aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNWZmNjBlN2E0Yjc5Li42ZjQ3OWJhNTkyZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODc0MiwxNyAr
ODc0MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhJiBub3RpZmljYXRpbwogICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0
aGlzLCBub3RpZmljYXRpb25EYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5v
dGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
YW5jZWxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBt
X3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk+KCktPmNhbmNlbCh0aGlzLCBub3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZp
Y2F0aW9uSURzKQordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbm90aWZpY2F0aW9uSURzKQogewogICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+Y2xlYXJO
b3RpZmljYXRpb25zKHRoaXMsIG5vdGlmaWNhdGlvbklEcyk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBub3Rp
ZmljYXRpb25JRCkKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24odGhp
cywgbm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCA3OTk5NzBkZWQ2YTQuLmU5YjBhMTMwMjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwMzIsOSArMjAzMiw5IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmKTsKLSAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25J
RCk7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
bm90aWZpY2F0aW9uSURzKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0
X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkRGVzdHJveU5v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKIAogICAgIHZvaWQgcmVx
dWVzdENvb2tpZUNvbnNlbnQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpDb29raWVD
b25zZW50RGVjaXNpb25SZXN1bHQpPiYmKTsKICAgICB2b2lkIGNsYXNzaWZ5TW9kYWxDb250YWlu
ZXJDb250cm9scyhWZWN0b3I8U3RyaW5nPiYmIHRleHRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxXZWJDb3JlOjpNb2RhbENvbnRhaW5lckNvbnRyb2xUeXBlPiYmKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlLmNwcAppbmRleCBiNDM1NmE0MmNkMmIuLjgwYWQzNmUxODdmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwCkBAIC0yMDYsOSArMjA2LDEzIEBAIHZvaWQgV0tCdW5kbGVSZW1vdmVBbGxX
ZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXS0J1bmRsZVJlZiBidW5kbGVSZWYsIFdLQnVuZGxl
CiAgICAgV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbnMoV2ViS2l0Ojp0b0ltcGwocGFnZVJlZikpOwogfQogCi11aW50NjRfdCBXS0J1
bmRsZUdldFdlYk5vdGlmaWNhdGlvbklEKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uKQorV0tTdHJpbmdSZWYgV0tCdW5k
bGVDb3B5V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pCiB7Ci0gICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKGJ1bmRsZVJlZiktPndlYk5vdGlmaWNhdGlvbklEKGNvbnRleHQsIG5vdGlmaWNh
dGlvbik7CisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViS2l0Ojp0b0ltcGwoYnVuZGxlUmVmKS0+
d2ViTm90aWZpY2F0aW9uSUQoY29udGV4dCwgbm90aWZpY2F0aW9uKTsKKyAgICBpZiAoIWlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFdlYktpdDo6dG9D
b3BpZWRBUEkoKmlkZW50aWZpZXIpOwogfQogCiB2b2lkIFdLQnVuZGxlU2V0VGFiS2V5Q3ljbGVz
VGhyb3VnaEVsZW1lbnRzKFdLQnVuZGxlUmVmIGJ1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmIHBh
Z2VSZWYsIGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUuaAppbmRleCBh
NGQyM2Y1MzdlMzUuLmRjNGQxMzdiZWE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVByaXZhdGUu
aApAQCAtNTIsNyArNTIsNyBAQCBXS19FWFBPUlQgYm9vbCBXS0J1bmRsZUlzUGFnZUJveFZpc2li
bGUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYQogV0tfRVhQT1JUIHZv
aWQgV0tCdW5kbGVTZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRm9yVGVzdGluZyhXS0J1bmRsZVJl
ZiBidW5kbGUsIFdLU3RyaW5nUmVmIGxvY2F0aW9uKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
U2V0V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxl
UGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBvcmlnaW5TdHJpbmdSZWYsIGJvb2wgYWxsb3dlZCk7
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwotV0tfRVhQT1JU
IHVpbnQ2NF90IFdLQnVuZGxlR2V0V2ViTm90aWZpY2F0aW9uSUQoV0tCdW5kbGVSZWYgYnVuZGxl
LCBKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub3RpZmljYXRpb24pOworV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlQ29weVdlYk5vdGlmaWNhdGlvbklEKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uKTsK
IFdLX0VYUE9SVCBXS0RhdGFSZWYgV0tCdW5kbGVDcmVhdGVXS0RhdGFGcm9tVUludDhBcnJheShX
S0J1bmRsZVJlZiBidW5kbGUsIEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGRhdGEp
OwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVTZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZEZvclRlc3RpbmcoV0tCdW5kbGVSZWYgYnVuZGxlUmVmLCBib29sIGVuYWJsZWQpOwogLy8g
UmV0dXJucyBhcnJheSBvZiBkaWN0aW9uYXJpZXMuIERpY3Rpb25hcnkga2V5cyBhcmUgZG9jdW1l
bnQgaWRlbnRpZmllcnMsIHZhbHVlcyBhcmUgZG9jdW1lbnQgVVJMcy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCmluZGV4IGYwNWM0ZWI2ZmM0Yi4uMzg5NWJjMmIxMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKQEAgLTMxMCwxNyArMzEwLDE3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnJlbW92ZUFsbFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdlYlBhZ2UqIHBhZ2UpCiAjZW5kaWYKIH0KIAotdWlu
dDY0X3QgSW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiBqc0Nv
bnRleHQsIEpTVmFsdWVSZWYganNOb3RpZmljYXRpb24pCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
SW5qZWN0ZWRCdW5kbGU6OndlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiBqc0NvbnRleHQs
IEpTVmFsdWVSZWYganNOb3RpZmljYXRpb24pCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMp
CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBKU05vdGlmaWNhdGlv
bjo6dG9XcmFwcGVkKHRvSlMoanNDb250ZXh0KS0+dm0oKSwgdG9KUyh0b0pTKGpzQ29udGV4dCks
IGpzTm90aWZpY2F0aW9uKSk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCi0gICAgICAgIHJldHVy
biAwOwotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI+KCktPm5vdGlmaWNhdGlvbklERm9yVGVzdGluZyhub3RpZmljYXRp
b24pOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBub3RpZmljYXRp
b24tPmlkZW50aWZpZXIoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGpzQ29udGV4dCk7CiAg
ICAgVU5VU0VEX1BBUkFNKGpzTm90aWZpY2F0aW9uKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgKaW5kZXggNWE0ZjZh
ODc5YjEzLi43NWQ5ZTU5Mzk5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCkBAIC0xMDYsNyArMTA2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHNldFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oV2ViUGFnZSosIGNv
bnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpOwogICAgIHZvaWQgcmVtb3Zl
QWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSopOwotICAgIHVpbnQ2NF90IHdl
Yk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CisgICAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAgICAgUmVmPEFQSTo6RGF0YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4
dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBT
dHJpbmc+IERvY3VtZW50SURUb1VSTE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAKaW5kZXggOWEyMDE4OTJiMWMxLi40NjZlMDZiOWM5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCkBAIC01MSwxNCArNTEsNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKQotewotICAgIHN0YXRpYyB1aW50
NjRfdCB1bmlxdWVOb3RpZmljYXRpb25JRCA9IDE7Ci0gICAgcmV0dXJuIHVuaXF1ZU5vdGlmaWNh
dGlvbklEKys7Ci19Ci0jZW5kaWYKLQogY29uc3QgY2hhciogV2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6c3VwcGxlbWVudE5hbWUoKQogewogICAgIHJldHVybiAiV2ViTm90aWZpY2F0aW9uTWFuYWdl
ciI7CkBAIC0xMjgsMTggKzEyMCw2IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVt
b3ZlQWxsUGVybWlzc2lvbnNGb3JUZXN0aW5nKCkKICNlbmRpZgogfQogCi11aW50NjRfdCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpub3RpZmljYXRpb25JREZvclRlc3RpbmcoTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCi17Ci0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFu
b3RpZmljYXRpb24pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX25vdGlmaWNhdGlv
bk1hcC5nZXQobm90aWZpY2F0aW9uKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNh
dGlvbik7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQogdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShX
ZWJQcm9jZXNzJiBwcm9jZXNzLCBVJiYgbWVzc2FnZSwgV2ViUGFnZSYgcGFnZSkKIHsKQEAgLTE1
MSwyMiArMTMxLDE1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZE5vdGlmaWNhdGlv
bk1lc3NhZ2UoV2ViUHJvY2VzcyYgcHJvY2VzcywgVSYmIG1lc3NhCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKE5PVElGSUNBVElPTlMpCiAKLWJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhO
b3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKK2Jvb2wgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSog
cGFnZSkKIHsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBpZiAoIW5vdGlmaWNhdGlv
biB8fCAhcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgp
KQorICAgIGlmICghcGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgdWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQgPSBnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKCk7Ci0gICAgbV9ub3RpZmljYXRpb25N
YXAuc2V0KG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uSUQpOwotICAgIG1fbm90aWZpY2F0aW9u
SURNYXAuc2V0KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwotICAgIAotICAgIGF1dG8g
aXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLml0ZXJhdG9yOwotICAgIGl0LT52
YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAgYXV0byBub3RpZmljYXRpb25EYXRh
ID0gbm90aWZpY2F0aW9uLT5kYXRhV2l0aG91dE5vdGlmaWNhdGlvbklEKCk7Ci0gICAgbm90aWZp
Y2F0aW9uRGF0YS5ub3RpZmljYXRpb25JRCA9IG5vdGlmaWNhdGlvbklEOwotICAgIHNlbmROb3Rp
ZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlcjo6U2hvd05vdGlmaWNhdGlvbihXVEZNb3ZlKG5vdGlmaWNhdGlvbkRhdGEp
KSwgKnBhZ2UpOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbi5pZGVu
dGlmaWVyKCksICZub3RpZmljYXRpb24pOworCisgICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2Uo
bV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpT
aG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5kYXRhKCkpLCAqcGFnZSk7CiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAtMTc1LDcy
ICsxNDgsNDQgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQ
YWdlKiBwYWdlKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0
aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCi0gICAgaWYgKCFub3RpZmljYXRpb24gfHwgIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRp
bmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKKyAgICBpZiAoIXBhZ2UtPmNvcmVQYWdlKCkt
PnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KG5v
dGlmaWNhdGlvbik7Ci0gICAgaWYgKCFub3RpZmljYXRpb25JRCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1fcHJvY2VzcywgTWVzc2FnZXM6Ok5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvbklEKSwgKnBhZ2UpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZSk7Ci0jZW5kaWYKLX0KIAotdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgV2ViUGFnZSogcGFnZSkKLXsKLSNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKLSAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZp
Y2F0aW9uQ29udGV4dE1hcC5maW5kKGNvbnRleHQpOwotICAgIGlmIChpdCA9PSBtX25vdGlmaWNh
dGlvbkNvbnRleHRNYXAuZW5kKCkpCisgICAgYXV0byBtYXBwZWROb3RpZmljYXRpb24gPSBtX25v
dGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb24uaWRlbnRpZmllcigpKTsKKyAgICBpZiAo
IW1hcHBlZE5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChtYXBwZWRO
b3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7CiAKLSAgICBWZWN0b3I8dWludDY0X3Q+JiBu
b3RpZmljYXRpb25JRHMgPSBpdC0+dmFsdWU7Ci0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2Uo
bV9wcm9jZXNzLCBNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpD
bGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSwgKnBhZ2UpOwotICAgIHNpemVfdCBj
b3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlv
biA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRHNbaV0pOwotICAgICAg
ICBpZiAoIW5vdGlmaWNhdGlvbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBub3Rp
ZmljYXRpb24tPmZpbmFsaXplKCk7Ci0gICAgICAgIG1fbm90aWZpY2F0aW9uTWFwLnJlbW92ZShu
b3RpZmljYXRpb24pOwotICAgIH0KLSAgICAKLSAgICBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAu
cmVtb3ZlKGl0KTsKKyAgICBzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShtX3Byb2Nlc3MsIE1lc3Nh
Z2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OkNhbmNlbE5vdGlmaWNhdGlv
bihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOwogI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2UpOwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2Vi
UGFnZSogcGFnZSkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKICNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICBSZWZQdHIgcHJvdGVjdGVkTm90aWZpY2F0aW9u
IHsgbm90aWZpY2F0aW9uIH07CisgICAgUmVmIHByb3RlY3RlZE5vdGlmaWNhdGlvbiB7IG5vdGlm
aWNhdGlvbiB9OwogCi0gICAgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQgPSBtX25vdGlmaWNhdGlv
bk1hcC50YWtlKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKCFub3RpZmljYXRpb25JRCkKKyAgICBh
dXRvIHRha2VuTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNh
dGlvbi5pZGVudGlmaWVyKCkpOworICAgIGlmICghdGFrZW5Ob3RpZmljYXRpb24pCiAgICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQodGFrZW5Ob3RpZmljYXRpb24gPT0gJm5vdGlmaWNhdGlvbik7
CiAKLSAgICBtX25vdGlmaWNhdGlvbklETWFwLnJlbW92ZShub3RpZmljYXRpb25JRCk7Ci0gICAg
cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQsIG5vdGlmaWNh
dGlvbik7Ci0gICAgc2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UobV9wcm9jZXNzLCBNZXNzYWdlczo6
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpEaWREZXN0cm95Tm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbklEKSwgKnBhZ2UpOworICAgIHNlbmROb3RpZmljYXRpb25NZXNzYWdlKG1f
cHJvY2VzcywgTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6RGlk
RGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb24uaWRlbnRpZmllcigpKSwgKnBhZ2UpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0o
cGFnZSk7CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93
Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9u
SUQpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgaWYgKCFpc05vdGlmaWNhdGlv
bklEVmFsaWQobm90aWZpY2F0aW9uSUQpKQotICAgICAgICByZXR1cm47Ci0gICAgCiAgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQo
bm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47
CkBAIC0yNTEsMTIgKzE5Niw5IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hv
d05vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkKICNlbmRpZgogfQogCi12b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlm
aWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKQogewogI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQotICAgIGlmICghaXNOb3RpZmljYXRpb25JRFZhbGlkKG5vdGlmaWNhdGlvbklE
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0
aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICgh
bm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yNjksMjIgKzIxMSwxNyBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlv
bklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xvc2VOb3RpZmljYXRpb25z
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25JRHMpCiB7CiAjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgdWludDY0
X3Qgbm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb25JRHNbaV07Ci0gICAgICAgIGlmICghaXNO
b3RpZmljYXRpb25JRFZhbGlkKG5vdGlmaWNhdGlvbklEKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbklEID0gbm90aWZpY2F0aW9uSURzW2ldOwogCiAg
ICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9u
SURNYXAudGFrZShub3RpZmljYXRpb25JRCk7CiAgICAgICAgIGlmICghbm90aWZpY2F0aW9uKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9ub3RpZmljYXRpb25NYXAucmVtb3Zl
KG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFw
KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uZ2V0KCkpOwotCiAgICAgICAgIG5vdGlmaWNh
dGlvbi0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CiAgICAgfQogI2Vsc2UKQEAgLTI5MiwxOCArMjI5
LDQgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWYKICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCi12b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnJlbW92ZU5vdGlmaWNh
dGlvbkZyb21Db250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKLXsKLSAgICAvLyBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBt
YW5hZ2luZyB0aGUgaGFzaCBtYXBzLgotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQobm90aWZpY2F0aW9uLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVChpdCAhPSBtX25vdGlmaWNhdGlvbkNv
bnRleHRNYXAuZW5kKCkpOwotICAgIHNpemVfdCBpbmRleCA9IGl0LT52YWx1ZS5maW5kKG5vdGlm
aWNhdGlvbklEKTsKLSAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgIGl0LT52YWx1
ZS5yZW1vdmUoaW5kZXgpOwotICAgIGlmIChpdC0+dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAucmVtb3ZlKGl0KTsKLX0KLSNlbmRpZgotCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA2ZWU5NGY1
NmIwM2EuLjJiODBiZWY0ZGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGll
bnQuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUz
LDExICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVu
dE5hbWUoKTsKICAgICAKLSAgICBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiwgV2Vi
UGFnZSopOwotICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiosIFdlYlBhZ2Uq
KTsKLSAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViUGFnZSopOworICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24m
LCBXZWJQYWdlKik7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJiwgV2Vi
UGFnZSopOworCiAgICAgLy8gVGhpcyBjYWxsYmFjayBjb21lcyBmcm9tIFdlYkNvcmUsIG5vdCBt
ZXNzYWdlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNh
dGlvbihXZWJDb3JlOjpOb3RpZmljYXRpb24qLCBXZWJQYWdlKik7CisgICAgdm9pZCBkaWREZXN0
cm95Tm90aWZpY2F0aW9uKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiYsIFdlYlBhZ2UqKTsKIAogICAg
IHZvaWQgZGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24oY29uc3QgU3RyaW5nJiBvcmlnaW5T
dHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAKQEAgLTY1LDcgKzY2LDYgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBwb2xpY3lGb3JPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVBbGxQZXJt
aXNzaW9uc0ZvclRlc3RpbmcoKTsKLSAgICB1aW50NjRfdCBub3RpZmljYXRpb25JREZvclRlc3Rp
bmcoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKik7CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vz
c1N1cHBsZW1lbnQKQEAgLTc1LDI3ICs3NSwxNyBAQCBwcml2YXRlOgogICAgIC8vIEltcGxlbWVu
dGVkIGluIGdlbmVyYXRlZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdm9pZCBkaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZENsb3NlTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpOworICAgIHZvaWQgZGlkU2hvd05v
dGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGRpZENs
aWNrTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQg
ZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBub3RpZmljYXRpb25J
RHMpOwogICAgIHZvaWQgZGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBvcmlnaW5TdHJpbmdzKTsKLSAgICAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKLSAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklELCBXZWJDb3JlOjpOb3RpZmljYXRpb24qKTsKLSNlbmRpZgogCiAgICAgV2Vi
UHJvY2VzcyYgbV9wcm9jZXNzOwogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb24+LCB1aW50NjRfdD4gTm90
aWZpY2F0aW9uTWFwOwotICAgIE5vdGlmaWNhdGlvbk1hcCBtX25vdGlmaWNhdGlvbk1hcDsKLSAg
ICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpOb3RpZmlj
YXRpb24+PiBOb3RpZmljYXRpb25JRE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPj4gTm90aWZpY2F0aW9uSURNYXA7CiAgICAgTm90
aWZpY2F0aW9uSURNYXAgbV9ub3RpZmljYXRpb25JRE1hcDsKICAgICAKLSAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+LCBWZWN0b3I8dWlu
dDY0X3Q+PiBOb3RpZmljYXRpb25Db250ZXh0TWFwOwotICAgIE5vdGlmaWNhdGlvbkNvbnRleHRN
YXAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwOwotICAgIAogICAgIEhhc2hNYXA8U3RyaW5nLCBi
b29sPiBtX3Blcm1pc3Npb25zTWFwOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggZTNiMzE4NzA5ZDVkLi4yMTY4OGU5MmY0
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgpA
QCAtMjEsOSArMjEsOSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZFNob3dOb3RpZmljYXRpb24odWlu
dDY0X3Qgbm90aWZpY2F0aW9uSUQpOwotICAgIERpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKTsKLSAgICBEaWRDbG9zZU5vdGlmaWNhdGlvbnMoVmVjdG9yPHVpbnQ2
NF90PiBub3RpZmljYXRpb25JRHMpOworICAgIERpZFNob3dOb3RpZmljYXRpb24oU3RyaW5nIG5v
dGlmaWNhdGlvbklEKTsKKyAgICBEaWRDbGlja05vdGlmaWNhdGlvbihTdHJpbmcgbm90aWZpY2F0
aW9uSUQpOworICAgIERpZENsb3NlTm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBub3RpZmlj
YXRpb25JRHMpOwogICAgIERpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKFN0cmluZyBvcmln
aW5TdHJpbmcsIGJvb2wgYWxsb3dlZCk7CiAgICAgRGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNp
b25zKFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmluZ3MpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmNwcAppbmRleCBjYWU1MDk1ZDM5NmUuLmMyNGVkMzdkNzZlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAKQEAgLTQ2LDIyICs0NiwxNyBAQCBXZWJOb3RpZmlj
YXRpb25DbGllbnQ6On5XZWJOb3RpZmljYXRpb25DbGllbnQoKQogewogfQogCi1ib29sIFdlYk5v
dGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKK2Jvb2wg
V2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQog
ewogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI+KCktPnNob3cobm90aWZpY2F0aW9uLCBtX3BhZ2UpOwogfQogCi12b2lk
IFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24mIG5vdGlm
aWNhdGlvbikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI+KCktPmNhbmNlbChub3RpZmljYXRpb24sIG1fcGFnZSk7CiB9CiAK
LXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5z
dXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmNsZWFyTm90aWZpY2F0aW9ucyhj
b250ZXh0LCBtX3BhZ2UpOwotfQotCi12b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZp
Y2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQordm9pZCBX
ZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmlj
YXRpb24mIG5vdGlmaWNhdGlvbikKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBw
bGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZERlc3Ryb3lOb3RpZmljYXRpb24o
bm90aWZpY2F0aW9uLCBtX3BhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmlu
ZGV4IGEzMTQwOTA5MGQ2NC4uZGNkMjA4OTQ2MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oCkBAIC00NSwxMCArNDUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViTm90aWZp
Y2F0aW9uQ2xpZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
biopIG92ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmaWNhdGlvbk9iamVj
dERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlkZTsKKyAgICBib29sIHNo
b3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWwoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZmljYXRpb25PYmpl
Y3REZXN0cm95ZWQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBu
b3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1
ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGVybWlzc2lv
bkhhbmRsZXImJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQ
ZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOWJkYTI3N2FhM2Jk
Li5hODhmZmViMmJlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0
ZWFkIG9mIGEgdWludDY0X3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4u
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAg
IChXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3cpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpjYW5jZWwpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmlj
YXRpb25PYmplY3REZXN0cm95ZWQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpj
bGVhck5vdGlmaWNhdGlvbnMpOiBEZWxldGVkLgorCiAyMDIxLTEyLTE5ICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjbGllbnQgbGF5ZXIgcGx1
bWJpbmcgZm9yIGNsYXNzaWZ5aW5nIG1vZGFsIGNvbnRhaW5lciBjb250cm9scwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3Rp
ZmljYXRpb25DbGllbnQuaAppbmRleCAwMmYxZGIwNDNkODguLmU1NzE1M2Y1ZmFlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTQ1LDEwICs0NSw5IEBAIHB1YmxpYzoKICAgICB1
aW50NjRfdCBub3RpZmljYXRpb25JREZvclRlc3RpbmcoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKik7
CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJy
aWRlOwotICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSBvdmVycmlkZTsKLSAgICB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJD
b3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlkZTsKKyAgICBib29sIHNob3coV2ViQ29yZTo6Tm90
aWZpY2F0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZmljYXRpb25Db250
cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGVybWlzc2lvbkhhbmRsZXImJikgb3Zl
cnJpZGU7CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNr
UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7CkBA
IC01Nyw5ICs1Niw2IEBAIHByaXZhdGU6CiAKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiAgICAg
SGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwgUmV0YWluUHRyPFdlYk5vdGlm
aWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uTWFwOwotICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4sIFZlY3RvcjxSZXRhaW5QdHI8
V2ViTm90aWZpY2F0aW9uPj4+IE5vdGlmaWNhdGlvbkNvbnRleHRNYXA7Ci0gICAgTm90aWZpY2F0
aW9uQ29udGV4dE1hcCBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXA7CiAKICAgICBib29sIG1fZXZl
clJlcXVlc3RlZFBlcm1pc3Npb24geyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5tbQppbmRleCAzOWVkYzcyN2RkNWEuLmMwYWFkMDk5M2M4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlm
aWNhdGlvbkNsaWVudC5tbQpAQCAtNTgsNjIgKzU4LDM0IEBAIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dDo6V2ViTm90aWZpY2F0aW9uQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiB7CiB9CiAKLWJvb2wg
V2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQor
Ym9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRp
b24pCiB7CiAgICAgaWYgKCFbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gZ2VuZXJh
dGVOb3RpZmljYXRpb25JRCgpOwotICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5v
dGlmaWNhdGlvbiA9IGFkb3B0TlMoW1tXZWJOb3RpZmljYXRpb24gYWxsb2NdIGluaXRXaXRoQ29y
ZU5vdGlmaWNhdGlvbjpub3RpZmljYXRpb24gbm90aWZpY2F0aW9uSUQ6bm90aWZpY2F0aW9uSURd
KTsKLSAgICBtX25vdGlmaWNhdGlvbk1hcC5zZXQobm90aWZpY2F0aW9uLCB3ZWJOb3RpZmljYXRp
b24pOwotCi0gICAgYXV0byBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZp
Y2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvcjxSZXRhaW5QdHI8V2ViTm90
aWZpY2F0aW9uPj4oKSkuaXRlcmF0b3I7Ci0gICAgaXQtPnZhbHVlLmFwcGVuZCh3ZWJOb3RpZmlj
YXRpb24pOworICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlmaWNhdGlvbiA9
IGFkb3B0TlMoW1tXZWJOb3RpZmljYXRpb24gYWxsb2NdIGluaXRXaXRoQ29yZU5vdGlmaWNhdGlv
bjombm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOm5vdGlmaWNhdGlvbklEXSk7CisgICAgbV9u
b3RpZmljYXRpb25NYXAuc2V0KCZub3RpZmljYXRpb24sIHdlYk5vdGlmaWNhdGlvbik7CiAKICAg
ICBbW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHNob3dOb3RpZmljYXRpb246d2Vi
Tm90aWZpY2F0aW9uLmdldCgpIGZyb21XZWJWaWV3Om1fd2ViVmlld107CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKE5vdGlm
aWNhdGlvbiYgbm90aWZpY2F0aW9uKQogewotICAgIFdlYk5vdGlmaWNhdGlvbiAqd2ViTm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbikuZ2V0KCk7CisgICAg
V2ViTm90aWZpY2F0aW9uICp3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbk1hcC5nZXQo
Jm5vdGlmaWNhdGlvbikuZ2V0KCk7CiAgICAgaWYgKCF3ZWJOb3RpZmljYXRpb24pCiAgICAgICAg
IHJldHVybjsKIAogICAgIFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gY2FuY2Vs
Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbl07CiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKLXsKLSAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQoY29udGV4
dCk7Ci0gICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZmluYWxpemVkTm90aWZpY2F0aW9uSURzID0gY3Jl
YXRlTlNBcnJheShpdC0+dmFsdWUsIFsmXSAoYXV0byYgbm90aWZpY2F0aW9uKSB7Ci0gICAgICAg
IGF1dG8mIGNvcmVOb3RpZmljYXRpb24gPSAqY29yZShub3RpZmljYXRpb24uZ2V0KCkpOwotICAg
ICAgICBjb3JlTm90aWZpY2F0aW9uLmZpbmFsaXplKCk7Ci0gICAgICAgIG1fbm90aWZpY2F0aW9u
TWFwLnJlbW92ZSgmY29yZU5vdGlmaWNhdGlvbik7Ci0gICAgICAgIHJldHVybiBAKFtub3RpZmlj
YXRpb24gbm90aWZpY2F0aW9uSURdKTsKLSAgICB9KTsKLQotICAgIFtbbV93ZWJWaWV3IF9ub3Rp
ZmljYXRpb25Qcm92aWRlcl0gY2xlYXJOb3RpZmljYXRpb25zOmZpbmFsaXplZE5vdGlmaWNhdGlv
bklEcy5nZXQoKV07Ci0gICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLnJlbW92ZShpdCk7Ci19
Ci0KLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95
ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVu
dDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9u
KQogewotICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlmaWNhdGlvbiA9IG1f
bm90aWZpY2F0aW9uTWFwLnRha2Uobm90aWZpY2F0aW9uKTsKKyAgICBSZXRhaW5QdHI8V2ViTm90
aWZpY2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbk1hcC50YWtlKCZub3Rp
ZmljYXRpb24pOwogICAgIGlmICghd2ViTm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQobm90aWZpY2F0aW9u
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIEFTU0VSVChpdCAhPSBtX25vdGlmaWNh
dGlvbkNvbnRleHRNYXAuZW5kKCkpOwotICAgIHNpemVfdCBpbmRleCA9IGl0LT52YWx1ZS5maW5k
KHdlYk5vdGlmaWNhdGlvbik7Ci0gICAgQVNTRVJUKGluZGV4ICE9IG5vdEZvdW5kKTsKLSAgICBp
dC0+dmFsdWUucmVtb3ZlKGluZGV4KTsKLSAgICBpZiAoaXQtPnZhbHVlLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLnJlbW92ZShpdCk7Ci0KICAgICBbW21fd2Vi
VmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIG5vdGlmaWNhdGlvbkRlc3Ryb3llZDp3ZWJOb3Rp
ZmljYXRpb24uZ2V0KCldOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZmI0OWE5NmRiNTA1Li4zMDFjNmQxMmM1ZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAor
MjAyMS0xMi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBOb3RpZmljYXRpb24gaWRlbnRpZmllcnMgYmUgYSBVVUlEIHN0cmluZyBpbnN0ZWFkIG9m
IGEgdWludDY0X3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDUzNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisgICAg
ICAgIAorICAgICAgICBXaGVyZSBwb3NzaWJsZSwgdXNlIHRoZSBTdHJpbmcgVVVJRCBpZGVudGlm
aWVyLgorICAgICAgICBUaGlzIGdldHMgcmlkIG9mIGxvdHMgb2Ygd2VpcmQgbWFwcyBhbmQgY2xl
YW5zIHVwIGZsYWt5IHNpdHVhdGlvbnMgdGhhdCBjb3VsZCBvY2Nhc2lvbmFsbHkgb2NjdXIuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmg6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzaW11bGF0
ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKToKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2ltdWxhdGVX
ZWJOb3RpZmljYXRpb25DbGljayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oOgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNh
dGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6
On5XZWJOb3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjpzaG93V2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OmNsb3NlV2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdUUjo6V2Vi
Tm90aWZpY2F0aW9uUHJvdmlkZXI6OmFkZE5vdGlmaWNhdGlvbk1hbmFnZXIpOgorICAgICAgICAo
V1RSOjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcik6
CisgICAgICAgIChXVFI6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlm
aWNhdGlvbkNsaWNrKToKKyAgICAgICAgKFdUUjo6V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJl
c2V0KToKKyAgICAgICAgKFdUUjo6cmVtb3ZlR2xvYmFsSURGcm9tSURNYXApOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaDoKKwog
MjAyMS0xMi0yMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGVuYWJsZSBsb2cgY2hhbm5lbHMgaW4gV2ViS2l0VGVz
dFJ1bm5lciBhbmQgRHVtcFJlbmRlclRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjdhN2QxMDBh
Yjk3Li43ZThlZDQyMGJiN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC02NjMsOSArNjYzLDkgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9zdFNldFZpZXdTaXplKGRvdWJsZSB3aWR0aCwgZG91Ymxl
IGhlaWdodCkKICAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGlu
ZyhwYWdlKCktPnBhZ2UoKSwgdG9XSygiU2V0Vmlld1NpemUiKS5nZXQoKSwgYm9keS5nZXQoKSwg
MCk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQordm9pZCBJbmplY3RlZEJ1bmRsZTo6cG9z
dFNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tTdHJpbmdSZWYgbm90aWZpY2F0aW9uSUQp
CiB7Ci0gICAgcG9zdFBhZ2VNZXNzYWdlKCJTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrIiwg
YWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25JRCkpKTsKKyAgICBwb3N0UGFnZU1l
c3NhZ2UoIlNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCBub3RpZmljYXRpb25JRCk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnBvc3RTZXRBZGRzVmlzaXRlZExpbmtzKGJvb2wgYWRk
c1Zpc2l0ZWRMaW5rcykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAppbmRleCA2ODNmZDg1NDc1N2EuLjYyNDc1Njg5ODNi
YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0
U2V0QmFja2luZ1NjYWxlRmFjdG9yKGRvdWJsZSk7CiAgICAgdm9pZCBwb3N0U2V0V2luZG93SXNL
ZXkoYm9vbCk7CiAgICAgdm9pZCBwb3N0U2V0Vmlld1NpemUoZG91YmxlIHdpZHRoLCBkb3VibGUg
aGVpZ2h0KTsKLSAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIHBvc3RTaW11bGF0ZVdlYk5vdGlmaWNhdGlv
bkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHBvc3RTZXRBZGRz
VmlzaXRlZExpbmtzKGJvb2wpOwogCiAgICAgLy8gR2VvbG9jYXRpb24uCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBh
MzI4MGRmMTZjZDQuLmMzM2E4ZTUwZDQyYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC04ODEsNyArODgxLDkgQEAg
dm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCiB2
b2lkIFRlc3RSdW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBu
b3RpZmljYXRpb24pCiB7CiAgICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUucG9zdFNpbXVsYXRlV2ViTm90aWZp
Y2F0aW9uQ2xpY2soV0tCdW5kbGVHZXRXZWJOb3RpZmljYXRpb25JRChpbmplY3RlZEJ1bmRsZS5i
dW5kbGUoKSwgbWFpbkZyYW1lSlNDb250ZXh0KCksIG5vdGlmaWNhdGlvbikpOworCisgICAgYXV0
byBub3RpZmljYXRpb25JRCA9IGFkb3B0V0soV0tCdW5kbGVDb3B5V2ViTm90aWZpY2F0aW9uSUQo
aW5qZWN0ZWRCdW5kbGUuYnVuZGxlKCksIG1haW5GcmFtZUpTQ29udGV4dCgpLCBub3RpZmljYXRp
b24pKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5wb3N0U2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhub3RpZmljYXRpb25JRC5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKGJvb2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggNTY5Yjk4YTUyMzk0Li42MTlkNjZlMmRiODQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMzQ2LDcgKzIzNDYsNyBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90
KFdLUGFnZVJlZikKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVTd2lwZVNuYXBz
aG90KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9u
Q2xpY2sodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzaW11
bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKQogewog
ICAgIG1fd2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhtYWluV2ViVmlldygpLT5wYWdlKCksIG5vdGlmaWNhdGlvbklEKTsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAwN2Y3NTAzNWJmMzEuLjA1ZGM0NzkyMmJh
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMTI1LDcgKzEy
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGJlZm9yZVVubG9hZFJldHVyblZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9iZWZvcmVVbmxvYWRSZXR1cm5WYWx1ZTsgfQogICAgIHZvaWQgc2V0QmVmb3Jl
VW5sb2FkUmV0dXJuVmFsdWUoYm9vbCB2YWx1ZSkgeyBtX2JlZm9yZVVubG9hZFJldHVyblZhbHVl
ID0gdmFsdWU7IH0KIAotICAgIHZvaWQgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayh1aW50
NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNs
aWNrKFdLU3RyaW5nUmVmIG5vdGlmaWNhdGlvbklEKTsKIAogICAgIC8vIEdlb2xvY2F0aW9uLgog
ICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA3MmZhODJiYmMwMTAuLjJiZjRjMTk5ZTQ4
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTM5MCw3
ICszOTAsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgIH0KIAogICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2ltdWxhdGVXZWJOb3RpZmlj
YXRpb25DbGljayIpKSB7Ci0gICAgICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gdWludDY0
VmFsdWUobWVzc2FnZUJvZHkpOworICAgICAgICBXS1N0cmluZ1JlZiBub3RpZmljYXRpb25JRCA9
IHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2sobm90aWZpY2F0aW9uSUQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9X
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCBjZDVmYzY2MjE1YTQuLjU4ZTFmYWY1YmViZCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIgogCisjaW5jbHVkZSAiU3RyaW5nRnVuY3Rpb25zLmgi
CiAjaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZUFycmF5Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
Tm90aWZpY2F0aW9uLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5o
PgpAQCAtNjYsOCArNjcsOCBAQCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6V2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIoKQogCiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6fldlYk5vdGlmaWNhdGlv
blByb3ZpZGVyKCkKIHsKLSAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX293bmVkTm90aWZpY2F0
aW9ucykKLSAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5r
ZXkuZ2V0KCksIG51bGxwdHIpOworICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fa25vd25NYW5h
Z2VycykKKyAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlci5n
ZXQoKSwgbnVsbHB0cik7CiB9CiAKIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBXZWJOb3RpZmlj
YXRpb25Qcm92aWRlcjo6cHJvdmlkZXIoKQpAQCAtODksNDQgKzkwLDI2IEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI6OnNob3dXZWJOb3RpZmljYXRpb24oV0tQYWdlUmVmIHBhZ2UsIFdL
Tm90aWZpY2F0aW9uCiB7CiAgICAgYXV0byBjb250ZXh0ID0gV0tQYWdlR2V0Q29udGV4dChwYWdl
KTsKICAgICBhdXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBXS0NvbnRleHRHZXROb3RpZmljYXRp
b25NYW5hZ2VyKGNvbnRleHQpOwotICAgIHVpbnQ2NF90IGlkID0gV0tOb3RpZmljYXRpb25HZXRJ
RChub3RpZmljYXRpb24pOworICAgIEFTU0VSVChtX2tub3duTWFuYWdlcnMuY29udGFpbnMobm90
aWZpY2F0aW9uTWFuYWdlcikpOwogCi0gICAgQVNTRVJUKG1fb3duZWROb3RpZmljYXRpb25zLmNv
bnRhaW5zKG5vdGlmaWNhdGlvbk1hbmFnZXIpKTsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fb3du
ZWROb3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uTWFuYWdlciktPnZhbHVlLmFkZChpZCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKLSAg
ICBhdXRvIGFkZFJlc3VsdDIgPSBtX293bmluZ01hbmFnZXIuc2V0KGlkLCBub3RpZmljYXRpb25N
YW5hZ2VyKTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdF
bnRyeSk7Ci0gICAgYXV0byBhZGRSZXN1bHQzID0gbV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9u
SURNYXAuYWRkKHN0ZDo6bWFrZV9wYWlyKHBhZ2UsIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldExv
Y2FsSURGb3JUZXN0aW5nKG5vdGlmaWNhdGlvbk1hbmFnZXIsIG5vdGlmaWNhdGlvbikpLCBpZCk7
Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQzLCBhZGRSZXN1bHQzLmlzTmV3RW50cnkpOwor
ICAgIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlv
bik7CisgICAgYXV0byBjb3JlSWRlbnRpZmllciA9IGFkb3B0V0soV0tOb3RpZmljYXRpb25Db3B5
Q29yZUlERm9yVGVzdGluZyhub3RpZmljYXRpb24pKTsKIAotICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb25NYW5hZ2VyLCBpZCk7
Ci19CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX293bmluZ01hbmFnZXIuc2V0KHRvV1RGU3RyaW5n
KGNvcmVJZGVudGlmaWVyLmdldCgpKSwgbm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAotc3RhdGljIHZvaWQg
cmVtb3ZlR2xvYmFsSURGcm9tSURNYXAoSGFzaE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50
NjRfdD4sIHVpbnQ2NF90PiYgbWFwLCB1aW50NjRfdCBpZCkKLXsKLSAgICBmb3IgKGF1dG8gaXRl
ciA9IG1hcC5iZWdpbigpOyBpdGVyICE9IG1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlm
IChpdGVyLT52YWx1ZSA9PSBpZCkgewotICAgICAgICAgICAgbWFwLnJlbW92ZShpdGVyKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFNob3dOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uTWFuYWdlciwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI6OmNsb3NlV2ViTm90aWZpY2F0aW9uKFdLTm90aWZpY2F0aW9uUmVmIG5v
dGlmaWNhdGlvbikKIHsKLSAgICB1aW50NjRfdCBpZCA9IFdLTm90aWZpY2F0aW9uR2V0SUQobm90
aWZpY2F0aW9uKTsKLSAgICBBU1NFUlQobV9vd25pbmdNYW5hZ2VyLmNvbnRhaW5zKGlkKSk7Ci0g
ICAgYXV0byBub3RpZmljYXRpb25NYW5hZ2VyID0gbV9vd25pbmdNYW5hZ2VyLmdldChpZCk7Ci0K
LSAgICBBU1NFUlQobV9vd25lZE5vdGlmaWNhdGlvbnMuY29udGFpbnMobm90aWZpY2F0aW9uTWFu
YWdlcikpOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobm90
aWZpY2F0aW9uTWFuYWdlciktPnZhbHVlLnJlbW92ZShpZCk7Ci0gICAgQVNTRVJUX1VOVVNFRChz
dWNjZXNzLCBzdWNjZXNzKTsKLSAgICBtX293bmluZ01hbmFnZXIucmVtb3ZlKGlkKTsKKyAgICBh
dXRvIGlkZW50aWZpZXIgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLTm90aWZpY2F0aW9uQ29weUNv
cmVJREZvclRlc3Rpbmcobm90aWZpY2F0aW9uKSkuZ2V0KCkpOwogCi0gICAgcmVtb3ZlR2xvYmFs
SURGcm9tSURNYXAobV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9uSURNYXAsIGlkKTsKKyAgICBh
dXRvIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSBtX293bmluZ01hbmFnZXIudGFrZShpZGVudGlmaWVy
KTsKKyAgICBBU1NFUlQobm90aWZpY2F0aW9uTWFuYWdlcik7CisgICAgQVNTRVJUKG1fa25vd25N
YW5hZ2Vycy5jb250YWlucyhub3RpZmljYXRpb25NYW5hZ2VyKSk7CiAKLSAgICBhdXRvIHdrSUQg
PSBhZG9wdFdLKFdLVUludDY0Q3JlYXRlKGlkKSk7CisgICAgYXV0byB3a0lEID0gYWRvcHRXSyhX
S1VJbnQ2NENyZWF0ZShXS05vdGlmaWNhdGlvbkdldElEKG5vdGlmaWNhdGlvbikpKTsKICAgICBh
dXRvIGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBXS0FycmF5
QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgd2tJRC5nZXQoKSk7CiAgICAgV0tOb3RpZmljYXRpb25N
YW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uTWFuYWdlciwg
YXJyYXkuZ2V0KCkpOwpAQCAtMTM0LDIzICsxMTcsMjggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25Q
cm92aWRlcjo6Y2xvc2VXZWJOb3RpZmljYXRpb24oV0tOb3RpZmljYXRpb25SZWYgbm90aWZpY2F0
aW8KIAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6YWRkTm90aWZpY2F0aW9uTWFuYWdl
cihXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYgbWFuYWdlcikKIHsKLSAgICBtX293bmVkTm90aWZp
Y2F0aW9ucy5hZGQobWFuYWdlciwgSGFzaFNldDx1aW50NjRfdD4oKSk7CisgICAgQVNTRVJUKCFt
X2tub3duTWFuYWdlcnMuY29udGFpbnMobWFuYWdlcikpOworICAgIG1fa25vd25NYW5hZ2Vycy5h
ZGQobWFuYWdlcik7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5v
dGlmaWNhdGlvbk1hbmFnZXIoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIG1hbmFnZXIpCiB7Ci0g
ICAgYXV0byBpdGVyYXRvciA9IG1fb3duZWROb3RpZmljYXRpb25zLmZpbmQobWFuYWdlcik7Ci0g
ICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fb3duZWROb3RpZmljYXRpb25zLmVuZCgpKTsKLSAgICBh
dXRvIHRvUmVtb3ZlID0gaXRlcmF0b3ItPnZhbHVlOwotICAgIFdLUmV0YWluUHRyPFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZj4gZ3VhcmQobWFuYWdlcik7Ci0gICAgbV9vd25lZE5vdGlmaWNhdGlv
bnMucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICBhdXRvIHByb3RlY3RlZE1hbmFnZXIgPSBtX2tub3du
TWFuYWdlcnMudGFrZShtYW5hZ2VyKTsKKyAgICBBU1NFUlQocHJvdGVjdGVkTWFuYWdlcik7CisK
KyAgICBhdXRvIHRvUmVtb3ZlID0gVmVjdG9yPFN0cmluZz4geyB9OworICAgIGZvciAoYXV0byYg
aXRlcmF0b3IgOiBtX293bmluZ01hbmFnZXIpIHsKKyAgICAgICAgaWYgKGl0ZXJhdG9yLnZhbHVl
ICE9IG1hbmFnZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdG9SZW1vdmUuYXBw
ZW5kKGl0ZXJhdG9yLmtleSk7CisgICAgfQorCiAgICAgYXV0byBhcnJheSA9IGFkb3B0V0soV0tN
dXRhYmxlQXJyYXlDcmVhdGUoKSk7Ci0gICAgZm9yICh1aW50NjRfdCBub3RpZmljYXRpb25JRCA6
IHRvUmVtb3ZlKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IG1fb3duaW5nTWFuYWdlci5yZW1v
dmUobm90aWZpY2F0aW9uSUQpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nl
c3MpOwotICAgICAgICByZW1vdmVHbG9iYWxJREZyb21JRE1hcChtX2xvY2FsVG9HbG9iYWxOb3Rp
ZmljYXRpb25JRE1hcCwgbm90aWZpY2F0aW9uSUQpOwotICAgICAgICBXS0FycmF5QXBwZW5kSXRl
bShhcnJheS5nZXQoKSwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShub3RpZmljYXRpb25JRCkpLmdl
dCgpKTsKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiB0b1JlbW92ZSkgeworICAgICAgICBX
S0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgdG9XSyhpZGVudGlmaWVyKS5nZXQoKSk7Cisg
ICAgICAgIG1fb3duaW5nTWFuYWdlci5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQorCiAgICAg
V0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMobWFuYWdl
ciwgYXJyYXkuZ2V0KCkpOwogfQogCkBAIC0xNjAsMjggKzE0OCwyMyBAQCBXS0RpY3Rpb25hcnlS
ZWYgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKICAg
ICByZXR1cm4gV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpOwogfQogCi12b2lkIFdlYk5vdGlm
aWNhdGlvblByb3ZpZGVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiBw
YWdlLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBu
b3RpZmljYXRpb25JRCkKIHsKLSAgICBBU1NFUlQobV9sb2NhbFRvR2xvYmFsTm90aWZpY2F0aW9u
SURNYXAuY29udGFpbnMoc3RkOjptYWtlX3BhaXIocGFnZSwgbm90aWZpY2F0aW9uSUQpKSk7Ci0g
ICAgYXV0byBnbG9iYWxJRCA9IG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNhdGlvbklETWFwLmdldChz
dGQ6Om1ha2VfcGFpcihwYWdlLCBub3RpZmljYXRpb25JRCkpOwotICAgIEFTU0VSVChtX293bmlu
Z01hbmFnZXIuY29udGFpbnMoZ2xvYmFsSUQpKTsKLSAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKG1fb3duaW5nTWFuYWdlci5nZXQoZ2xvYmFsSUQp
LCBnbG9iYWxJRCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gdG9XVEZTdHJpbmcobm90aWZpY2F0
aW9uSUQpOworICAgIEFTU0VSVChtX293bmluZ01hbmFnZXIuY29udGFpbnMoaWRlbnRpZmllcikp
OworCisgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bl9iKG1fb3duaW5nTWFuYWdlci5nZXQoaWRlbnRpZmllciksIG5vdGlmaWNhdGlvbklEKTsKIH0K
IAogdm9pZCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6cmVzZXQoKQogewotICAgIGZvciAoYXV0
byYgbm90aWZpY2F0aW9uUGFpciA6IG1fb3duZWROb3RpZmljYXRpb25zKSB7Ci0gICAgICAgIGlm
IChub3RpZmljYXRpb25QYWlyLnZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OworICAgIGZvciAoYXV0byBpdGVyYXRvciA6IG1fb3duaW5nTWFuYWdlcikgewogICAgICAgICBh
dXRvIGFycmF5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKLSAgICAgICAgZm9y
ICh1aW50NjRfdCBub3RpZmljYXRpb25JRCA6IG5vdGlmaWNhdGlvblBhaXIudmFsdWUpCi0gICAg
ICAgICAgICBXS0FycmF5QXBwZW5kSXRlbShhcnJheS5nZXQoKSwgYWRvcHRXSyhXS1VJbnQ2NENy
ZWF0ZShub3RpZmljYXRpb25JRCkpLmdldCgpKTsKLQotICAgICAgICBub3RpZmljYXRpb25QYWly
LnZhbHVlLmNsZWFyKCk7Ci0gICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlk
Q2xvc2VOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvblBhaXIua2V5LmdldCgpLCBhcnJheS5nZXQo
KSk7CisgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKGFycmF5LmdldCgpLCB0b1dLKGl0ZXJhdG9y
LmtleSkuZ2V0KCkpOworICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZENs
b3NlTm90aWZpY2F0aW9ucyhpdGVyYXRvci52YWx1ZSwgYXJyYXkuZ2V0KCkpOwogICAgIH0KKwog
ICAgIG1fb3duaW5nTWFuYWdlci5jbGVhcigpOwotICAgIG1fbG9jYWxUb0dsb2JhbE5vdGlmaWNh
dGlvbklETWFwLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGNjZjhiMWJj
ZTk5Ni4uMzkyNjFiZDQyNjVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNl
IFdUUiB7CiAKQEAgLTQ2LDE1ICs0NywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVOb3Rp
ZmljYXRpb25NYW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZik7CiAgICAgV0tEaWN0aW9u
YXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CiAKLSAgICB2b2lkIHNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2soV0tQYWdlUmVmLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCk7Cisg
ICAgdm9pZCBzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKFdLUGFnZVJlZiwgV0tTdHJpbmdS
ZWYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKLSAgICAv
LyBJbnZlcnNlcyBvZiBlYWNoIG90aGVyLgotICAgIEhhc2hNYXA8V0tSZXRhaW5QdHI8V0tOb3Rp
ZmljYXRpb25NYW5hZ2VyUmVmPiwgSGFzaFNldDx1aW50NjRfdD4+IG1fb3duZWROb3RpZmljYXRp
b25zOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9v
d25pbmdNYW5hZ2VyOwotCi0gICAgSGFzaE1hcDxzdGQ6OnBhaXI8V0tQYWdlUmVmLCB1aW50NjRf
dD4sIHVpbnQ2NF90PiBtX2xvY2FsVG9HbG9iYWxOb3RpZmljYXRpb25JRE1hcDsKKyAgICBIYXNo
U2V0PFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2Vy
czsKKyAgICBIYXNoTWFwPFN0cmluZywgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX293bmlu
Z01hbmFnZXI7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>