<?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>89870</bug_id>
          
          <creation_ts>2012-06-25 05:31:15 -0700</creation_ts>
          <short_desc>[WK2] Add support for Network Information API</short_desc>
          <delta_ts>2012-07-06 12:12:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89959</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joone</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>656501</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-25 05:31:15 -0700</bug_when>
    <thetext>There is currently no support for the Network Information API in WK2 even though it is implemented in WK1 and used by EFL port.
We need to implement Network Information API in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656729</commentid>
    <comment_count>1</comment_count>
      <attachid>149326</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-25 11:12:25 -0700</bug_when>
    <thetext>Created attachment 149326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657103</commentid>
    <comment_count>2</comment_count>
      <attachid>149326</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-25 18:12:40 -0700</bug_when>
    <thetext>Comment on attachment 149326
Patch

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

&gt; Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:75
&gt; +    unsigned int bandwidth = true;

Why do you initialize *unsigned int* with boolean type ? In addition, why true ?

According to specification, bandwidth returns below values.

- 0 if the user is currently offline.
- Infinity if the bandwidth is unknown.
- an estimation of the current bandwidth in MB/s (Megabytes per seconds) available for communication with the browsing context active document&apos;s domain.

&gt; Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:82
&gt; +    bool metered = true;

Basically, metered means operator limits network usage. So, I think it is good to set &apos;false&apos; by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657299</commentid>
    <comment_count>3</comment_count>
      <attachid>149326</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-25 22:40:01 -0700</bug_when>
    <thetext>Comment on attachment 149326
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:75
&gt;&gt; +    unsigned int bandwidth = true;
&gt; 
&gt; Why do you initialize *unsigned int* with boolean type ? In addition, why true ?
&gt; 
&gt; According to specification, bandwidth returns below values.
&gt; 
&gt; - 0 if the user is currently offline.
&gt; - Infinity if the bandwidth is unknown.
&gt; - an estimation of the current bandwidth in MB/s (Megabytes per seconds) available for communication with the browsing context active document&apos;s domain.

Bad copy/paste, thanks for catching it.

&gt;&gt; Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:82
&gt;&gt; +    bool metered = true;
&gt; 
&gt; Basically, metered means operator limits network usage. So, I think it is good to set &apos;false&apos; by default.

Yes, it should be false. It is already set to false by default on Proxy side but it should be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657302</commentid>
    <comment_count>4</comment_count>
      <attachid>149458</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-25 22:44:47 -0700</bug_when>
    <thetext>Created attachment 149458
Patch

Take Gyuyoung&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657311</commentid>
    <comment_count>5</comment_count>
      <attachid>149458</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-25 23:14:57 -0700</bug_when>
    <thetext>Comment on attachment 149458
Patch

Almost looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657327</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-25 23:42:22 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 149458 [details])
&gt; Almost looks good to me.

Almost? ;) Then please tell me what is wrong so that I can make it look good to you in its entirety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657412</commentid>
    <comment_count>7</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-26 02:03:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 149458 [details] [details])
&gt; &gt; Almost looks good to me.
&gt; 
&gt; Almost? ;) Then please tell me what is wrong so that I can make it look good to you in its entirety.

As we said on irc, return type of bandwidth needs to be consistent with all places. I file a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657518</commentid>
    <comment_count>8</comment_count>
      <attachid>149512</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-26 05:10:41 -0700</bug_when>
    <thetext>Created attachment 149512
Patch

Call sendSync() on m_process-&gt;connection() instead of m_page, in WebNetworkInfoManager.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657600</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-26 07:43:56 -0700</bug_when>
    <thetext>C APIs will be provided in a separate bug report / patch to decrease patch size (in case someone is wondering).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657764</commentid>
    <comment_count>10</comment_count>
      <attachid>149512</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-26 11:15:07 -0700</bug_when>
    <thetext>Comment on attachment 149512
Patch

Clearing flags as the patch will need updating once the dependency lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658164</commentid>
    <comment_count>11</comment_count>
      <attachid>149512</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-26 17:43:45 -0700</bug_when>
    <thetext>Comment on attachment 149512
Patch

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

&gt; Source/WebKit2/Shared/WebNetworkInfo.h:46
&gt; +        unsigned int bandwidth;

bandwidth type is changed to double data type. This patch also needs to change type of bandwidth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658338</commentid>
    <comment_count>12</comment_count>
      <attachid>149680</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-26 22:35:01 -0700</bug_when>
    <thetext>Created attachment 149680
Patch

Update patch to use &quot;double&quot; instead of &quot;unsigned int&quot; for the bandwidth, now that the dependency has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658344</commentid>
    <comment_count>13</comment_count>
      <attachid>149680</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-26 22:43:11 -0700</bug_when>
    <thetext>Comment on attachment 149680
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662905</commentid>
    <comment_count>14</comment_count>
      <attachid>150782</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 06:05:02 -0700</bug_when>
    <thetext>Created attachment 150782
Patch

Rebase on master and add new files to GNUMakefile and Qt project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663256</commentid>
    <comment_count>15</comment_count>
      <attachid>150782</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-04 20:19:07 -0700</bug_when>
    <thetext>Comment on attachment 150782
Patch

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

&gt; Source/WebKit2/UIProcess/WebNetworkInfoProvider.h:45
&gt; +    bool metered(WebNetworkInfoManagerProxy*) const;

why not isMetered here?

&gt; Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:77
&gt; +    // The spec indicates that we should return &quot;infinity&quot; if the bandwidth is unknown.
&gt; +    double bandwidth = std::numeric_limits&lt;double&gt;::infinity();

Isnt there a smarter way to emit &quot;Infinity&quot; in JS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663331</commentid>
    <comment_count>16</comment_count>
      <attachid>150782</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 23:33:58 -0700</bug_when>
    <thetext>Comment on attachment 150782
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/WebNetworkInfoProvider.h:45
&gt;&gt; +    bool metered(WebNetworkInfoManagerProxy*) const;
&gt; 
&gt; why not isMetered here?

Right, this is better, I&apos;ll fix it. For some reason it is called metered() in WebCore.

&gt;&gt; Source/WebKit2/WebProcess/NetworkInfo/WebNetworkInfoManager.cpp:77
&gt;&gt; +    double bandwidth = std::numeric_limits&lt;double&gt;::infinity();
&gt; 
&gt; Isnt there a smarter way to emit &quot;Infinity&quot; in JS?

I don&apos;t know of any other. I know this works though:
Source/JavaScriptCore/runtime/NumberConstructor.cpp:    return jsNumber(std::numeric_limits&lt;double&gt;::infinity());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663334</commentid>
    <comment_count>17</comment_count>
      <attachid>150883</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-04 23:36:26 -0700</bug_when>
    <thetext>Created attachment 150883
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664222</commentid>
    <comment_count>18</comment_count>
      <attachid>150883</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-06 12:12:30 -0700</bug_when>
    <thetext>Comment on attachment 150883
Patch

Clearing flags on attachment: 150883

Committed r121989: &lt;http://trac.webkit.org/changeset/121989&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664223</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-06 12:12:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149326</attachid>
            <date>2012-06-25 11:12:25 -0700</date>
            <delta_ts>2012-06-25 22:44:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89870_wk2_networkinfo.patch</filename>
            <type>text/plain</type>
            <size>51215</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNTFmN2VjMS4uMGUwNzY1OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CkBAIC0yNiw2ICsyNiw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9Eb3dubG9hZHMiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvRnVsbFNjcmVlbiIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9HZW9sb2NhdGlvbiIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9OZXR3b3Jr
SW5mbyIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJIgpAQCAtMTU0LDYgKzE1NSw3IEBA
IFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAKICAg
ICBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKICAgICBTaGFyZWQvV2ViTW91c2VFdmVudC5j
cHAKKyAgICBTaGFyZWQvV2ViTmV0d29ya0luZm8uY3BwCiAgICAgU2hhcmVkL1dlYk9wZW5QYW5l
bFBhcmFtZXRlcnMuY3BwCiAgICAgU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CiAgICAgU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC0yNDYsNiArMjQ4LDggQEAgU0VU
KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCiAgICAg
VUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL1dl
Yk5hdmlnYXRpb25EYXRhLmNwcAorICAgIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5jcHAKICAgICBV
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKICAgICBVSVByb2Nl
c3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlR3Jv
dXAuY3BwCkBAIC0yODMsNiArMjg3LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLTWVkaWFDYWNoZU1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkRhdGEuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmNwcApAQCAtMzgwLDYgKzM4NSw4IEBAIFNFVChX
ZWJLaXQyX1NPVVJDRVMKIAogICAgIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUNhY2hl
TWFuYWdlci5jcHAKIAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9N
YW5hZ2VyLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKIApAQCAtNDEyLDYgKzQxOSw3IEBAIFNFVChXZWJL
aXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xp
ZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcApA
QCAtNDU2LDYgKzQ2NCw3IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJN
ZWRpYUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
ICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpA
QCAtNDg0LDYgKzQ5Myw4IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAgICBX
ZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4KIAor
ICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3NhZ2Vz
LmluCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDhjOTc0Yi4uYTk5MjZiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA2LTI1ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hy
aXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9y
IE5ldHdvcmsgSW5mb3JtYXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBOZXR3b3JrIEluZm9ybWF0aW9uIEFQSSBzdXBwb3J0IHRvIFdl
YktpdDIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybS9D
b3JlSVBDL01lc3NhZ2VJRC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYk5ldHdvcmtJ
bmZvLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mbzo6V2ViTmV0d29ya0luZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3Jr
SW5mbzo6fldlYk5ldHdvcmtJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86
OkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpEYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mbyk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5ldHdvcmtJbmZvOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3
b3JrSW5mbzo6bWV0ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpkYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OnR5cGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAg
IChXS05ldHdvcmtJbmZvTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpXZWJOZXR3b3JrSW5m
b01hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5Ojp+V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VOZXR3
b3JrSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5m
b01hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Z2V0QmFuZHdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmlzTWV0ZXJlZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoQ29yZUlQ
Qyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Y2xlYXJD
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnR5
cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlk
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5l
dHdvcmtJbmZvUHJvdmlkZXI6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3
b3JrSW5mb1Byb3ZpZGVyOjptZXRlcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmV0d29y
a0luZm9Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dl
Yk5ldHdvcmtJbmZvTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpXZWJOZXR3b3JrSW5mb01hbmFnZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6On5XZWJOZXR3b3JrSW5m
b01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpy
ZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6
OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5h
Z2VyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6
Om1ldGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRpZENo
YW5nZU5ldHdvcmtJbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrSW5m
by9XZWJOZXR3b3JrSW5mb01hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChDb3JlSVBDKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mb01hbmFnZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3NhZ2Vz
LmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdv
cmtJbmZvQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6fldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OmJhbmR3aWR0aCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjptZXRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1l
c3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtJbmZvTWFuYWdl
cik6CisKIDIwMTItMDYtMjUgIFlvdW5nVGFlY2sgU29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1z
dW5nLmNvbT4KIAogICAgICAgICBbV0syXVtRdF1bRUZMXSBNb3ZlIExheWVyQmFja2luZ1N0b3Jl
IGludG8gY29tbW9uIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlSUQuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMv
TWVzc2FnZUlELmgKaW5kZXggNWYzOThhYS4uZWFkNmU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCkBAIC00OCw2ICs0OCw3IEBAIGVudW0gTWVzc2Fn
ZUNsYXNzIHsKICAgICBNZXNzYWdlQ2xhc3NXZWJJbnNwZWN0b3IsCiAgICAgTWVzc2FnZUNsYXNz
V2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICBNZXNzYWdlQ2xhc3NXZWJNZWRpYUNhY2hl
TWFuYWdlciwKKyAgICBNZXNzYWdlQ2xhc3NXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSwKICAg
ICBNZXNzYWdlQ2xhc3NXZWJOb3RpZmljYXRpb25NYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc1dl
YlBhZ2UsCiAgICAgTWVzc2FnZUNsYXNzV2ViUHJvY2VzcywKQEAgLTcyLDYgKzczLDcgQEAgZW51
bSBNZXNzYWdlQ2xhc3MgewogICAgIE1lc3NhZ2VDbGFzc1dlYkluc3BlY3RvclByb3h5LAogICAg
IE1lc3NhZ2VDbGFzc1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSwKICAgICBNZXNzYWdl
Q2xhc3NXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LAorICAgIE1lc3NhZ2VDbGFzc1dlYk5ldHdv
cmtJbmZvTWFuYWdlciwKICAgICBNZXNzYWdlQ2xhc3NXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHksCiAgICAgTWVzc2FnZUNsYXNzV2ViUGFnZVByb3h5LAogICAgIE1lc3NhZ2VDbGFzc1dlYlBy
b2Nlc3NQcm94eSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jh
c2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA4YjdlODFm
Li5kNmI0YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xMDcsNiAr
MTA3LDggQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tJbnRlbnRTZXJ2aWNlSW5mbyog
V0tJbnRlbnRTZXJ2aWNlSW5mb1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLS2V5
VmFsdWVTdG9yYWdlTWFuYWdlciogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tNZWRpYUNhY2hlTWFuYWdlciogV0tNZWRpYUNhY2hlTWFu
YWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmF2aWdhdGlvbkRhdGEqIFdL
TmF2aWdhdGlvbkRhdGFSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05ldHdvcmtJ
bmZvTWFuYWdlciogV0tOZXR3b3JrSW5mb01hbmFnZXJSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS05ldHdvcmtJbmZvKiBXS05ldHdvcmtJbmZvUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tOb3RpZmljYXRpb24qIFdLTm90aWZpY2F0aW9uUmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tOb3RpZmljYXRpb25NYW5hZ2VyKiBXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KiBXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IGVhZDc0ZjAuLjZiM2M5YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgICAgICBUeXBlS2V5
VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICAgICAgVHlwZU1lZGlhQ2FjaGVNYW5hZ2VyLAogICAg
ICAgICBUeXBlTmF2aWdhdGlvbkRhdGEsCisgICAgICAgIFR5cGVOZXR3b3JrSW5mbywKKyAgICAg
ICAgVHlwZU5ldHdvcmtJbmZvTWFuYWdlciwKICAgICAgICAgVHlwZU5vdGlmaWNhdGlvbiwKICAg
ICAgICAgVHlwZU5vdGlmaWNhdGlvbk1hbmFnZXIsCiAgICAgICAgIFR5cGVOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJO
ZXR3b3JrSW5mby5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTmV0d29ya0luZm8uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MWQ2OTYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTmV0d29ya0luZm8uY3BwCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJOZXR3b3JrSW5mby5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJOZXR3b3JrSW5mbzo6V2ViTmV0d29ya0luZm8odW5zaWduZWQg
aW50IGJhbmR3aWR0aCwgYm9vbCBtZXRlcmVkKQoreworICAgIG1fZGF0YS5iYW5kd2lkdGggPSBi
YW5kd2lkdGg7CisgICAgbV9kYXRhLm1ldGVyZWQgPSBtZXRlcmVkOworfQorCitXZWJOZXR3b3Jr
SW5mbzo6fldlYk5ldHdvcmtJbmZvKCkKK3sKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mbzo6RGF0
YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oYmFuZHdpZHRoLCBtZXRlcmVkKSk7Cit9CisK
K2Jvb2wgV2ViTmV0d29ya0luZm86OkRhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIERhdGEmIGRhdGEpCit7CisgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShD
b3JlSVBDOjpPdXQoZGF0YS5iYW5kd2lkdGgsIGRhdGEubWV0ZXJlZCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTmV0d29ya0luZm8uaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmI5YWEzOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViTmV0d29ya0luZm8uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYk5ldHdvcmtJbmZvX2gKKyNkZWZpbmUgV2ViTmV0d29ya0luZm9faAorCisjaWYg
RU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
IkFyZ3VtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJO
ZXR3b3JrSW5mbyA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBUeXBlIEFQSVR5cGUgPSBUeXBlTmV0d29ya0luZm87CisKKyAgICBzdHJ1Y3QgRGF0YSB7Cisg
ICAgICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAg
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgRGF0YSYp
OworCisgICAgICAgIHVuc2lnbmVkIGludCBiYW5kd2lkdGg7CisgICAgICAgIGJvb2wgbWV0ZXJl
ZDsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViTmV0d29ya0luZm8+IGNyZWF0
ZSh1bnNpZ25lZCBpbnQgYmFuZHdpZHRoLCBib29sIG1ldGVyZWQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYk5ldHdvcmtJbmZvKGJhbmR3aWR0aCwgbWV0ZXJlZCkpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgfldlYk5ldHdvcmtJbmZvKCk7CisKKyAgICB1bnNpZ25lZCBp
bnQgYmFuZHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmJhbmR3aWR0aDsgfQorICAgIGJv
b2wgbWV0ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5tZXRlcmVkOyB9CisKKyAgICBjb25z
dCBEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisKK3ByaXZhdGU6CisgICAg
V2ViTmV0d29ya0luZm8odW5zaWduZWQgaW50IGJhbmR3aWR0aCwgYm9vbCBtZXRlcmVkKTsKKwor
ICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAg
RGF0YSBtX2RhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBXZWJOZXR3b3JrSW5mb19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKaW5kZXggODE2ZjhmMS4uNDJlMWU3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNzUs
NiArNzUsOCBAQCBjbGFzcyBXZWJJbnRlbnRTZXJ2aWNlSW5mbzsKIGNsYXNzIFdlYktleVZhbHVl
U3RvcmFnZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHk7CiBj
bGFzcyBXZWJOYXZpZ2F0aW9uRGF0YTsKK2NsYXNzIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
OworY2xhc3MgV2ViTmV0d29ya0luZm87CiBjbGFzcyBXZWJOb3RpZmljYXRpb247CiBjbGFzcyBX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcjsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTsKQEAgLTExNCw2ICsxMTYsOCBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tJbnRlbnRTZXJ2aWNl
SW5mb1JlZiwgV2ViSW50ZW50U2VydmljZUluZm8pCiBXS19BRERfQVBJX01BUFBJTkcoV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyUmVmLCBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tNZWRpYUNhY2hlTWFuYWdlclJlZiwgV2ViTWVkaWFDYWNoZU1h
bmFnZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS05hdmlnYXRpb25EYXRhUmVmLCBXZWJO
YXZpZ2F0aW9uRGF0YSkKK1dLX0FERF9BUElfTUFQUElORyhXS05ldHdvcmtJbmZvTWFuYWdlclJl
ZiwgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkpCitXS19BRERfQVBJX01BUFBJTkcoV0tOZXR3
b3JrSW5mb1JlZiwgV2ViTmV0d29ya0luZm8pCiBXS19BRERfQVBJX01BUFBJTkcoV0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmLCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZiwgTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOb3RpZmljYXRpb25Qcm92
aWRlclJlZiwgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTA3MzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tOZXR3b3JrSW5mb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLTmV0d29ya0luZm9NYW5hZ2VyR2V0VHlwZUlEKCkK
K3sKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorICAgIHJldHVybiB0b0FQSShXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eTo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlm
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3Jr
SW5mb01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJ
bmZvTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNjJjYzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3
b3JrSW5mb01hbmFnZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdLTmV0d29ya0luZm9NYW5hZ2VyX2gKKyNkZWZpbmUgV0tOZXR3b3JrSW5mb01hbmFn
ZXJfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVz
CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLyBQcm92aWRlci4KK3R5cGVkZWYgdm9pZCAoKldL
TmV0d29ya0luZm9Qcm92aWRlclN0YXJ0VXBkYXRpbmdDYWxsYmFjaykoV0tOZXR3b3JrSW5mb01h
bmFnZXJSZWYgbmV0d29ya0luZm9NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5
cGVkZWYgdm9pZCAoKldLTmV0d29ya0luZm9Qcm92aWRlclN0b3BVcGRhdGluZ0NhbGxiYWNrKShX
S05ldHdvcmtJbmZvTWFuYWdlclJlZiBuZXR3b3JrSW5mb01hbmFnZXIsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgKCpXS05ldHdvcmtJbmZvUHJvdmlkZXJH
ZXRCYW5kd2lkdGhDYWxsYmFjaykoV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgbmV0d29ya0luZm9N
YW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgYm9vbCAoKldLTmV0d29y
a0luZm9Qcm92aWRlcklzTWV0ZXJlZENhbGxiYWNrKShXS05ldHdvcmtJbmZvTWFuYWdlclJlZiBu
ZXR3b3JrSW5mb01hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCitzdHJ1Y3QgV0tO
ZXR3b3JrSW5mb1Byb3ZpZGVyIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qg
dm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGllbnRJbmZvOworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlclN0YXJ0VXBkYXRpbmdD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRVcGRhdGluZzsKKyAgICBXS05l
dHdvcmtJbmZvUHJvdmlkZXJTdG9wVXBkYXRpbmdDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0b3BVcGRhdGluZzsKKyAgICBXS05ldHdvcmtJbmZvUHJvdmlkZXJHZXRCYW5kd2lk
dGhDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aDsKKyAgICBXS05l
dHdvcmtJbmZvUHJvdmlkZXJJc01ldGVyZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1ldGVyZWQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tOZXR3b3JrSW5mb1Byb3ZpZGVy
IFdLTmV0d29ya0luZm9Qcm92aWRlcjsKKworZW51bSB7IGtXS05ldHdvcmtJbmZvUHJvdmlkZXJD
dXJyZW50VmVyc2lvbiA9IDAgfTsKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLTmV0d29ya0luZm9N
YW5hZ2VyR2V0VHlwZUlEKCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvLyBXS05ldHdvcmtJbmZvTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTVhNzY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmNwcApAQCAtMCww
ICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoTkVUV09S
S19JTkZPKQorCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJ
bmZvLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZXMuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk+
IFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KGNv
bnRleHQpKTsKK30KKworV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OldlYk5ldHdvcmtJbmZv
TWFuYWdlclByb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2lzVXBkYXRpbmcoZmFs
c2UpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHk6On5XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2Vi
TmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUoKQoreworICAgIHN0b3BVcGRhdGlu
ZygpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJv
dmlkZXIoY29uc3QgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBtX3By
b3ZpZGVyLmluaXRpYWxpemUocHJvdmlkZXIpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgV2ViTmV0d29ya0luZm8qIG5ldHdvcmtJbmZvcm1hdGlvbikK
K3sKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0
LT5zZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlcjo6RGlk
Q2hhbmdlTmV0d29ya0luZm9ybWF0aW9uKGV2ZW50VHlwZSwgbmV0d29ya0luZm9ybWF0aW9uLT5k
YXRhKCkpKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6ZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2Fn
ZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7Cisg
ICAgZGlkUmVjZWl2ZVdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5TWVzc2FnZShjb25uZWN0aW9u
LCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHk6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIGlmIChtX2lzVXBkYXRpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcHJvdmlkZXIuc3RhcnRVcGRhdGluZyh0aGlzKTsKKyAgICBtX2lz
VXBkYXRpbmcgPSB0cnVlOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojpz
dG9wVXBkYXRpbmcoKQoreworICAgIGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3Byb3ZpZGVyLnN0b3BVcGRhdGluZyh0aGlzKTsKKyAgICBtX2lzVXBkYXRpbmcg
PSBmYWxzZTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Z2V0QmFuZHdp
ZHRoKHVuc2lnbmVkIGludCYgYmFuZHdpZHRoKQoreworICAgIGJhbmR3aWR0aCA9IG1fcHJvdmlk
ZXIuYmFuZHdpZHRoKHRoaXMpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
Ojppc01ldGVyZWQoYm9vbCYgbWV0ZXJlZCkKK3sKKyAgICBtZXRlcmVkID0gbV9wcm92aWRlci5t
ZXRlcmVkKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShORVRXT1JLX0lORk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjRjMTI5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5X2gKKyNkZWZp
bmUgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5G
TykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2lu
Y2x1ZGUgIldlYk5ldHdvcmtJbmZvUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCituYW1lc3BhY2UgQ29yZUlQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBB
cmd1bWVudEVuY29kZXI7CitjbGFzcyBDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViQ29udGV4dDsKK2NsYXNzIFdlYk5ldHdvcmtJbmZvOworCitjbGFzcyBX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlTmV0d29ya0luZm9NYW5hZ2VyOwor
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk+IGNyZWF0
ZShXZWJDb250ZXh0Kik7CisgICAgdmlydHVhbCB+V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHko
KTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBt
X2NvbnRleHQgPSAwOyB9CisKKyAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS05l
dHdvcmtJbmZvUHJvdmlkZXIqKTsKKworICAgIHZvaWQgcHJvdmlkZXJEaWRDaGFuZ2VOZXR3b3Jr
SW5mb3JtYXRpb24oY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgV2ViTmV0d29y
a0luZm8qKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoV2ViQ29udGV4
dCopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9
CisKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV1RGOjpPd25Q
dHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYpOworCisgICAgdm9pZCBzdGFydFVwZGF0aW5n
KCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKworICAgIHZvaWQgZ2V0QmFuZHdpZHRoKHVu
c2lnbmVkIGludCYpOworICAgIHZvaWQgaXNNZXRlcmVkKGJvb2wmKTsKKworICAgIGJvb2wgbV9p
c1VwZGF0aW5nOworCisgICAgV2ViQ29udGV4dCogbV9jb250ZXh0OworICAgIFdlYk5ldHdvcmtJ
bmZvUHJvdmlkZXIgbV9wcm92aWRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZv
TWFuYWdlclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGE2NGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
KyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworbWVzc2FnZXMgLT4gV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHkgeworICAgIFN0YXJ0VXBkYXRpbmcoKTsKKyAgICBTdG9wVXBk
YXRpbmcoKTsKKworICAgIEdldEJhbmR3aWR0aCgpIC0+ICh1bnNpZ25lZCBpbnQgYmFuZHdpZHRo
KTsKKyAgICBJc01ldGVyZWQoKSAtPiAoYm9vbCBtZXRlcmVkKTsKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2ZGI4ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNw
cApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9Qcm92aWRlci5oIgorCisjaWYgRU5BQkxFKE5F
VFdPUktfSU5GTykKKworI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYk5l
dHdvcmtJbmZvUHJvdmlkZXI6OnN0YXJ0VXBkYXRpbmcoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHkqIG5ldHdvcmtJbmZvTWFuYWdlcikKK3sKKyAgICBpZiAoIW1fY2xpZW50LnN0YXJ0VXBkYXRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcodG9BUEko
bmV0d29ya0luZm9NYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2Vi
TmV0d29ya0luZm9Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKFdlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5KiBuZXR3b3JrSW5mb01hbmFnZXIpCit7CisgICAgaWYgKCFtX2NsaWVudC5zdG9wVXBkYXRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZyh0b0FQSShu
ZXR3b3JrSW5mb01hbmFnZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordW5zaWduZWQg
aW50IFdlYk5ldHdvcmtJbmZvUHJvdmlkZXI6OmJhbmR3aWR0aChXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eSogbmV0d29ya0luZm9NYW5hZ2VyKSBjb25zdAoreworICAgIGlmICghbV9jbGllbnQu
YmFuZHdpZHRoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX2NsaWVudC5iYW5k
d2lkdGgodG9BUEkobmV0d29ya0luZm9NYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9
CisKK2Jvb2wgV2ViTmV0d29ya0luZm9Qcm92aWRlcjo6bWV0ZXJlZChXZWJOZXR3b3JrSW5mb01h
bmFnZXJQcm94eSogbmV0d29ya0luZm9NYW5hZ2VyKSBjb25zdAoreworICAgIGlmICghbV9jbGll
bnQubWV0ZXJlZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50
Lm1ldGVyZWQodG9BUEkobmV0d29ya0luZm9NYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
SU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5m
b1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92
aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjOGE1NjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92
aWRlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
TmV0d29ya0luZm9Qcm92aWRlcl9oCisjZGVmaW5lIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXJfaAor
CisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2lu
Y2x1ZGUgIldLTmV0d29ya0luZm9NYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
OworCitjbGFzcyBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyIDogcHVibGljIEFQSUNsaWVudDxXS05l
dHdvcmtJbmZvUHJvdmlkZXIsIGtXS05ldHdvcmtJbmZvUHJvdmlkZXJDdXJyZW50VmVyc2lvbj4g
eworcHVibGljOgorICAgIHZvaWQgc3RhcnRVcGRhdGluZyhXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eSopOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
Kik7CisKKyAgICB1bnNpZ25lZCBpbnQgYmFuZHdpZHRoKFdlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5KikgY29uc3Q7CisgICAgYm9vbCBtZXRlcmVkKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
KikgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29y
a0luZm9NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8v
V2ViTmV0d29ya0luZm9NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kNzI5ODA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
TmV0d29ya0luZm9NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5j
bHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0luZm9Db250cm9sbGVyLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTmV0
d29ya0luZm9NYW5hZ2VyOjpXZWJOZXR3b3JrSW5mb01hbmFnZXIoV2ViUHJvY2VzcyogcHJvY2Vz
cykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6On5XZWJOZXR3b3JrSW5mb01hbmFnZXIoKQoreworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZv
TWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBhcmd1bWVudHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3Nh
Z2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQorCit2b2lkIFdlYk5ldHdv
cmtJbmZvTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgYm9v
bCB3YXNFbXB0eSA9IG1fcGFnZVNldC5pc0VtcHR5KCk7CisKKyAgICBtX3BhZ2VTZXQuYWRkKHBh
Z2UpOworCisgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRp
bmcoKSwgMCk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyOjp1bnJlZ2lzdGVyV2Vi
UGFnZShXZWJQYWdlKiBwYWdlKQoreworICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7CisKKyAg
ICBpZiAobV9wYWdlU2V0LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpTdG9wVXBkYXRp
bmcoKSwgMCk7Cit9CisKK3Vuc2lnbmVkIGludCBXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmJhbmR3
aWR0aChXZWJQYWdlKiBwYWdlKSBjb25zdAoreworICAgIHVuc2lnbmVkIGludCBiYW5kd2lkdGgg
PSB0cnVlOworICAgIHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6R2V0QmFuZHdpZHRoKCksIGJhbmR3aWR0aCk7CisgICAgcmV0dXJuIGJhbmR3aWR0
aDsKK30KKworYm9vbCBXZWJOZXR3b3JrSW5mb01hbmFnZXI6Om1ldGVyZWQoV2ViUGFnZSogcGFn
ZSkgY29uc3QKK3sKKyAgICBib29sIG1ldGVyZWQgPSB0cnVlOworICAgIHBhZ2UtPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6SXNNZXRlcmVkKCksIG1ldGVy
ZWQpOworICAgIHJldHVybiBtZXRlcmVkOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdl
cjo6ZGlkQ2hhbmdlTmV0d29ya0luZm9ybWF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBXZWJOZXR3b3JrSW5mbzo6RGF0YSYgZGF0YSkKK3sKKyAgICBSZWZQdHI8TmV0
d29ya0luZm8+IG5ldHdvcmtJbmZvcm1hdGlvbiA9IE5ldHdvcmtJbmZvOjpjcmVhdGUoZGF0YS5i
YW5kd2lkdGgsIGRhdGEubWV0ZXJlZCk7CisKKyAgICBIYXNoU2V0PFdlYlBhZ2UqPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3BhZ2VTZXQuYmVnaW4oKTsKKyAgICBIYXNoU2V0PFdlYlBhZ2UqPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9wYWdlU2V0LmVuZCgpOworICAgIGZvciAoOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgV2ViUGFnZSogcGFnZSA9ICppdDsKKyAgICAgICAgaWYgKHBh
Z2UtPmNvcmVQYWdlKCkpCisgICAgICAgICAgICBOZXR3b3JrSW5mb0NvbnRyb2xsZXI6OmZyb20o
cGFnZS0+Y29yZVBhZ2UoKSktPmRpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihldmVudFR5cGUs
IG5ldHdvcmtJbmZvcm1hdGlvbi5nZXQoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmViODk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJO
ZXR3b3JrSW5mb01hbmFnZXIuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYk5ldHdvcmtJbmZvTWFuYWdlcl9oCisjZGVmaW5lIFdlYk5ldHdvcmtJbmZv
TWFuYWdlcl9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiTWVzc2Fn
ZUlELmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vi
TmV0d29ya0luZm8uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorCituYW1l
c3BhY2UgQ29yZUlQQyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBDb25uZWN0aW9u
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2VzczsKK2NsYXNzIFdl
YlBhZ2U7CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZvTWFuYWdlciB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoV2ViTmV0d29ya0luZm9NYW5hZ2VyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBX
ZWJOZXR3b3JrSW5mb01hbmFnZXIoV2ViUHJvY2VzcyopOworICAgIH5XZWJOZXR3b3JrSW5mb01h
bmFnZXIoKTsKKworICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqKTsKKworICAgIHVuc2lnbmVkIGludCBiYW5kd2lk
dGgoV2ViUGFnZSopIGNvbnN0OworICAgIGJvb2wgbWV0ZXJlZChXZWJQYWdlKikgY29uc3Q7CisK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworCitwcml2YXRlOgorICAg
IC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViTmV0d29ya0luZm9NYW5hZ2VyTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqKTsKKworICAgIHZvaWQgZGlkQ2hhbmdlTmV0d29ya0luZm9ybWF0aW9u
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBXZWJOZXR3b3JrSW5mbzo6RGF0
YSYpOworCisgICAgV2ViUHJvY2VzcyogbV9wcm9jZXNzOworICAgIEhhc2hTZXQ8V2ViUGFnZSo+
IG1fcGFnZVNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvTWFuYWdlcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdv
cmtJbmZvTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYzg0MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5tZXNz
YWdlcy5pbgpAQCAtMCwwICsxLDI5IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKK21lc3NhZ2VzIC0+
IFdlYk5ldHdvcmtJbmZvTWFuYWdlciB7CisgICAgRGlkQ2hhbmdlTmV0d29ya0luZm9ybWF0aW9u
KEF0b21pY1N0cmluZyBldmVudFR5cGUsIFdlYktpdDo6V2ViTmV0d29ya0luZm86OkRhdGEgbmV0
d29ya0luZm9ybWF0aW9uKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGll
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkN2Y0YmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk5ldHdvcmtJbmZvQ2xpZW50LmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9DbGllbnQu
aCIKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5m
b01hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTmV0d29ya0luZm9DbGllbnQ6On5XZWJOZXR3
b3JrSW5mb0NsaWVudCgpCit7Cit9CisKK3Vuc2lnbmVkIGludCBXZWJOZXR3b3JrSW5mb0NsaWVu
dDo6YmFuZHdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0luZm9NYW5hZ2VyKCkuYmFuZHdpZHRoKG1fcGFnZSk7Cit9CisKK2Jvb2wgV2ViTmV0
d29ya0luZm9DbGllbnQ6Om1ldGVyZWQoKSBjb25zdAoreworICAgIHJldHVybiBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrSW5mb01hbmFnZXIoKS5tZXRlcmVkKG1fcGFnZSk7Cit9CisKK3Zv
aWQgV2ViTmV0d29ya0luZm9DbGllbnQ6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLm5ldHdvcmtJbmZvTWFuYWdlcigpLnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2Up
OworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvQ2xpZW50OjpzdG9wVXBkYXRpbmcoKQoreworICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtJbmZvTWFuYWdlcigpLnVucmVnaXN0ZXJXZWJQ
YWdlKG1fcGFnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjZjN2NiYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGll
bnQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk5l
dHdvcmtJbmZvQ2xpZW50X2gKKyNkZWZpbmUgV2ViTmV0d29ya0luZm9DbGllbnRfaAorCisjaWYg
RU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0luZm9DbGll
bnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdl
Yk5ldHdvcmtJbmZvQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBXZWJOZXR3b3JrSW5mb0NsaWVudChXZWJQYWdlKiBwYWdlKQorICAgICAg
ICA6IG1fcGFnZShwYWdlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJOZXR3b3Jr
SW5mb0NsaWVudCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGJhbmR3
aWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZXRlcmVkKCkgY29uc3Qg
T1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSBPVkVSUklERTsKKworICAgIFdlYlBhZ2Uq
IG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvQ2xpZW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiMDM4MmQuLmM2OWU4NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODAsNiArODAs
MTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21O
dW1iZXIuaD4KIAorI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisjaW5jbHVkZSAiV2ViTmV0d29y
a0luZm9NYW5hZ2VyTWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgIU9TKFdJTkRPV1MpCiAjaW5j
bHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKQEAgLTE0NSw2ICsxNDksOSBAQCBXZWJQcm9jZXNzOjpX
ZWJQcm9jZXNzKCkKICNlbmRpZgogICAgICwgbV90ZXh0Q2hlY2tlclN0YXRlKCkKICAgICAsIG1f
Z2VvbG9jYXRpb25NYW5hZ2VyKHRoaXMpCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICAs
IG1fbmV0d29ya0luZm9NYW5hZ2VyKHRoaXMpCisjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgICwgbV9ub3RpZmljYXRp
b25NYW5hZ2VyKHRoaXMpCiAjZW5kaWYKQEAgLTYzMSw2ICs2MzgsMTMgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBD
b3JlSVBDOjpNZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShORVRXT1JL
X0lORk8pCisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJOZXR3
b3JrSW5mb01hbmFnZXI+KCkpIHsKKyAgICAgICAgbV9uZXR3b3JrSW5mb01hbmFnZXIuZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1l
c3NhZ2VDbGFzc1dlYkljb25EYXRhYmFzZVByb3h5PigpKSB7CiAgICAgICAgIG1faWNvbkRhdGFi
YXNlUHJveHkuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVu
dHMpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDk4NmNlMzYuLjU2NzZkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCkBAIC01Nyw2ICs1NywxMCBAQCBjbGFzcyBRTmV0d29ya0FjY2Vzc01hbmFnZXI7CiAj
aW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKE5FVFdP
UktfSU5GTykKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXIuaCIKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykK
ICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTE0Miw2ICsx
NDYsMTAgQEAgcHVibGljOgogCiAgICAgLy8gR2VvbG9jYXRpb24KICAgICBXZWJHZW9sb2NhdGlv
bk1hbmFnZXImIGdlb2xvY2F0aW9uTWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25NYW5h
Z2VyOyB9CisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorICAgICBXZWJOZXR3b3JrSW5mb01h
bmFnZXImIG5ldHdvcmtJbmZvTWFuYWdlcigpIHsgcmV0dXJuIG1fbmV0d29ya0luZm9NYW5hZ2Vy
OyB9CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXImIG5vdGlmaWNh
dGlvbk1hbmFnZXIoKSB7IHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXI7IH0KQEAgLTI4Niw2
ICsyOTQsOSBAQCBwcml2YXRlOgogCiAgICAgVGV4dENoZWNrZXJTdGF0ZSBtX3RleHRDaGVja2Vy
U3RhdGU7CiAgICAgV2ViR2VvbG9jYXRpb25NYW5hZ2VyIG1fZ2VvbG9jYXRpb25NYW5hZ2VyOwor
I2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisgICAgV2ViTmV0d29ya0luZm9NYW5hZ2VyIG1fbmV0
d29ya0luZm9NYW5hZ2VyOworI2VuZGlmCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVO
QUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIG1f
bm90aWZpY2F0aW9uTWFuYWdlcjsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149458</attachid>
            <date>2012-06-25 22:44:47 -0700</date>
            <delta_ts>2012-06-26 05:10:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89870_wk2_networkinfo.patch</filename>
            <type>text/plain</type>
            <size>51442</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQwYmE4NC4uY2ZiN2FiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL05ldHdvcmtJ
bmZvIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkiCkBAIC0xNTQsNiArMTU1LDcgQEAg
U0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAg
IFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNw
cAorICAgIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAKICAgICBTaGFyZWQvV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
ICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTI0Niw2ICsyNDgsOCBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCisgICAgVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VHcm91
cC5jcHAKQEAgLTI4Myw2ICsyODcsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0zODAsNiArMzg1LDggQEAgU0VUKFdl
YktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01h
bmFnZXIuY3BwCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAogCkBAIC00MTEsNiArNDE4LDcgQEAgU0VUKFdlYktp
dDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZv
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cApAQCAtNDU2LDYgKzQ2NCw3IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9X
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNDg0LDYgKzQ5Myw4IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAg
ICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4K
IAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDZjYTRjYi4uMjNkYTUzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA2LTI1ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQg
Zm9yIE5ldHdvcmsgSW5mb3JtYXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBOZXR3b3JrIEluZm9ybWF0aW9uIEFQSSBzdXBwb3J0IHRv
IFdlYktpdDIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VJRC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYk5ldHdv
cmtJbmZvLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mbzo6V2ViTmV0d29ya0luZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3
b3JrSW5mbzo6fldlYk5ldHdvcmtJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0lu
Zm86OkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpEYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mbyk6CisgICAgICAgIChEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mbzo6bWV0ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpk
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OnR5cGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXS05ldHdvcmtJbmZvTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5Ojp+V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VO
ZXR3b3JrSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Z2V0QmFuZHdpZHRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmlzTWV0ZXJlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoQ29y
ZUlQQyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Y2xl
YXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6
OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJv
dmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5ldHdvcmtJbmZvUHJvdmlkZXI6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyOjptZXRlcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmV0
d29ya0luZm9Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmtJbmZv
L1dlYk5ldHdvcmtJbmZvTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6On5XZWJOZXR3b3Jr
SW5mb01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2Vy
OjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9N
YW5hZ2VyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6Om1ldGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRp
ZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
SW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChDb3JlSVBDKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mb01hbmFnZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5l
dHdvcmtJbmZvQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6fldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OmJhbmR3aWR0aCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjptZXRlcmVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAo
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtJbmZvTWFu
YWdlcik6CisKIDIwMTItMDYtMjUgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF0gTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBXZWJLaXQg
d2l0aG91dCBRdFdpZGdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0Nv
cmVJUEMvTWVzc2FnZUlELmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3Nh
Z2VJRC5oCmluZGV4IGQ5MjNhMWIuLmY5ZDYwODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vQ29yZUlQQy9NZXNzYWdlSUQuaApAQCAtNDgsNiArNDgsNyBAQCBlbnVtIE1lc3NhZ2VDbGFz
cyB7CiAgICAgTWVzc2FnZUNsYXNzV2ViSW5zcGVjdG9yLAogICAgIE1lc3NhZ2VDbGFzc1dlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzV2ViTWVkaWFDYWNoZU1hbmFn
ZXIsCisgICAgTWVzc2FnZUNsYXNzV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHksCiAgICAgTWVz
c2FnZUNsYXNzV2ViTm90aWZpY2F0aW9uTWFuYWdlciwKICAgICBNZXNzYWdlQ2xhc3NXZWJQYWdl
LAogICAgIE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3MsCkBAIC03Miw2ICs3Myw3IEBAIGVudW0gTWVz
c2FnZUNsYXNzIHsKICAgICBNZXNzYWdlQ2xhc3NXZWJJbnNwZWN0b3JQcm94eSwKICAgICBNZXNz
YWdlQ2xhc3NXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHksCiAgICAgTWVzc2FnZUNsYXNz
V2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSwKKyAgICBNZXNzYWdlQ2xhc3NXZWJOZXR3b3JrSW5m
b01hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LAog
ICAgIE1lc3NhZ2VDbGFzc1dlYlBhZ2VQcm94eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQcm9jZXNz
UHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggOGI3ZTgxZi4uZDZi
NGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTA3LDYgKzEwNyw4
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW50ZW50U2VydmljZUluZm8qIFdLSW50
ZW50U2VydmljZUluZm9SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0tleVZhbHVl
U3RvcmFnZU1hbmFnZXIqIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclJlZjsKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLTWVkaWFDYWNoZU1hbmFnZXIqIFdLTWVkaWFDYWNoZU1hbmFnZXJS
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmlnYXRpb25EYXRhKiBXS05hdmln
YXRpb25EYXRhUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOZXR3b3JrSW5mb01h
bmFnZXIqIFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tOZXR3b3JrSW5mbyogV0tOZXR3b3JrSW5mb1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLTm90aWZpY2F0aW9uKiBXS05vdGlmaWNhdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLTm90aWZpY2F0aW9uTWFuYWdlciogV0tOb3RpZmljYXRpb25NYW5hZ2Vy
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOb3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdFJlZjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAppbmRleCBlYWQ3NGYwLi42YjNjOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SU9iamVjdC5oCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZUtleVZhbHVl
U3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIFR5cGVNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAg
VHlwZU5hdmlnYXRpb25EYXRhLAorICAgICAgICBUeXBlTmV0d29ya0luZm8sCisgICAgICAgIFR5
cGVOZXR3b3JrSW5mb01hbmFnZXIsCiAgICAgICAgIFR5cGVOb3RpZmljYXRpb24sCiAgICAgICAg
IFR5cGVOb3RpZmljYXRpb25NYW5hZ2VyLAogICAgICAgICBUeXBlTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTmV0d29y
a0luZm8uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDFkNjk2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmNwcApAQCAtMCwwICsxLDU4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViTmV0d29ya0luZm8uaCIKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViTmV0d29ya0luZm86OldlYk5ldHdvcmtJbmZvKHVuc2lnbmVkIGludCBi
YW5kd2lkdGgsIGJvb2wgbWV0ZXJlZCkKK3sKKyAgICBtX2RhdGEuYmFuZHdpZHRoID0gYmFuZHdp
ZHRoOworICAgIG1fZGF0YS5tZXRlcmVkID0gbWV0ZXJlZDsKK30KKworV2ViTmV0d29ya0luZm86
On5XZWJOZXR3b3JrSW5mbygpCit7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm86OkRhdGE6OmVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGJhbmR3aWR0aCwgbWV0ZXJlZCkpOworfQorCitib29s
IFdlYk5ldHdvcmtJbmZvOjpEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBEYXRhJiBkYXRhKQoreworICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGUoQ29yZUlQ
Qzo6T3V0KGRhdGEuYmFuZHdpZHRoLCBkYXRhLm1ldGVyZWQpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViTmV0d29ya0luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iOWFhMzllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5l
dHdvcmtJbmZvLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJOZXR3b3JrSW5mb19oCisjZGVmaW5lIFdlYk5ldHdvcmtJbmZvX2gKKworI2lmIEVOQUJM
RShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJBcmd1
bWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTmV0d29y
a0luZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlw
ZSBBUElUeXBlID0gVHlwZU5ldHdvcmtJbmZvOworCisgICAgc3RydWN0IERhdGEgeworICAgICAg
ICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAgICAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIERhdGEmKTsKKwor
ICAgICAgICB1bnNpZ25lZCBpbnQgYmFuZHdpZHRoOworICAgICAgICBib29sIG1ldGVyZWQ7Cisg
ICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5ldHdvcmtJbmZvPiBjcmVhdGUodW5z
aWduZWQgaW50IGJhbmR3aWR0aCwgYm9vbCBtZXRlcmVkKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJOZXR3b3JrSW5mbyhiYW5kd2lkdGgsIG1ldGVyZWQpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5XZWJOZXR3b3JrSW5mbygpOworCisgICAgdW5zaWduZWQgaW50IGJh
bmR3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iYW5kd2lkdGg7IH0KKyAgICBib29sIG1l
dGVyZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubWV0ZXJlZDsgfQorCisgICAgY29uc3QgRGF0
YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCitwcml2YXRlOgorICAgIFdlYk5l
dHdvcmtJbmZvKHVuc2lnbmVkIGludCBiYW5kd2lkdGgsIGJvb2wgbWV0ZXJlZCk7CisKKyAgICB2
aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIERhdGEg
bV9kYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0d29ya0luZm9faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IDgxNmY4ZjEuLjQyZTFlNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTc1LDYgKzc1
LDggQEAgY2xhc3MgV2ViSW50ZW50U2VydmljZUluZm87CiBjbGFzcyBXZWJLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OwogY2xhc3Mg
V2ViTmF2aWdhdGlvbkRhdGE7CitjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTsKK2Ns
YXNzIFdlYk5ldHdvcmtJbmZvOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uOwogY2xhc3MgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXI7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CkBA
IC0xMTQsNiArMTE2LDggQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLSW50ZW50U2VydmljZUluZm9S
ZWYsIFdlYkludGVudFNlcnZpY2VJbmZvKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclJlZiwgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLTWVkaWFDYWNoZU1hbmFnZXJSZWYsIFdlYk1lZGlhQ2FjaGVNYW5hZ2Vy
UHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgV2ViTmF2aWdh
dGlvbkRhdGEpCitXS19BRERfQVBJX01BUFBJTkcoV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYsIFdl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLTmV0d29ya0lu
Zm9SZWYsIFdlYk5ldHdvcmtJbmZvKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTm90aWZpY2F0aW9u
TWFuYWdlclJlZiwgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTm90aWZpY2F0aW9uUHJvdmlkZXJS
ZWYsIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMWUwNzMzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAKQEAgLTAsMCAr
MSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldLTmV0d29ya0luZm9NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNp
bmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCitXS1R5cGVJRCBXS05ldHdvcmtJbmZvTWFuYWdlckdldFR5cGVJRCgpCit7Cisj
aWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICByZXR1cm4gdG9BUEkoV2ViTmV0d29ya0luZm9N
YW5hZ2VyUHJveHk6OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01h
bmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjYyY2MxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0lu
Zm9NYW5hZ2VyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS05ldHdvcmtJbmZvTWFuYWdlcl9oCisjZGVmaW5lIFdLTmV0d29ya0luZm9NYW5hZ2VyX2gK
KworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworLy8gUHJvdmlkZXIuCit0eXBlZGVmIHZvaWQgKCpXS05ldHdv
cmtJbmZvUHJvdmlkZXJTdGFydFVwZGF0aW5nQ2FsbGJhY2spKFdLTmV0d29ya0luZm9NYW5hZ2Vy
UmVmIG5ldHdvcmtJbmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS05ldHdvcmtJbmZvUHJvdmlkZXJTdG9wVXBkYXRpbmdDYWxsYmFjaykoV0tOZXR3
b3JrSW5mb01hbmFnZXJSZWYgbmV0d29ya0luZm9NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdW5zaWduZWQgaW50ICgqV0tOZXR3b3JrSW5mb1Byb3ZpZGVyR2V0QmFu
ZHdpZHRoQ2FsbGJhY2spKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmIG5ldHdvcmtJbmZvTWFuYWdl
ciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIGJvb2wgKCpXS05ldHdvcmtJbmZv
UHJvdmlkZXJJc01ldGVyZWRDYWxsYmFjaykoV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgbmV0d29y
a0luZm9NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0IFdLTmV0d29y
a0luZm9Qcm92aWRlciB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQg
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpZW50SW5mbzsKKyAgICBXS05ldHdvcmtJbmZvUHJvdmlkZXJTdGFydFVwZGF0aW5nQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VXBkYXRpbmc7CisgICAgV0tOZXR3b3Jr
SW5mb1Byb3ZpZGVyU3RvcFVwZGF0aW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdG9wVXBkYXRpbmc7CisgICAgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyR2V0QmFuZHdpZHRoQ2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGg7CisgICAgV0tOZXR3b3Jr
SW5mb1Byb3ZpZGVySXNNZXRlcmVkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtZXRlcmVkOworfTsKK3R5cGVkZWYgc3RydWN0IFdLTmV0d29ya0luZm9Qcm92aWRlciBXS05l
dHdvcmtJbmZvUHJvdmlkZXI7CisKK2VudW0geyBrV0tOZXR3b3JrSW5mb1Byb3ZpZGVyQ3VycmVu
dFZlcnNpb24gPSAwIH07CisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS05ldHdvcmtJbmZvTWFuYWdl
ckdldFR5cGVJRCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYg
Ly8gV0tOZXR3b3JrSW5mb01hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYjk1YTc2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHAKQEAgLTAsMCArMSwx
MDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5G
TykKKworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mby5o
IgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2VzLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5PiBXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eShjb250ZXh0
KSk7Cit9CisKK1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQorICAgIDogbV9pc1VwZGF0aW5nKGZhbHNlKQor
ICAgICwgbV9jb250ZXh0KGNvbnRleHQpCit7Cit9CisKK1dlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5Ojp+V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoKQoreworfQorCit2b2lkIFdlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBzdG9wVXBkYXRpbmcoKTsK
K30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVy
KGNvbnN0IFdLTmV0d29ya0luZm9Qcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgbV9wcm92aWRl
ci5pbml0aWFsaXplKHByb3ZpZGVyKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIFdlYk5ldHdvcmtJbmZvKiBuZXR3b3JrSW5mb3JtYXRpb24pCit7Cisg
ICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+c2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OkRpZENoYW5n
ZU5ldHdvcmtJbmZvcm1hdGlvbihldmVudFR5cGUsIG5ldHdvcmtJbmZvcm1hdGlvbi0+ZGF0YSgp
KSk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIGRp
ZFJlY2VpdmVXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZUlELCBhcmd1bWVudHMpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAobV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3Byb3ZpZGVyLnN0YXJ0VXBkYXRpbmcodGhpcyk7CisgICAgbV9pc1VwZGF0
aW5nID0gdHJ1ZTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6c3RvcFVw
ZGF0aW5nKCkKK3sKKyAgICBpZiAoIW1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9wcm92aWRlci5zdG9wVXBkYXRpbmcodGhpcyk7CisgICAgbV9pc1VwZGF0aW5nID0gZmFs
c2U7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmdldEJhbmR3aWR0aCh1
bnNpZ25lZCBpbnQmIGJhbmR3aWR0aCkKK3sKKyAgICBiYW5kd2lkdGggPSBtX3Byb3ZpZGVyLmJh
bmR3aWR0aCh0aGlzKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aXNN
ZXRlcmVkKGJvb2wmIG1ldGVyZWQpCit7CisgICAgbWV0ZXJlZCA9IG1fcHJvdmlkZXIubWV0ZXJl
ZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19JTkZPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40YzEyOTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eV9oCisjZGVmaW5lIFdl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5X2gKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJNZXNzYWdlSUQuaCIKKyNpbmNsdWRl
ICJXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKwor
bmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQXJndW1l
bnRFbmNvZGVyOworY2xhc3MgQ29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkNvbnRleHQ7CitjbGFzcyBXZWJOZXR3b3JrSW5mbzsKKworY2xhc3MgV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHkgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZU5ldHdvcmtJbmZvTWFuYWdlcjsKKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5PiBjcmVhdGUoV2Vi
Q29udGV4dCopOworICAgIHZpcnR1YWwgfldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KCk7CisK
KyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICB2b2lkIGNsZWFyQ29udGV4dCgpIHsgbV9jb250
ZXh0ID0gMDsgfQorCisgICAgdm9pZCBpbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tOZXR3b3Jr
SW5mb1Byb3ZpZGVyKik7CisKKyAgICB2b2lkIHByb3ZpZGVyRGlkQ2hhbmdlTmV0d29ya0luZm9y
bWF0aW9uKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFdlYk5ldHdvcmtJbmZv
Kik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsK
KworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisg
ICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZVdlYk5ldHdvcmtJbmZvTWFu
YWdlclByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2Vi
TmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdURjo6T3duUHRyPENv
cmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKKworICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOwor
ICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisKKyAgICB2b2lkIGdldEJhbmR3aWR0aCh1bnNpZ25l
ZCBpbnQmKTsKKyAgICB2b2lkIGlzTWV0ZXJlZChib29sJik7CisKKyAgICBib29sIG1faXNVcGRh
dGluZzsKKworICAgIFdlYkNvbnRleHQqIG1fY29udGV4dDsKKyAgICBXZWJOZXR3b3JrSW5mb1By
b3ZpZGVyIG1fcHJvdmlkZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMzRhNjRkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MCwwICsxLDMzIEBACisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKK21lc3NhZ2VzIC0+IFdlYk5ldHdvcmtJ
bmZvTWFuYWdlclByb3h5IHsKKyAgICBTdGFydFVwZGF0aW5nKCk7CisgICAgU3RvcFVwZGF0aW5n
KCk7CisKKyAgICBHZXRCYW5kd2lkdGgoKSAtPiAodW5zaWduZWQgaW50IGJhbmR3aWR0aCk7Cisg
ICAgSXNNZXRlcmVkKCkgLT4gKGJvb2wgbWV0ZXJlZCk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlkZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNzhlZDQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5jcHAKQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShORVRXT1JL
X0lORk8pCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5m
b01hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordm9pZCBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdGFydFVwZGF0aW5nKFdlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5KiBuZXR3b3JrSW5mb01hbmFnZXIpCit7CisgICAgaWYgKCFtX2Ns
aWVudC5zdGFydFVwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdGFy
dFVwZGF0aW5nKHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8p
OworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXI6OnN0b3BVcGRhdGluZyhXZWJOZXR3
b3JrSW5mb01hbmFnZXJQcm94eSogbmV0d29ya0luZm9NYW5hZ2VyKQoreworICAgIGlmICghbV9j
bGllbnQuc3RvcFVwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5zdG9w
VXBkYXRpbmcodG9BUEkobmV0d29ya0luZm9NYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
Cit9CisKK3Vuc2lnbmVkIGludCBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lkdGgoV2Vi
TmV0d29ya0luZm9NYW5hZ2VyUHJveHkqIG5ldHdvcmtJbmZvTWFuYWdlcikgY29uc3QKK3sKKyAg
ICAvLyBUaGUgc3BlYyBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgcmV0dXJuICJpbmZpbml0eSIg
aWYgdGhlIGJhbmR3aWR0aCBpcyB1bmtub3duLgorICAgIGlmICghbV9jbGllbnQuYmFuZHdpZHRo
KQorICAgICAgICByZXR1cm4gVUlOVF9NQVg7CisKKyAgICByZXR1cm4gbV9jbGllbnQuYmFuZHdp
ZHRoKHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQor
Citib29sIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXI6Om1ldGVyZWQoV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHkqIG5ldHdvcmtJbmZvTWFuYWdlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fY2xpZW50
Lm1ldGVyZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX2NsaWVudC5t
ZXRlcmVkKHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lO
Rk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Q
cm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlk
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzhhNTY0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlk
ZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk5l
dHdvcmtJbmZvUHJvdmlkZXJfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyX2gKKwor
I2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNs
dWRlICJXS05ldHdvcmtJbmZvTWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTsK
KworY2xhc3MgV2ViTmV0d29ya0luZm9Qcm92aWRlciA6IHB1YmxpYyBBUElDbGllbnQ8V0tOZXR3
b3JrSW5mb1Byb3ZpZGVyLCBrV0tOZXR3b3JrSW5mb1Byb3ZpZGVyQ3VycmVudFZlcnNpb24+IHsK
K3B1YmxpYzoKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHkqKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZyhXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSop
OworCisgICAgdW5zaWduZWQgaW50IGJhbmR3aWR0aChXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eSopIGNvbnN0OworICAgIGJvb2wgbWV0ZXJlZChXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSop
IGNvbnN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0d29ya0luZm9Qcm92aWRlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJ
bmZvTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dl
Yk5ldHdvcmtJbmZvTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWRjZDUyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDEwNCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk5l
dHdvcmtJbmZvTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1
ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQ
YWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0luZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtJbmZvQ29udHJvbGxlci5oPgorI2lu
Y2x1ZGUgPGxpbWl0cy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYk5ldHdvcmtJbmZvTWFuYWdlcjo6V2ViTmV0d29ya0luZm9NYW5hZ2Vy
KFdlYlByb2Nlc3MqIHByb2Nlc3MpCisgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKwor
V2ViTmV0d29ya0luZm9NYW5hZ2VyOjp+V2ViTmV0d29ya0luZm9NYW5hZ2VyKCkKK3sKK30KKwor
dm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIGRpZFJlY2VpdmVXZWJOZXR3
b3JrSW5mb01hbmFnZXJNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsK
K30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXI6OnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdl
KiBwYWdlKQoreworICAgIGJvb2wgd2FzRW1wdHkgPSBtX3BhZ2VTZXQuaXNFbXB0eSgpOworCisg
ICAgbV9wYWdlU2V0LmFkZChwYWdlKTsKKworICAgIGlmICh3YXNFbXB0eSkKKyAgICAgICAgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5OjpTdGFydFVwZGF0aW5nKCksIDApOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFu
YWdlcjo6dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSogcGFnZSkKK3sKKyAgICBtX3BhZ2VTZXQu
cmVtb3ZlKHBhZ2UpOworCisgICAgaWYgKG1fcGFnZVNldC5pc0VtcHR5KCkpCisgICAgICAgIG1f
cHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6U3RvcFVwZGF0aW5nKCksIDApOworfQorCit1bnNpZ25lZCBpbnQgV2ViTmV0d29y
a0luZm9NYW5hZ2VyOjpiYW5kd2lkdGgoV2ViUGFnZSogcGFnZSkgY29uc3QKK3sKKyAgICAvLyBU
aGUgc3BlYyBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgcmV0dXJuICJpbmZpbml0eSIgaWYgdGhl
IGJhbmR3aWR0aCBpcyB1bmtub3duLgorICAgIHVuc2lnbmVkIGludCBiYW5kd2lkdGggPSBVSU5U
X01BWDsKKyAgICBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHk6OkdldEJhbmR3aWR0aCgpLCBiYW5kd2lkdGgpOworICAgIHJldHVybiBiYW5kd2lkdGg7
Cit9CisKK2Jvb2wgV2ViTmV0d29ya0luZm9NYW5hZ2VyOjptZXRlcmVkKFdlYlBhZ2UqIHBhZ2Up
IGNvbnN0Cit7CisgICAgYm9vbCBtZXRlcmVkID0gZmFsc2U7CisgICAgcGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpJc01ldGVyZWQoKSwgbWV0ZXJl
ZCk7CisgICAgcmV0dXJuIG1ldGVyZWQ7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2Vy
OjpkaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGNvbnN0IFdlYk5ldHdvcmtJbmZvOjpEYXRhJiBkYXRhKQoreworICAgIFJlZlB0cjxOZXR3
b3JrSW5mbz4gbmV0d29ya0luZm9ybWF0aW9uID0gTmV0d29ya0luZm86OmNyZWF0ZShkYXRhLmJh
bmR3aWR0aCwgZGF0YS5tZXRlcmVkKTsKKworICAgIEhhc2hTZXQ8V2ViUGFnZSo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fcGFnZVNldC5iZWdpbigpOworICAgIEhhc2hTZXQ8V2ViUGFnZSo+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX3BhZ2VTZXQuZW5kKCk7CisgICAgZm9yICg7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBXZWJQYWdlKiBwYWdlID0gKml0OworICAgICAgICBpZiAocGFn
ZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgIE5ldHdvcmtJbmZvQ29udHJvbGxlcjo6ZnJvbShw
YWdlLT5jb3JlUGFnZSgpKS0+ZGlkQ2hhbmdlTmV0d29ya0luZm9ybWF0aW9uKGV2ZW50VHlwZSwg
bmV0d29ya0luZm9ybWF0aW9uLmdldCgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFu
YWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZWI4OTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5l
dHdvcmtJbmZvTWFuYWdlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViTmV0d29ya0luZm9NYW5hZ2VyX2gKKyNkZWZpbmUgV2ViTmV0d29ya0luZm9N
YW5hZ2VyX2gKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlICJNZXNzYWdl
SUQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJO
ZXR3b3JrSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVz
cGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIENvbm5lY3Rpb247
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzOworY2xhc3MgV2Vi
UGFnZTsKKworY2xhc3MgV2ViTmV0d29ya0luZm9NYW5hZ2VyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWJOZXR3b3JrSW5mb01hbmFnZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFdl
Yk5ldHdvcmtJbmZvTWFuYWdlcihXZWJQcm9jZXNzKik7CisgICAgfldlYk5ldHdvcmtJbmZvTWFu
YWdlcigpOworCisgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSopOworICAgIHZvaWQg
dW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSopOworCisgICAgdW5zaWduZWQgaW50IGJhbmR3aWR0
aChXZWJQYWdlKikgY29uc3Q7CisgICAgYm9vbCBtZXRlcmVkKFdlYlBhZ2UqKSBjb25zdDsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKK3ByaXZhdGU6CisgICAg
Ly8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciopOworCisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24o
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFdlYk5ldHdvcmtJbmZvOjpEYXRh
Jik7CisKKyAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAgSGFzaFNldDxXZWJQYWdlKj4g
bV9wYWdlU2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0d29ya0luZm9NYW5hZ2VyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29y
a0luZm9NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMuaW4KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYWNjODQwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworbWVzc2FnZXMgLT4g
V2ViTmV0d29ya0luZm9NYW5hZ2VyIHsKKyAgICBEaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24o
QXRvbWljU3RyaW5nIGV2ZW50VHlwZSwgV2ViS2l0OjpXZWJOZXR3b3JrSW5mbzo6RGF0YSBuZXR3
b3JrSW5mb3JtYXRpb24pOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVu
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q3ZjRiZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
TmV0d29ya0luZm9DbGllbnQuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb0NsaWVudC5o
IgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZv
TWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJOZXR3b3JrSW5mb0NsaWVudDo6fldlYk5ldHdv
cmtJbmZvQ2xpZW50KCkKK3sKK30KKwordW5zaWduZWQgaW50IFdlYk5ldHdvcmtJbmZvQ2xpZW50
OjpiYW5kd2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrSW5mb01hbmFnZXIoKS5iYW5kd2lkdGgobV9wYWdlKTsKK30KKworYm9vbCBXZWJOZXR3
b3JrSW5mb0NsaWVudDo6bWV0ZXJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtJbmZvTWFuYWdlcigpLm1ldGVyZWQobV9wYWdlKTsKK30KKwordm9p
ZCBXZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RhcnRVcGRhdGluZygpCit7CisgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0luZm9NYW5hZ2VyKCkucmVnaXN0ZXJXZWJQYWdlKG1fcGFnZSk7
Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9DbGllbnQ6OnN0b3BVcGRhdGluZygpCit7CisgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0luZm9NYW5hZ2VyKCkudW5yZWdpc3RlcldlYlBh
Z2UobV9wYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19JTkZPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNmM3Y2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVu
dC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTmV0
d29ya0luZm9DbGllbnRfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb0NsaWVudF9oCisKKyNpZiBF
TkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrSW5mb0NsaWVu
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2Vi
TmV0d29ya0luZm9DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6TmV0d29ya0luZm9DbGllbnQgewor
cHVibGljOgorICAgIFdlYk5ldHdvcmtJbmZvQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCisgICAgICAg
IDogbV9wYWdlKHBhZ2UpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgfldlYk5ldHdvcmtJ
bmZvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgYmFuZHdp
ZHRoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG1ldGVyZWQoKSBjb25zdCBP
VkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpIE9WRVJSSURFOworCisgICAgV2ViUGFnZSog
bV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
TkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0d29ya0luZm9DbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMmIwMzgyZC4uYzY5ZTg3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04MCw2ICs4MCwx
MCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51
bWJlci5oPgogCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyNpbmNsdWRlICJXZWJOZXR3b3Jr
SW5mb01hbmFnZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKICNpZiAhT1MoV0lORE9XUykKICNpbmNs
dWRlIDx1bmlzdGQuaD4KICNlbmRpZgpAQCAtMTQ1LDYgKzE0OSw5IEBAIFdlYlByb2Nlc3M6Oldl
YlByb2Nlc3MoKQogI2VuZGlmCiAgICAgLCBtX3RleHRDaGVja2VyU3RhdGUoKQogICAgICwgbV9n
ZW9sb2NhdGlvbk1hbmFnZXIodGhpcykKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorICAgICwg
bV9uZXR3b3JrSW5mb01hbmFnZXIodGhpcykKKyNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlv
bk1hbmFnZXIodGhpcykKICNlbmRpZgpAQCAtNjMxLDYgKzYzOCwxMyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lcwogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKE5FVFdPUktf
SU5GTykKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk5ldHdv
cmtJbmZvTWFuYWdlcj4oKSkgeworICAgICAgICBtX25ldHdvcmtJbmZvTWFuYWdlci5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVz
c2FnZUNsYXNzV2ViSWNvbkRhdGFiYXNlUHJveHk+KCkpIHsKICAgICAgICAgbV9pY29uRGF0YWJh
c2VQcm94eS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50
cyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggOTg2Y2UzNi4uNTY3NmQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTU3LDYgKzU3LDEwIEBAIGNsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKICNp
bmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09S
S19JTkZPKQorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlci5oIgorI2VuZGlmCisKICNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQog
I2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgpAQCAtMTQyLDYgKzE0
NiwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbgogICAgIFdlYkdlb2xvY2F0aW9u
TWFuYWdlciYgZ2VvbG9jYXRpb25NYW5hZ2VyKCkgeyByZXR1cm4gbV9nZW9sb2NhdGlvbk1hbmFn
ZXI7IH0KKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisgICAgIFdlYk5ldHdvcmtJbmZvTWFu
YWdlciYgbmV0d29ya0luZm9NYW5hZ2VyKCkgeyByZXR1cm4gbV9uZXR3b3JrSW5mb01hbmFnZXI7
IH0KKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVH
QUNZX05PVElGSUNBVElPTlMpCiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlciYgbm90aWZpY2F0
aW9uTWFuYWdlcigpIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uTWFuYWdlcjsgfQpAQCAtMjg2LDYg
KzI5NCw5IEBAIHByaXZhdGU6CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIG1fdGV4dENoZWNrZXJT
dGF0ZTsKICAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgbV9nZW9sb2NhdGlvbk1hbmFnZXI7Cisj
aWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXIgbV9uZXR3
b3JrSW5mb01hbmFnZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgbV9u
b3RpZmljYXRpb25NYW5hZ2VyOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149512</attachid>
            <date>2012-06-26 05:10:41 -0700</date>
            <delta_ts>2012-06-26 22:35:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89870_wk2_networkinfo.patch</filename>
            <type>text/plain</type>
            <size>51631</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQwYmE4NC4uY2ZiN2FiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL05ldHdvcmtJ
bmZvIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkiCkBAIC0xNTQsNiArMTU1LDcgQEAg
U0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAg
IFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNw
cAorICAgIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAKICAgICBTaGFyZWQvV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
ICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTI0Niw2ICsyNDgsOCBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCisgICAgVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VHcm91
cC5jcHAKQEAgLTI4Myw2ICsyODcsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0zODAsNiArMzg1LDggQEAgU0VUKFdl
YktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01h
bmFnZXIuY3BwCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAogCkBAIC00MTEsNiArNDE4LDcgQEAgU0VUKFdlYktp
dDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZv
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cApAQCAtNDU2LDYgKzQ2NCw3IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9X
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNDg0LDYgKzQ5Myw4IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAg
ICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4K
IAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDY3Yjk4OC4uZWZiOTU3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA2LTI1ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQg
Zm9yIE5ldHdvcmsgSW5mb3JtYXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBOZXR3b3JrIEluZm9ybWF0aW9uIEFQSSBzdXBwb3J0IHRv
IFdlYktpdDIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VJRC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYk5ldHdv
cmtJbmZvLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mbzo6V2ViTmV0d29ya0luZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3
b3JrSW5mbzo6fldlYk5ldHdvcmtJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0lu
Zm86OkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpEYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mbyk6CisgICAgICAgIChEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mbzo6bWV0ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpk
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OnR5cGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXS05ldHdvcmtJbmZvTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5Ojp+V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VO
ZXR3b3JrSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Z2V0QmFuZHdpZHRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmlzTWV0ZXJlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoQ29y
ZUlQQyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Y2xl
YXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6
OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJv
dmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5ldHdvcmtJbmZvUHJvdmlkZXI6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyOjptZXRlcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmV0
d29ya0luZm9Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmtJbmZv
L1dlYk5ldHdvcmtJbmZvTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6On5XZWJOZXR3b3Jr
SW5mb01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2Vy
OjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9N
YW5hZ2VyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6Om1ldGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRp
ZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
SW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChDb3JlSVBDKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mb01hbmFnZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5l
dHdvcmtJbmZvQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6fldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OmJhbmR3aWR0aCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjptZXRlcmVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAo
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtJbmZvTWFu
YWdlcik6CisKIDIwMTItMDYtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtHVEtdIFVuaW5pdGlhbGl6ZWQgdmFyaWFibGUg
aW4gVGV4dENoZWNrZXJHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlSUQuaAppbmRleCBkOTIzYTFiLi5mOWQ2MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBNZXNzYWdl
Q2xhc3MgewogICAgIE1lc3NhZ2VDbGFzc1dlYkluc3BlY3RvciwKICAgICBNZXNzYWdlQ2xhc3NX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyLAorICAgIE1lc3NhZ2VDbGFzc1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LAogICAg
IE1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzV2Vi
UGFnZSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzLApAQCAtNzIsNiArNzMsNyBAQCBlbnVt
IE1lc3NhZ2VDbGFzcyB7CiAgICAgTWVzc2FnZUNsYXNzV2ViSW5zcGVjdG9yUHJveHksCiAgICAg
TWVzc2FnZUNsYXNzV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LAogICAgIE1lc3NhZ2VD
bGFzc1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHksCisgICAgTWVzc2FnZUNsYXNzV2ViTmV0d29y
a0luZm9NYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQYWdlUHJveHksCiAgICAgTWVzc2FnZUNsYXNzV2ViUHJv
Y2Vzc1Byb3h5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDhiN2U4MWYu
LmQ2YjRjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEwNyw2ICsx
MDcsOCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0ludGVudFNlcnZpY2VJbmZvKiBX
S0ludGVudFNlcnZpY2VJbmZvUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhQ2FjaGVNYW5hZ2VyKiBXS01lZGlhQ2FjaGVNYW5h
Z2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tO
YXZpZ2F0aW9uRGF0YVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmV0d29ya0lu
Zm9NYW5hZ2VyKiBXS05ldHdvcmtJbmZvTWFuYWdlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLTmV0d29ya0luZm8qIFdLTmV0d29ya0luZm9SZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05vdGlmaWNhdGlvbiogV0tOb3RpZmljYXRpb25SZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS05vdGlmaWNhdGlvbk1hbmFnZXIqIFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QqIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggZWFkNzRmMC4uNmIzYzliNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaApAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBUeXBlTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAg
ICAgIFR5cGVOYXZpZ2F0aW9uRGF0YSwKKyAgICAgICAgVHlwZU5ldHdvcmtJbmZvLAorICAgICAg
ICBUeXBlTmV0d29ya0luZm9NYW5hZ2VyLAogICAgICAgICBUeXBlTm90aWZpY2F0aW9uLAogICAg
ICAgICBUeXBlTm90aWZpY2F0aW9uTWFuYWdlciwKICAgICAgICAgVHlwZU5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5l
dHdvcmtJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQxZDY5NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYk5ldHdvcmtJbmZvLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYk5ldHdvcmtJbmZvOjpXZWJOZXR3b3JrSW5mbyh1bnNpZ25lZCBp
bnQgYmFuZHdpZHRoLCBib29sIG1ldGVyZWQpCit7CisgICAgbV9kYXRhLmJhbmR3aWR0aCA9IGJh
bmR3aWR0aDsKKyAgICBtX2RhdGEubWV0ZXJlZCA9IG1ldGVyZWQ7Cit9CisKK1dlYk5ldHdvcmtJ
bmZvOjp+V2ViTmV0d29ya0luZm8oKQoreworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvOjpEYXRh
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihiYW5kd2lkdGgsIG1ldGVyZWQpKTsKK30KKwor
Ym9vbCBXZWJOZXR3b3JrSW5mbzo6RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgRGF0YSYgZGF0YSkKK3sKKyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENv
cmVJUEM6Ok91dChkYXRhLmJhbmR3aWR0aCwgZGF0YS5tZXRlcmVkKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYjlhYTM5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJOZXR3b3JrSW5mby5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViTmV0d29ya0luZm9faAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb19oCisKKyNpZiBF
TkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAi
QXJndW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk5l
dHdvcmtJbmZvIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IFR5cGUgQVBJVHlwZSA9IFR5cGVOZXR3b3JrSW5mbzsKKworICAgIHN0cnVjdCBEYXRhIHsKKyAg
ICAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAg
ICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBEYXRhJik7
CisKKyAgICAgICAgdW5zaWduZWQgaW50IGJhbmR3aWR0aDsKKyAgICAgICAgYm9vbCBtZXRlcmVk
OworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOZXR3b3JrSW5mbz4gY3JlYXRl
KHVuc2lnbmVkIGludCBiYW5kd2lkdGgsIGJvb2wgbWV0ZXJlZCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViTmV0d29ya0luZm8oYmFuZHdpZHRoLCBtZXRlcmVkKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+V2ViTmV0d29ya0luZm8oKTsKKworICAgIHVuc2lnbmVkIGlu
dCBiYW5kd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmFuZHdpZHRoOyB9CisgICAgYm9v
bCBtZXRlcmVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1ldGVyZWQ7IH0KKworICAgIGNvbnN0
IERhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworcHJpdmF0ZToKKyAgICBX
ZWJOZXR3b3JrSW5mbyh1bnNpZ25lZCBpbnQgYmFuZHdpZHRoLCBib29sIG1ldGVyZWQpOworCisg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBE
YXRhIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA4MTZmOGYxLi40MmUxZTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03NSw2
ICs3NSw4IEBAIGNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTsKIGNs
YXNzIFdlYk5hdmlnYXRpb25EYXRhOworY2xhc3MgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk7
CitjbGFzcyBXZWJOZXR3b3JrSW5mbzsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OwpAQCAtMTE0LDYgKzExNiw4IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ludGVudFNlcnZpY2VJ
bmZvUmVmLCBXZWJJbnRlbnRTZXJ2aWNlSW5mbykKIFdLX0FERF9BUElfTUFQUElORyhXS0tleVZh
bHVlU3RvcmFnZU1hbmFnZXJSZWYsIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSkKIFdL
X0FERF9BUElfTUFQUElORyhXS01lZGlhQ2FjaGVNYW5hZ2VyUmVmLCBXZWJNZWRpYUNhY2hlTWFu
YWdlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdlYk5h
dmlnYXRpb25EYXRhKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVm
LCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSkKK1dLX0FERF9BUElfTUFQUElORyhXS05ldHdv
cmtJbmZvUmVmLCBXZWJOZXR3b3JrSW5mbykKIFdLX0FERF9BUElfTUFQUElORyhXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWYsIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSkKIFdLX0FERF9BUElf
TUFQUElORyhXS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS05vdGlmaWNhdGlvblByb3Zp
ZGVyUmVmLCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMDczM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3BwCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXS05ldHdvcmtJbmZvTWFuYWdlci5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tOZXR3b3JrSW5mb01hbmFnZXJHZXRUeXBlSUQoKQor
eworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisgICAgcmV0dXJuIHRvQVBJKFdlYk5ldHdvcmtJ
bmZvTWFuYWdlclByb3h5OjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJ
bmZvTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0lu
Zm9NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI2MmNjMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdv
cmtJbmZvTWFuYWdlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV0tOZXR3b3JrSW5mb01hbmFnZXJfaAorI2RlZmluZSBXS05ldHdvcmtJbmZvTWFuYWdl
cl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vIFByb3ZpZGVyLgordHlwZWRlZiB2b2lkICgqV0tO
ZXR3b3JrSW5mb1Byb3ZpZGVyU3RhcnRVcGRhdGluZ0NhbGxiYWNrKShXS05ldHdvcmtJbmZvTWFu
YWdlclJlZiBuZXR3b3JrSW5mb01hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlw
ZWRlZiB2b2lkICgqV0tOZXR3b3JrSW5mb1Byb3ZpZGVyU3RvcFVwZGF0aW5nQ2FsbGJhY2spKFdL
TmV0d29ya0luZm9NYW5hZ2VyUmVmIG5ldHdvcmtJbmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIHVuc2lnbmVkIGludCAoKldLTmV0d29ya0luZm9Qcm92aWRlckdl
dEJhbmR3aWR0aENhbGxiYWNrKShXS05ldHdvcmtJbmZvTWFuYWdlclJlZiBuZXR3b3JrSW5mb01h
bmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgqV0tOZXR3b3Jr
SW5mb1Byb3ZpZGVySXNNZXRlcmVkQ2FsbGJhY2spKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmIG5l
dHdvcmtJbmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS05l
dHdvcmtJbmZvUHJvdmlkZXIgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2
b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsaWVudEluZm87CisgICAgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyU3RhcnRVcGRhdGluZ0Nh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFVwZGF0aW5nOworICAgIFdLTmV0
d29ya0luZm9Qcm92aWRlclN0b3BVcGRhdGluZ0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RvcFVwZGF0aW5nOworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlckdldEJhbmR3aWR0
aENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoOworICAgIFdLTmV0
d29ya0luZm9Qcm92aWRlcklzTWV0ZXJlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWV0ZXJlZDsKK307Cit0eXBlZGVmIHN0cnVjdCBXS05ldHdvcmtJbmZvUHJvdmlkZXIg
V0tOZXR3b3JrSW5mb1Byb3ZpZGVyOworCitlbnVtIHsga1dLTmV0d29ya0luZm9Qcm92aWRlckN1
cnJlbnRWZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQgV0tUeXBlSUQgV0tOZXR3b3JrSW5mb01h
bmFnZXJHZXRUeXBlSUQoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2Vu
ZGlmIC8vIFdLTmV0d29ya0luZm9NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NWE3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAg
KzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuaCIKKworI2lmIEVOQUJMRShORVRXT1JL
X0lORk8pCisKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0lu
Zm8uaCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdlcy5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eT4g
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoY29u
dGV4dCkpOworfQorCitXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6V2ViTmV0d29ya0luZm9N
YW5hZ2VyUHJveHkoV2ViQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1faXNVcGRhdGluZyhmYWxz
ZSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQoreworfQorCitXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6fldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KCkKK3sKK30KKwordm9pZCBXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCit7CisgICAgc3RvcFVwZGF0aW5n
KCk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmluaXRpYWxpemVQcm92
aWRlcihjb25zdCBXS05ldHdvcmtJbmZvUHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIG1fcHJv
dmlkZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlTmV0d29ya0luZm9ybWF0aW9uKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBXZWJOZXR3b3JrSW5mbyogbmV0d29ya0luZm9ybWF0aW9uKQor
eworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQt
PnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpEaWRD
aGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oZXZlbnRUeXBlLCBuZXR3b3JrSW5mb3JtYXRpb24tPmRh
dGEoKSkpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdl
SUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3sKKyAg
ICBkaWRSZWNlaXZlV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24s
IG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eTo6c3RhcnRVcGRhdGluZygpCit7CisgICAgaWYgKG1faXNVcGRhdGluZykKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wcm92aWRlci5zdGFydFVwZGF0aW5nKHRoaXMpOworICAgIG1faXNV
cGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnN0
b3BVcGRhdGluZygpCit7CisgICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fcHJvdmlkZXIuc3RvcFVwZGF0aW5nKHRoaXMpOworICAgIG1faXNVcGRhdGluZyA9
IGZhbHNlOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpnZXRCYW5kd2lk
dGgodW5zaWduZWQgaW50JiBiYW5kd2lkdGgpCit7CisgICAgYmFuZHdpZHRoID0gbV9wcm92aWRl
ci5iYW5kd2lkdGgodGhpcyk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6
OmlzTWV0ZXJlZChib29sJiBtZXRlcmVkKQoreworICAgIG1ldGVyZWQgPSBtX3Byb3ZpZGVyLm1l
dGVyZWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNGMxMjk1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlfaAorI2RlZmlu
ZSBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eV9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZP
KQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiTWVzc2FnZUlELmgiCisjaW5j
bHVkZSAiV2ViTmV0d29ya0luZm9Qcm92aWRlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFy
Z3VtZW50RW5jb2RlcjsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2ViTmV0d29ya0luZm87CisKK2NsYXNzIFdl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVOZXR3b3JrSW5mb01hbmFnZXI7CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eT4gY3JlYXRl
KFdlYkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIH5XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSgp
OworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1f
Y29udGV4dCA9IDA7IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTmV0
d29ya0luZm9Qcm92aWRlciopOworCisgICAgdm9pZCBwcm92aWRlckRpZENoYW5nZU5ldHdvcmtJ
bmZvcm1hdGlvbihjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBXZWJOZXR3b3Jr
SW5mbyopOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eShXZWJDb250ZXh0
Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0K
KworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJOZXR3b3JrSW5m
b01hbmFnZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3lu
Y1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXVEY6Ok93blB0
cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmco
KTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCisgICAgdm9pZCBnZXRCYW5kd2lkdGgodW5z
aWduZWQgaW50Jik7CisgICAgdm9pZCBpc01ldGVyZWQoYm9vbCYpOworCisgICAgYm9vbCBtX2lz
VXBkYXRpbmc7CisKKyAgICBXZWJDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgV2ViTmV0d29ya0lu
Zm9Qcm92aWRlciBtX3Byb3ZpZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0d29ya0luZm9N
YW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YTY0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCittZXNzYWdlcyAtPiBXZWJOZXR3
b3JrSW5mb01hbmFnZXJQcm94eSB7CisgICAgU3RhcnRVcGRhdGluZygpOworICAgIFN0b3BVcGRh
dGluZygpOworCisgICAgR2V0QmFuZHdpZHRoKCkgLT4gKHVuc2lnbmVkIGludCBiYW5kd2lkdGgp
OworICAgIElzTWV0ZXJlZCgpIC0+IChib29sIG1ldGVyZWQpOworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjc4ZWQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlkZXIuY3Bw
CkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUoTkVU
V09SS19JTkZPKQorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgV2ViTmV0d29ya0luZm9Qcm92aWRlcjo6c3RhcnRVcGRhdGluZyhXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eSogbmV0d29ya0luZm9NYW5hZ2VyKQoreworICAgIGlmICgh
bV9jbGllbnQuc3RhcnRVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
c3RhcnRVcGRhdGluZyh0b0FQSShuZXR3b3JrSW5mb01hbmFnZXIpLCBtX2NsaWVudC5jbGllbnRJ
bmZvKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmcoV2Vi
TmV0d29ya0luZm9NYW5hZ2VyUHJveHkqIG5ldHdvcmtJbmZvTWFuYWdlcikKK3sKKyAgICBpZiAo
IW1fY2xpZW50LnN0b3BVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
c3RvcFVwZGF0aW5nKHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdlciksIG1fY2xpZW50LmNsaWVudElu
Zm8pOworfQorCit1bnNpZ25lZCBpbnQgV2ViTmV0d29ya0luZm9Qcm92aWRlcjo6YmFuZHdpZHRo
KFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KiBuZXR3b3JrSW5mb01hbmFnZXIpIGNvbnN0Cit7
CisgICAgLy8gVGhlIHNwZWMgaW5kaWNhdGVzIHRoYXQgd2Ugc2hvdWxkIHJldHVybiAiaW5maW5p
dHkiIGlmIHRoZSBiYW5kd2lkdGggaXMgdW5rbm93bi4KKyAgICBpZiAoIW1fY2xpZW50LmJhbmR3
aWR0aCkKKyAgICAgICAgcmV0dXJuIFVJTlRfTUFYOworCisgICAgcmV0dXJuIG1fY2xpZW50LmJh
bmR3aWR0aCh0b0FQSShuZXR3b3JrSW5mb01hbmFnZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
K30KKworYm9vbCBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjptZXRlcmVkKFdlYk5ldHdvcmtJbmZv
TWFuYWdlclByb3h5KiBuZXR3b3JrSW5mb01hbmFnZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Ns
aWVudC5tZXRlcmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGll
bnQubWV0ZXJlZCh0b0FQSShuZXR3b3JrSW5mb01hbmFnZXIpLCBtX2NsaWVudC5jbGllbnRJbmZv
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09S
S19JTkZPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJ
bmZvUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1By
b3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4YTU2NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1By
b3ZpZGVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyX2gKKyNkZWZpbmUgV2ViTmV0d29ya0luZm9Qcm92aWRlcl9o
CisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisj
aW5jbHVkZSAiV0tOZXR3b3JrSW5mb01hbmFnZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHk7CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXIgOiBwdWJsaWMgQVBJQ2xpZW50PFdL
TmV0d29ya0luZm9Qcm92aWRlciwga1dLTmV0d29ya0luZm9Qcm92aWRlckN1cnJlbnRWZXJzaW9u
PiB7CitwdWJsaWM6CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKFdlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5Kik7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHkqKTsKKworICAgIHVuc2lnbmVkIGludCBiYW5kd2lkdGgoV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHkqKSBjb25zdDsKKyAgICBib29sIG1ldGVyZWQoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHkqKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3
b3JrSW5mb01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5m
by9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjg0NDQyNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxMDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJOZXR3b3JrSW5mb01hbmFnZXIuaCIKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNp
bmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrSW5mb0NvbnRyb2xsZXIuaD4K
KyNpbmNsdWRlIDxsaW1pdHMuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJOZXR3b3JrSW5mb01hbmFnZXI6OldlYk5ldHdvcmtJbmZvTWFu
YWdlcihXZWJQcm9jZXNzKiBwcm9jZXNzKQorICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCit7Cit9
CisKK1dlYk5ldHdvcmtJbmZvTWFuYWdlcjo6fldlYk5ldHdvcmtJbmZvTWFuYWdlcigpCit7Cit9
CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3sKKyAgICBkaWRSZWNlaXZlV2Vi
TmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50
cyk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyOjpyZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZSogcGFnZSkKK3sKKyAgICBib29sIHdhc0VtcHR5ID0gbV9wYWdlU2V0LmlzRW1wdHkoKTsK
KworICAgIG1fcGFnZVNldC5hZGQocGFnZSk7CisKKyAgICBpZiAod2FzRW1wdHkpCisgICAgICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOZXR3b3JrSW5mb01h
bmFnZXJQcm94eTo6U3RhcnRVcGRhdGluZygpLCAwKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5m
b01hbmFnZXI6OnVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgbV9wYWdl
U2V0LnJlbW92ZShwYWdlKTsKKworICAgIGlmIChtX3BhZ2VTZXQuaXNFbXB0eSgpKQorICAgICAg
ICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViTmV0d29ya0luZm9N
YW5hZ2VyUHJveHk6OlN0b3BVcGRhdGluZygpLCAwKTsKK30KKwordW5zaWduZWQgaW50IFdlYk5l
dHdvcmtJbmZvTWFuYWdlcjo6YmFuZHdpZHRoKFdlYlBhZ2UqIHBhZ2UpIGNvbnN0Cit7CisgICAg
Ly8gVGhlIHNwZWMgaW5kaWNhdGVzIHRoYXQgd2Ugc2hvdWxkIHJldHVybiAiaW5maW5pdHkiIGlm
IHRoZSBiYW5kd2lkdGggaXMgdW5rbm93bi4KKyAgICB1bnNpZ25lZCBpbnQgYmFuZHdpZHRoID0g
VUlOVF9NQVg7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6R2V0QmFuZHdpZHRoKCksIE1lc3NhZ2VzOjpX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6R2V0QmFuZHdpZHRoOjpSZXBseShiYW5kd2lkdGgp
LCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcmV0dXJuIGJhbmR3aWR0aDsKK30KKworYm9vbCBXZWJO
ZXR3b3JrSW5mb01hbmFnZXI6Om1ldGVyZWQoV2ViUGFnZSogcGFnZSkgY29uc3QKK3sKKyAgICBi
b29sIG1ldGVyZWQgPSBmYWxzZTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpJc01ldGVyZWQoKSwgTWVz
c2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpJc01ldGVyZWQ6OlJlcGx5KG1ldGVy
ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcmV0dXJuIG1ldGVyZWQ7Cit9CisKK3ZvaWQgV2Vi
TmV0d29ya0luZm9NYW5hZ2VyOjpkaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFdlYk5ldHdvcmtJbmZvOjpEYXRhJiBkYXRhKQor
eworICAgIFJlZlB0cjxOZXR3b3JrSW5mbz4gbmV0d29ya0luZm9ybWF0aW9uID0gTmV0d29ya0lu
Zm86OmNyZWF0ZShkYXRhLmJhbmR3aWR0aCwgZGF0YS5tZXRlcmVkKTsKKworICAgIEhhc2hTZXQ8
V2ViUGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGFnZVNldC5iZWdpbigpOworICAgIEhh
c2hTZXQ8V2ViUGFnZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3BhZ2VTZXQuZW5kKCk7Cisg
ICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBXZWJQYWdlKiBwYWdlID0gKml0
OworICAgICAgICBpZiAocGFnZS0+Y29yZVBhZ2UoKSkKKyAgICAgICAgICAgIE5ldHdvcmtJbmZv
Q29udHJvbGxlcjo6ZnJvbShwYWdlLT5jb3JlUGFnZSgpKS0+ZGlkQ2hhbmdlTmV0d29ya0luZm9y
bWF0aW9uKGV2ZW50VHlwZSwgbmV0d29ya0luZm9ybWF0aW9uLmdldCgpKTsKKyAgICB9Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0
d29ya0luZm9NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZv
L1dlYk5ldHdvcmtJbmZvTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmNmZWI4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTmV0d29ya0luZm9NYW5hZ2VyX2gKKyNkZWZp
bmUgV2ViTmV0d29ya0luZm9NYW5hZ2VyX2gKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisK
KyNpbmNsdWRlICJNZXNzYWdlSUQuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsK
K2NsYXNzIENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQ
cm9jZXNzOworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViTmV0d29ya0luZm9NYW5hZ2VyIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJOZXR3b3JrSW5mb01hbmFnZXIpOworcHVibGlj
OgorICAgIGV4cGxpY2l0IFdlYk5ldHdvcmtJbmZvTWFuYWdlcihXZWJQcm9jZXNzKik7CisgICAg
fldlYk5ldHdvcmtJbmZvTWFuYWdlcigpOworCisgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZSopOworICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZSopOworCisgICAgdW5z
aWduZWQgaW50IGJhbmR3aWR0aChXZWJQYWdlKikgY29uc3Q7CisgICAgYm9vbCBtZXRlcmVkKFdl
YlBhZ2UqKSBjb25zdDsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7
CisKK3ByaXZhdGU6CisgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYk5ldHdvcmtJ
bmZvTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJOZXR3
b3JrSW5mb01hbmFnZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworCisgICAgdm9pZCBkaWRDaGFuZ2VO
ZXR3b3JrSW5mb3JtYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFdl
Yk5ldHdvcmtJbmZvOjpEYXRhJik7CisKKyAgICBXZWJQcm9jZXNzKiBtX3Byb2Nlc3M7CisgICAg
SGFzaFNldDxXZWJQYWdlKj4gbV9wYWdlU2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0d29y
a0luZm9NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0
d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMu
aW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNjODQwYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29y
a0luZm9NYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMjkgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5G
TykKKworbWVzc2FnZXMgLT4gV2ViTmV0d29ya0luZm9NYW5hZ2VyIHsKKyAgICBEaWRDaGFuZ2VO
ZXR3b3JrSW5mb3JtYXRpb24oQXRvbWljU3RyaW5nIGV2ZW50VHlwZSwgV2ViS2l0OjpXZWJOZXR3
b3JrSW5mbzo6RGF0YSBuZXR3b3JrSW5mb3JtYXRpb24pOworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0lu
Zm9DbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOZXR3b3JrSW5mb0NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2Q3ZjRiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGllbnQuY3BwCkBAIC0wLDAgKzEsNjMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJO
ZXR3b3JrSW5mb0NsaWVudC5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1
ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJOZXR3b3JrSW5m
b0NsaWVudDo6fldlYk5ldHdvcmtJbmZvQ2xpZW50KCkKK3sKK30KKwordW5zaWduZWQgaW50IFdl
Yk5ldHdvcmtJbmZvQ2xpZW50OjpiYW5kd2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrSW5mb01hbmFnZXIoKS5iYW5kd2lkdGgobV9wYWdlKTsK
K30KKworYm9vbCBXZWJOZXR3b3JrSW5mb0NsaWVudDo6bWV0ZXJlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtJbmZvTWFuYWdlcigpLm1ldGVyZWQo
bV9wYWdlKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RhcnRVcGRhdGluZygp
Cit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0luZm9NYW5hZ2VyKCkucmVnaXN0
ZXJXZWJQYWdlKG1fcGFnZSk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9DbGllbnQ6OnN0b3BV
cGRhdGluZygpCit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0luZm9NYW5hZ2Vy
KCkudW5yZWdpc3RlcldlYlBhZ2UobV9wYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0Ns
aWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNmM3Y2JjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOZXR3b3JrSW5mb0NsaWVudC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViTmV0d29ya0luZm9DbGllbnRfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5m
b0NsaWVudF9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrSW5mb0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
UGFnZTsKKworY2xhc3MgV2ViTmV0d29ya0luZm9DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6TmV0
d29ya0luZm9DbGllbnQgeworcHVibGljOgorICAgIFdlYk5ldHdvcmtJbmZvQ2xpZW50KFdlYlBh
Z2UqIHBhZ2UpCisgICAgICAgIDogbV9wYWdlKHBhZ2UpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgfldlYk5ldHdvcmtJbmZvQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB1
bnNpZ25lZCBpbnQgYmFuZHdpZHRoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IG1ldGVyZWQoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0
aW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpIE9WRVJSSURF
OworCisgICAgV2ViUGFnZSogbV9wYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0d29ya0lu
Zm9DbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
MmIwMzgyZC4uYzY5ZTg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC04MCw2ICs4MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyNp
bmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdlcy5oIgorI2VuZGlmCisKICNpZiAh
T1MoV0lORE9XUykKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNlbmRpZgpAQCAtMTQ1LDYgKzE0OSw5
IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAgICAgLCBtX3RleHRDaGVja2Vy
U3RhdGUoKQogICAgICwgbV9nZW9sb2NhdGlvbk1hbmFnZXIodGhpcykKKyNpZiBFTkFCTEUoTkVU
V09SS19JTkZPKQorICAgICwgbV9uZXR3b3JrSW5mb01hbmFnZXIodGhpcykKKyNlbmRpZgogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAg
ICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIodGhpcykKICNlbmRpZgpAQCAtNjMxLDYgKzYzOCwx
MyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lcwogICAgICAgICByZXR1cm47CiAgICAgfQogCisj
aWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1l
c3NhZ2VDbGFzc1dlYk5ldHdvcmtJbmZvTWFuYWdlcj4oKSkgeworICAgICAgICBtX25ldHdvcmtJ
bmZvTWFuYWdlci5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3Vt
ZW50cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtZXNzYWdl
SUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViSWNvbkRhdGFiYXNlUHJveHk+KCkpIHsKICAg
ICAgICAgbV9pY29uRGF0YWJhc2VQcm94eS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBt
ZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggOTg2Y2UzNi4uNTY3NmQ3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTU3LDYgKzU3LDEwIEBAIGNsYXNzIFFOZXR3b3Jr
QWNjZXNzTWFuYWdlcjsKICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdl
ci5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FD
WV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNl
bmRpZgpAQCAtMTQyLDYgKzE0NiwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBHZW9sb2NhdGlvbgog
ICAgIFdlYkdlb2xvY2F0aW9uTWFuYWdlciYgZ2VvbG9jYXRpb25NYW5hZ2VyKCkgeyByZXR1cm4g
bV9nZW9sb2NhdGlvbk1hbmFnZXI7IH0KKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisgICAg
IFdlYk5ldHdvcmtJbmZvTWFuYWdlciYgbmV0d29ya0luZm9NYW5hZ2VyKCkgeyByZXR1cm4gbV9u
ZXR3b3JrSW5mb01hbmFnZXI7IH0KKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgV2ViTm90aWZpY2F0aW9u
TWFuYWdlciYgbm90aWZpY2F0aW9uTWFuYWdlcigpIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uTWFu
YWdlcjsgfQpAQCAtMjg2LDYgKzI5NCw5IEBAIHByaXZhdGU6CiAKICAgICBUZXh0Q2hlY2tlclN0
YXRlIG1fdGV4dENoZWNrZXJTdGF0ZTsKICAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXIgbV9nZW9s
b2NhdGlvbk1hbmFnZXI7CisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICBXZWJOZXR3b3Jr
SW5mb01hbmFnZXIgbV9uZXR3b3JrSW5mb01hbmFnZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoTk9U
SUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXIgbV9ub3RpZmljYXRpb25NYW5hZ2VyOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149680</attachid>
            <date>2012-06-26 22:35:01 -0700</date>
            <delta_ts>2012-07-04 06:05:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89870_wk2_networkinfo.patch</filename>
            <type>text/plain</type>
            <size>51596</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggZDQwYmE4NC4uY2ZiN2FiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTI2LDYgKzI2LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL05ldHdvcmtJ
bmZvIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkiCkBAIC0xNTQsNiArMTU1LDcgQEAg
U0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAg
IFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNw
cAorICAgIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAKICAgICBTaGFyZWQvV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
ICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTI0Niw2ICsyNDgsOCBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCisgICAgVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VHcm91
cC5jcHAKQEAgLTI4Myw2ICsyODcsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0zODAsNiArMzg1LDggQEAgU0VUKFdl
YktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01h
bmFnZXIuY3BwCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAogCkBAIC00MTEsNiArNDE4LDcgQEAgU0VUKFdlYktp
dDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZv
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cApAQCAtNDU2LDYgKzQ2NCw3IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9X
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNDg0LDYgKzQ5Myw4IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAg
ICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4K
IAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDY3Yjk4OC4uZWZiOTU3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDEyLTA2LTI1ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQg
Zm9yIE5ldHdvcmsgSW5mb3JtYXRpb24gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04OTg3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBOZXR3b3JrIEluZm9ybWF0aW9uIEFQSSBzdXBwb3J0IHRv
IFdlYktpdDIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VJRC5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL1dlYk5ldHdv
cmtJbmZvLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mbzo6V2ViTmV0d29ya0luZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3
b3JrSW5mbzo6fldlYk5ldHdvcmtJbmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0lu
Zm86OkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpEYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mbyk6CisgICAgICAgIChEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mbzo6bWV0ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpk
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OnR5cGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcDogQWRkZWQuCisgICAg
ICAgIChXS05ldHdvcmtJbmZvTWFuYWdlckdldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5Ojp+V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDaGFuZ2VO
ZXR3b3JrSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Z2V0QmFuZHdpZHRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmlzTWV0ZXJlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lmg6IEFkZGVkLgorICAgICAgICAoQ29y
ZUlQQyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Y2xl
YXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6
OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJv
dmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Yk5ldHdvcmtJbmZvUHJvdmlkZXI6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyOjptZXRlcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmV0
d29ya0luZm9Qcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmtJbmZv
L1dlYk5ldHdvcmtJbmZvTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6On5XZWJOZXR3b3Jr
SW5mb01hbmFnZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2Vy
OjpyZWdpc3RlcldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6OnVucmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9N
YW5hZ2VyOjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6Om1ldGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRp
ZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
SW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuaDogQWRkZWQuCisgICAgICAgIChDb3JlSVBDKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3JrSW5mb01hbmFnZXIpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5l
dHdvcmtJbmZvQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6fldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OmJhbmR3aWR0aCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjptZXRlcmVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2
ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAo
V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtJbmZvTWFu
YWdlcik6CisKIDIwMTItMDYtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtHVEtdIFVuaW5pdGlhbGl6ZWQgdmFyaWFibGUg
aW4gVGV4dENoZWNrZXJHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Db3JlSVBDL01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9N
ZXNzYWdlSUQuaAppbmRleCBkOTIzYTFiLi5mOWQ2MDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBNZXNzYWdl
Q2xhc3MgewogICAgIE1lc3NhZ2VDbGFzc1dlYkluc3BlY3RvciwKICAgICBNZXNzYWdlQ2xhc3NX
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyLAorICAgIE1lc3NhZ2VDbGFzc1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LAogICAg
IE1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzV2Vi
UGFnZSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzLApAQCAtNzIsNiArNzMsNyBAQCBlbnVt
IE1lc3NhZ2VDbGFzcyB7CiAgICAgTWVzc2FnZUNsYXNzV2ViSW5zcGVjdG9yUHJveHksCiAgICAg
TWVzc2FnZUNsYXNzV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LAogICAgIE1lc3NhZ2VD
bGFzc1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHksCisgICAgTWVzc2FnZUNsYXNzV2ViTmV0d29y
a0luZm9NYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQYWdlUHJveHksCiAgICAgTWVzc2FnZUNsYXNzV2ViUHJv
Y2Vzc1Byb3h5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDhiN2U4MWYu
LmQ2YjRjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEwNyw2ICsx
MDcsOCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0ludGVudFNlcnZpY2VJbmZvKiBX
S0ludGVudFNlcnZpY2VJbmZvUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyKiBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhQ2FjaGVNYW5hZ2VyKiBXS01lZGlhQ2FjaGVNYW5h
Z2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOYXZpZ2F0aW9uRGF0YSogV0tO
YXZpZ2F0aW9uRGF0YVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmV0d29ya0lu
Zm9NYW5hZ2VyKiBXS05ldHdvcmtJbmZvTWFuYWdlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLTmV0d29ya0luZm8qIFdLTmV0d29ya0luZm9SZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS05vdGlmaWNhdGlvbiogV0tOb3RpZmljYXRpb25SZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS05vdGlmaWNhdGlvbk1hbmFnZXIqIFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QqIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggZWFkNzRmMC4uNmIzYzliNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaApAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBUeXBlTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAg
ICAgIFR5cGVOYXZpZ2F0aW9uRGF0YSwKKyAgICAgICAgVHlwZU5ldHdvcmtJbmZvLAorICAgICAg
ICBUeXBlTmV0d29ya0luZm9NYW5hZ2VyLAogICAgICAgICBUeXBlTm90aWZpY2F0aW9uLAogICAg
ICAgICBUeXBlTm90aWZpY2F0aW9uTWFuYWdlciwKICAgICAgICAgVHlwZU5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5l
dHdvcmtJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MzMWJkYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYk5ldHdvcmtJbmZvLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYk5ldHdvcmtJbmZvOjpXZWJOZXR3b3JrSW5mbyhkb3VibGUgYmFu
ZHdpZHRoLCBib29sIG1ldGVyZWQpCit7CisgICAgbV9kYXRhLmJhbmR3aWR0aCA9IGJhbmR3aWR0
aDsKKyAgICBtX2RhdGEubWV0ZXJlZCA9IG1ldGVyZWQ7Cit9CisKK1dlYk5ldHdvcmtJbmZvOjp+
V2ViTmV0d29ya0luZm8oKQoreworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvOjpEYXRhOjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXItPmVuY29kZShDb3JlSVBDOjpJbihiYW5kd2lkdGgsIG1ldGVyZWQpKTsKK30KKworYm9vbCBX
ZWJOZXR3b3JrSW5mbzo6RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgRGF0YSYgZGF0YSkKK3sKKyAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6
Ok91dChkYXRhLmJhbmR3aWR0aCwgZGF0YS5tZXRlcmVkKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYk5ldHdvcmtJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NGMxNjE3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3
b3JrSW5mby5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViTmV0d29ya0luZm9faAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb19oCisKKyNpZiBFTkFCTEUo
TkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQXJndW1l
bnREZWNvZGVyLmgiCisjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk5ldHdvcmtJ
bmZvIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUg
QVBJVHlwZSA9IFR5cGVOZXR3b3JrSW5mbzsKKworICAgIHN0cnVjdCBEYXRhIHsKKyAgICAgICAg
dm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAgICAgIHN0
YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBEYXRhJik7CisKKyAg
ICAgICAgZG91YmxlIGJhbmR3aWR0aDsKKyAgICAgICAgYm9vbCBtZXRlcmVkOworICAgIH07CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOZXR3b3JrSW5mbz4gY3JlYXRlKGRvdWJsZSBiYW5k
d2lkdGgsIGJvb2wgbWV0ZXJlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViTmV0d29ya0luZm8oYmFuZHdpZHRoLCBtZXRlcmVkKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+V2ViTmV0d29ya0luZm8oKTsKKworICAgIGRvdWJsZSBiYW5kd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuYmFuZHdpZHRoOyB9CisgICAgYm9vbCBtZXRlcmVkKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLm1ldGVyZWQ7IH0KKworICAgIGNvbnN0IERhdGEmIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KKworcHJpdmF0ZToKKyAgICBXZWJOZXR3b3JrSW5mbyhkb3VibGUgYmFu
ZHdpZHRoLCBib29sIG1ldGVyZWQpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBEYXRhIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8v
IFdlYk5ldHdvcmtJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNh
c3QuaAppbmRleCA4MTZmOGYxLi40MmUxZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03NSw2ICs3NSw4IEBAIGNsYXNzIFdlYkludGVudFNlcnZp
Y2VJbmZvOwogY2xhc3MgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5OwogY2xhc3MgV2Vi
TWVkaWFDYWNoZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYk5hdmlnYXRpb25EYXRhOworY2xhc3Mg
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk7CitjbGFzcyBXZWJOZXR3b3JrSW5mbzsKIGNsYXNz
IFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOwogY2xhc3Mg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwpAQCAtMTE0LDYgKzExNiw4IEBAIFdLX0FERF9B
UElfTUFQUElORyhXS0ludGVudFNlcnZpY2VJbmZvUmVmLCBXZWJJbnRlbnRTZXJ2aWNlSW5mbykK
IFdLX0FERF9BUElfTUFQUElORyhXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSZWYsIFdlYktleVZh
bHVlU3RvcmFnZU1hbmFnZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS01lZGlhQ2FjaGVN
YW5hZ2VyUmVmLCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdlYk5hdmlnYXRpb25EYXRhKQorV0tfQUREX0FQSV9NQVBQ
SU5HKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSkK
K1dLX0FERF9BUElfTUFQUElORyhXS05ldHdvcmtJbmZvUmVmLCBXZWJOZXR3b3JrSW5mbykKIFdL
X0FERF9BUElfTUFQUElORyhXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYsIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0UmVmLCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKIFdLX0FERF9BUElf
TUFQUElORyhXS05vdGlmaWNhdGlvblByb3ZpZGVyUmVmLCBXZWJOb3RpZmljYXRpb25Qcm92aWRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJ
bmZvTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3Jr
SW5mb01hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMDcz
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tO
ZXR3b3JrSW5mb01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS05ldHdvcmtJbmZvTWFuYWdlci5o
IgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tOZXR3
b3JrSW5mb01hbmFnZXJHZXRUeXBlSUQoKQoreworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisg
ICAgcmV0dXJuIHRvQVBJKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpBUElUeXBlKTsKKyNl
bHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYWRjMTA3NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tOZXR3b3JrSW5mb01hbmFnZXJfaAor
I2RlZmluZSBXS05ldHdvcmtJbmZvTWFuYWdlcl9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFz
ZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vIFBy
b3ZpZGVyLgordHlwZWRlZiB2b2lkICgqV0tOZXR3b3JrSW5mb1Byb3ZpZGVyU3RhcnRVcGRhdGlu
Z0NhbGxiYWNrKShXS05ldHdvcmtJbmZvTWFuYWdlclJlZiBuZXR3b3JrSW5mb01hbmFnZXIsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tOZXR3b3JrSW5mb1Byb3Zp
ZGVyU3RvcFVwZGF0aW5nQ2FsbGJhY2spKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmIG5ldHdvcmtJ
bmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIGRvdWJsZSAoKldL
TmV0d29ya0luZm9Qcm92aWRlckdldEJhbmR3aWR0aENhbGxiYWNrKShXS05ldHdvcmtJbmZvTWFu
YWdlclJlZiBuZXR3b3JrSW5mb01hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlw
ZWRlZiBib29sICgqV0tOZXR3b3JrSW5mb1Byb3ZpZGVySXNNZXRlcmVkQ2FsbGJhY2spKFdLTmV0
d29ya0luZm9NYW5hZ2VyUmVmIG5ldHdvcmtJbmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CisKK3N0cnVjdCBXS05ldHdvcmtJbmZvUHJvdmlkZXIgeworICAgIGludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87CisgICAgV0tOZXR3b3JrSW5mb1By
b3ZpZGVyU3RhcnRVcGRhdGluZ0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dFVwZGF0aW5nOworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlclN0b3BVcGRhdGluZ0NhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFVwZGF0aW5nOworICAgIFdLTmV0d29ya0lu
Zm9Qcm92aWRlckdldEJhbmR3aWR0aENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFuZHdpZHRoOworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlcklzTWV0ZXJlZENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0ZXJlZDsKK307Cit0eXBlZGVmIHN0cnVjdCBX
S05ldHdvcmtJbmZvUHJvdmlkZXIgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyOworCitlbnVtIHsga1dL
TmV0d29ya0luZm9Qcm92aWRlckN1cnJlbnRWZXJzaW9uID0gMCB9OworCitXS19FWFBPUlQgV0tU
eXBlSUQgV0tOZXR3b3JrSW5mb01hbmFnZXJHZXRUeXBlSUQoKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLTmV0d29ya0luZm9NYW5hZ2VyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZGVhMzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuaCIK
KworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViTmV0d29ya0luZm8uaCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFn
ZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxXZWJOZXR3
b3JrSW5mb01hbmFnZXJQcm94eT4gV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNyZWF0ZShX
ZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHkoY29udGV4dCkpOworfQorCitXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eTo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCogY29udGV4dCkKKyAg
ICA6IG1faXNVcGRhdGluZyhmYWxzZSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQoreworfQor
CitXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6fldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
KCkKK3sKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgp
Cit7CisgICAgc3RvcFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS05ldHdvcmtJbmZvUHJvdmlkZXIqIHBy
b3ZpZGVyKQoreworICAgIG1fcHJvdmlkZXIuaW5pdGlhbGl6ZShwcm92aWRlcik7Cit9CisKK3Zv
aWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdlTmV0d29ya0lu
Zm9ybWF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBXZWJOZXR3b3JrSW5mbyog
bmV0d29ya0luZm9ybWF0aW9uKQoreworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTmV0
d29ya0luZm9NYW5hZ2VyOjpEaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oZXZlbnRUeXBlLCBu
ZXR3b3JrSW5mb3JtYXRpb24tPmRhdGEoKSkpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFu
YWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGFyZ3VtZW50cykKK3sKKyAgICBkaWRSZWNlaXZlV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKK30KKwordm9pZCBX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGluZygpCit7CisgICAgaWYgKG1f
aXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcm92aWRlci5zdGFydFVwZGF0
aW5nKHRoaXMpOworICAgIG1faXNVcGRhdGluZyA9IHRydWU7Cit9CisKK3ZvaWQgV2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZygpCit7CisgICAgaWYgKCFtX2lzVXBkYXRp
bmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvdmlkZXIuc3RvcFVwZGF0aW5nKHRoaXMp
OworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFu
YWdlclByb3h5OjpnZXRCYW5kd2lkdGgoZG91YmxlJiBiYW5kd2lkdGgpCit7CisgICAgYmFuZHdp
ZHRoID0gbV9wcm92aWRlci5iYW5kd2lkdGgodGhpcyk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyUHJveHk6OmlzTWV0ZXJlZChib29sJiBtZXRlcmVkKQoreworICAgIG1ldGVyZWQg
PSBtX3Byb3ZpZGVyLm1ldGVyZWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwY2JhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oCkBAIC0wLDAgKzEs
ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHlfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eV9oCisKKyNpZiBFTkFC
TEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiTWVz
c2FnZUlELmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9Qcm92aWRlci5oIgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKK2NsYXNzIEFyZ3VtZW50RGVj
b2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2ViTmV0d29ya0lu
Zm87CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5IDogcHVibGljIEFQSU9iamVj
dCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVOZXR3b3Jr
SW5mb01hbmFnZXI7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKKyAgICB2aXJ0dWFsIH5XZWJOZXR3b3JrSW5m
b01hbmFnZXJQcm94eSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgdm9pZCBjbGVh
ckNvbnRleHQoKSB7IG1fY29udGV4dCA9IDA7IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZVByb3Zp
ZGVyKGNvbnN0IFdLTmV0d29ya0luZm9Qcm92aWRlciopOworCisgICAgdm9pZCBwcm92aWRlckRp
ZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBXZWJOZXR3b3JrSW5mbyopOworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eShXZWJDb250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIEFQSVR5cGU7IH0KKworICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJOZXR3
b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAgICB2b2lkIGRpZFJlY2Vp
dmVXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5TWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqLCBXVEY6Ok93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CisKKyAgICB2b2lk
IHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpOworCisgICAgdm9pZCBn
ZXRCYW5kd2lkdGgoZG91YmxlJik7CisgICAgdm9pZCBpc01ldGVyZWQoYm9vbCYpOworCisgICAg
Ym9vbCBtX2lzVXBkYXRpbmc7CisKKyAgICBXZWJDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgV2Vi
TmV0d29ya0luZm9Qcm92aWRlciBtX3Byb3ZpZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjZW5kaWYgLy8gV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YWNkYzIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCittZXNzYWdlcyAt
PiBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSB7CisgICAgU3RhcnRVcGRhdGluZygpOworICAg
IFN0b3BVcGRhdGluZygpOworCisgICAgR2V0QmFuZHdpZHRoKCkgLT4gKGRvdWJsZSBiYW5kd2lk
dGgpOworICAgIElzTWV0ZXJlZCgpIC0+IChib29sIG1ldGVyZWQpOworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTY3NzNhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlkZXIu
Y3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmgiCisKKyNpZiBFTkFCTEUo
TkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgV2ViTmV0d29ya0luZm9Qcm92aWRlcjo6c3RhcnRVcGRhdGluZyhX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSogbmV0d29ya0luZm9NYW5hZ2VyKQoreworICAgIGlm
ICghbV9jbGllbnQuc3RhcnRVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGll
bnQuc3RhcnRVcGRhdGluZyh0b0FQSShuZXR3b3JrSW5mb01hbmFnZXIpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdG9wVXBkYXRpbmco
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkqIG5ldHdvcmtJbmZvTWFuYWdlcikKK3sKKyAgICBp
ZiAoIW1fY2xpZW50LnN0b3BVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGll
bnQuc3RvcFVwZGF0aW5nKHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdlciksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworfQorCitkb3VibGUgV2ViTmV0d29ya0luZm9Qcm92aWRlcjo6YmFuZHdpZHRoKFdl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KiBuZXR3b3JrSW5mb01hbmFnZXIpIGNvbnN0Cit7Cisg
ICAgLy8gVGhlIHNwZWMgaW5kaWNhdGVzIHRoYXQgd2Ugc2hvdWxkIHJldHVybiAiaW5maW5pdHki
IGlmIHRoZSBiYW5kd2lkdGggaXMgdW5rbm93bi4KKyAgICBpZiAoIW1fY2xpZW50LmJhbmR3aWR0
aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHko
KTsKKworICAgIHJldHVybiBtX2NsaWVudC5iYW5kd2lkdGgodG9BUEkobmV0d29ya0luZm9NYW5h
Z2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK2Jvb2wgV2ViTmV0d29ya0luZm9Qcm92
aWRlcjo6bWV0ZXJlZChXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSogbmV0d29ya0luZm9NYW5h
Z2VyKSBjb25zdAoreworICAgIGlmICghbV9jbGllbnQubWV0ZXJlZCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50Lm1ldGVyZWQodG9BUEkobmV0d29ya0luZm9N
YW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmNhZjhlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTmV0d29ya0luZm9Qcm92aWRlcl9oCisjZGVm
aW5lIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykK
KworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLTmV0d29ya0luZm9NYW5hZ2Vy
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OworCitjbGFzcyBXZWJOZXR3b3JrSW5mb1By
b3ZpZGVyIDogcHVibGljIEFQSUNsaWVudDxXS05ldHdvcmtJbmZvUHJvdmlkZXIsIGtXS05ldHdv
cmtJbmZvUHJvdmlkZXJDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIHZvaWQgc3RhcnRV
cGRhdGluZyhXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSopOworICAgIHZvaWQgc3RvcFVwZGF0
aW5nKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Kik7CisKKyAgICBkb3VibGUgYmFuZHdpZHRo
KFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KikgY29uc3Q7CisgICAgYm9vbCBtZXRlcmVkKFdl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KikgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBXZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzEwMzcxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFn
ZXIuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgiCisKKyNpZiBFTkFC
TEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya0luZm9Db250cm9sbGVyLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTmV0d29ya0luZm9NYW5h
Z2VyOjpXZWJOZXR3b3JrSW5mb01hbmFnZXIoV2ViUHJvY2VzcyogcHJvY2VzcykKKyAgICA6IG1f
cHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitXZWJOZXR3b3JrSW5mb01hbmFnZXI6On5XZWJOZXR3
b3JrSW5mb01hbmFnZXIoKQoreworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlcjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6
TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMp
Cit7CisgICAgZGlkUmVjZWl2ZVdlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdl
cjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqIHBhZ2UpCit7CisgICAgYm9vbCB3YXNFbXB0eSA9
IG1fcGFnZVNldC5pc0VtcHR5KCk7CisKKyAgICBtX3BhZ2VTZXQuYWRkKHBhZ2UpOworCisgICAg
aWYgKHdhc0VtcHR5KQorICAgICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcoKSwgMCk7Cit9
CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdl
KiBwYWdlKQoreworICAgIG1fcGFnZVNldC5yZW1vdmUocGFnZSk7CisKKyAgICBpZiAobV9wYWdl
U2V0LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7Cit9
CisKK2RvdWJsZSBXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmJhbmR3aWR0aChXZWJQYWdlKiBwYWdl
KSBjb25zdAoreworICAgIC8vIFRoZSBzcGVjIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCByZXR1
cm4gImluZmluaXR5IiBpZiB0aGUgYmFuZHdpZHRoIGlzIHVua25vd24uCisgICAgZG91YmxlIGJh
bmR3aWR0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZv
TWFuYWdlclByb3h5OjpHZXRCYW5kd2lkdGgoKSwgTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFu
YWdlclByb3h5OjpHZXRCYW5kd2lkdGg6OlJlcGx5KGJhbmR3aWR0aCksIHBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICByZXR1cm4gYmFuZHdpZHRoOworfQorCitib29sIFdlYk5ldHdvcmtJbmZvTWFuYWdl
cjo6bWV0ZXJlZChXZWJQYWdlKiBwYWdlKSBjb25zdAoreworICAgIGJvb2wgbWV0ZXJlZCA9IGZh
bHNlOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
TmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OklzTWV0ZXJlZCgpLCBNZXNzYWdlczo6V2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHk6OklzTWV0ZXJlZDo6UmVwbHkobWV0ZXJlZCksIHBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICByZXR1cm4gbWV0ZXJlZDsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFn
ZXI6OmRpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgY29uc3QgV2ViTmV0d29ya0luZm86OkRhdGEmIGRhdGEpCit7CisgICAgUmVmUHRyPE5l
dHdvcmtJbmZvPiBuZXR3b3JrSW5mb3JtYXRpb24gPSBOZXR3b3JrSW5mbzo6Y3JlYXRlKGRhdGEu
YmFuZHdpZHRoLCBkYXRhLm1ldGVyZWQpOworCisgICAgSGFzaFNldDxXZWJQYWdlKj46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9wYWdlU2V0LmJlZ2luKCk7CisgICAgSGFzaFNldDxXZWJQYWdlKj46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGFnZVNldC5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSAqaXQ7CisgICAgICAgIGlmIChw
YWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgTmV0d29ya0luZm9Db250cm9sbGVyOjpmcm9t
KHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oZXZlbnRUeXBl
LCBuZXR3b3JrSW5mb3JtYXRpb24uZ2V0KCkpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9N
YW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNkYWI4NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2Vi
TmV0d29ya0luZm9NYW5hZ2VyLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJOZXR3b3JrSW5mb01hbmFnZXJfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5m
b01hbmFnZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIk1lc3Nh
Z2VJRC5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldl
Yk5ldHdvcmtJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFt
ZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNvZGVyOworY2xhc3MgQ29ubmVjdGlv
bjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3M7CitjbGFzcyBX
ZWJQYWdlOworCitjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFnZXIgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYk5ldHdvcmtJbmZvTWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViTmV0d29ya0luZm9NYW5hZ2VyKFdlYlByb2Nlc3MqKTsKKyAgICB+V2ViTmV0d29ya0luZm9N
YW5hZ2VyKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlKik7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlKik7CisKKyAgICBkb3VibGUgYmFuZHdpZHRoKFdl
YlBhZ2UqKSBjb25zdDsKKyAgICBib29sIG1ldGVyZWQoV2ViUGFnZSopIGNvbnN0OworCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKworcHJpdmF0ZToKKyAgICAvLyBJ
bXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZVdlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKik7CisKKyAgICB2b2lkIGRpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgV2ViTmV0d29ya0luZm86OkRhdGEmKTsK
KworICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBIYXNoU2V0PFdlYlBhZ2UqPiBtX3Bh
Z2VTZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBXZWJOZXR3b3JrSW5mb01hbmFnZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5m
b01hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJ
bmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hY2M4NDBjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCittZXNzYWdlcyAtPiBXZWJO
ZXR3b3JrSW5mb01hbmFnZXIgeworICAgIERpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihBdG9t
aWNTdHJpbmcgZXZlbnRUeXBlLCBXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpEYXRhIG5ldHdvcmtJ
bmZvcm1hdGlvbik7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTk1NDZiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3
b3JrSW5mb0NsaWVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvQ2xpZW50LmgiCisK
KyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5h
Z2VyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk5ldHdvcmtJbmZvQ2xpZW50Ojp+V2ViTmV0d29ya0lu
Zm9DbGllbnQoKQoreworfQorCitkb3VibGUgV2ViTmV0d29ya0luZm9DbGllbnQ6OmJhbmR3aWR0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtJbmZv
TWFuYWdlcigpLmJhbmR3aWR0aChtX3BhZ2UpOworfQorCitib29sIFdlYk5ldHdvcmtJbmZvQ2xp
ZW50OjptZXRlcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0luZm9NYW5hZ2VyKCkubWV0ZXJlZChtX3BhZ2UpOworfQorCit2b2lkIFdlYk5ldHdv
cmtJbmZvQ2xpZW50OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5uZXR3b3JrSW5mb01hbmFnZXIoKS5yZWdpc3RlcldlYlBhZ2UobV9wYWdlKTsKK30KKwordm9p
ZCBXZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrSW5mb01hbmFnZXIoKS51bnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2Up
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X0lORk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMGFjMDJlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGllbnQuaApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk5ldHdvcmtJbmZvQ2xp
ZW50X2gKKyNkZWZpbmUgV2ViTmV0d29ya0luZm9DbGllbnRfaAorCisjaWYgRU5BQkxFKE5FVFdP
UktfSU5GTykKKworI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0luZm9DbGllbnQuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZv
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5ldHdvcmtJbmZvQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBXZWJOZXR3b3JrSW5mb0NsaWVudChXZWJQYWdlKiBwYWdlKQorICAgICAgICA6IG1fcGFnZShw
YWdlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJOZXR3b3JrSW5mb0NsaWVudCgp
OworCitwcml2YXRlOgorICAgIHZpcnR1YWwgZG91YmxlIGJhbmR3aWR0aCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBtZXRlcmVkKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wVXBkYXRpbmcoKSBPVkVSUklERTsKKworICAgIFdlYlBhZ2UqIG1fcGFnZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKKwor
I2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiMDM4MmQuLmM2OWU4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODAsNiArODAsMTAgQEAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIAorI2lmIEVO
QUJMRShORVRXT1JLX0lORk8pCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyTWVzc2Fn
ZXMuaCIKKyNlbmRpZgorCiAjaWYgIU9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAj
ZW5kaWYKQEAgLTE0NSw2ICsxNDksOSBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNlbmRp
ZgogICAgICwgbV90ZXh0Q2hlY2tlclN0YXRlKCkKICAgICAsIG1fZ2VvbG9jYXRpb25NYW5hZ2Vy
KHRoaXMpCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICAsIG1fbmV0d29ya0luZm9NYW5h
Z2VyKHRoaXMpCisjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExF
R0FDWV9OT1RJRklDQVRJT05TKQogICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2VyKHRoaXMpCiAj
ZW5kaWYKQEAgLTYzMSw2ICs2MzgsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisgICAgaWYgKG1l
c3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJOZXR3b3JrSW5mb01hbmFnZXI+KCkp
IHsKKyAgICAgICAgbV9uZXR3b3JrSW5mb01hbmFnZXIuZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYkljb25E
YXRhYmFzZVByb3h5PigpKSB7CiAgICAgICAgIG1faWNvbkRhdGFiYXNlUHJveHkuZGlkUmVjZWl2
ZU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDk4NmNlMzYuLjU2
NzZkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC01Nyw2ICs1
NywxMCBAQCBjbGFzcyBRTmV0d29ya0FjY2Vzc01hbmFnZXI7CiAjaW5jbHVkZSA8ZGlzcGF0Y2gv
ZGlzcGF0Y2guaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyNpbmNsdWRl
ICJXZWJOZXR3b3JrSW5mb01hbmFnZXIuaCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmgiCiAjZW5kaWYKQEAgLTE0Miw2ICsxNDYsMTAgQEAgcHVibGljOgog
CiAgICAgLy8gR2VvbG9jYXRpb24KICAgICBXZWJHZW9sb2NhdGlvbk1hbmFnZXImIGdlb2xvY2F0
aW9uTWFuYWdlcigpIHsgcmV0dXJuIG1fZ2VvbG9jYXRpb25NYW5hZ2VyOyB9CisKKyNpZiBFTkFC
TEUoTkVUV09SS19JTkZPKQorICAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXImIG5ldHdvcmtJbmZv
TWFuYWdlcigpIHsgcmV0dXJuIG1fbmV0d29ya0luZm9NYW5hZ2VyOyB9CisjZW5kaWYKICAgICAK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXImIG5vdGlmaWNhdGlvbk1hbmFnZXIoKSB7IHJl
dHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXI7IH0KQEAgLTI4Niw2ICsyOTQsOSBAQCBwcml2YXRl
OgogCiAgICAgVGV4dENoZWNrZXJTdGF0ZSBtX3RleHRDaGVja2VyU3RhdGU7CiAgICAgV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyIG1fZ2VvbG9jYXRpb25NYW5hZ2VyOworI2lmIEVOQUJMRShORVRXT1JL
X0lORk8pCisgICAgV2ViTmV0d29ya0luZm9NYW5hZ2VyIG1fbmV0d29ya0luZm9NYW5hZ2VyOwor
I2VuZGlmCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyIG1fbm90aWZpY2F0aW9uTWFuYWdl
cjsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150782</attachid>
            <date>2012-07-04 06:05:02 -0700</date>
            <delta_ts>2012-07-04 23:36:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89870_network_info.patch</filename>
            <type>text/plain</type>
            <size>61792</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMDBlOWU1NC4uYzI3MDcxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTI3LDYgKzI3LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL05ldHdvcmtJ
bmZvIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkiCkBAIC0xNTYsNiArMTU3LDcgQEAg
U0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAg
IFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNw
cAorICAgIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAKICAgICBTaGFyZWQvV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
ICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTI1MCw2ICsyNTIsOCBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCisgICAgVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VHcm91
cC5jcHAKQEAgLTI4OSw2ICsyOTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0zODgsNiArMzkzLDggQEAgU0VUKFdl
YktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01h
bmFnZXIuY3BwCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAogCkBAIC00MjAsNiArNDI3LDcgQEAgU0VUKFdlYktp
dDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZv
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cApAQCAtNDY2LDYgKzQ3NCw3IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9X
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNDk2LDYgKzUwNSw4IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAg
ICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4K
IAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDkxM2YyZC4uYjgzMGQxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDEwNSBAQAogMjAxMi0wNy0wNCAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0
IGZvciBOZXR3b3JrIEluZm9ybWF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgTmV0d29yayBJbmZvcm1hdGlvbiBBUEkgc3VwcG9ydCBm
b3IgV2ViS2l0Mi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmg6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElP
YmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViTmV0d29ya0luZm8uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpXZWJOZXR3
b3JrSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjp+V2ViTmV0d29ya0lu
Zm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mbzo6RGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OkRhdGE6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYk5ldHdvcmtJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYk5ldHdvcmtJbmZvKToKKyAgICAgICAgKERhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86
OmJhbmR3aWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjptZXRlcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OmRhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOZXR3b3JrSW5mbzo6dHlwZSk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tOZXR3b3JrSW5mb01hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6V2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6fldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdl
TmV0d29ya0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmdldEJhbmR3aWR0aCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppc01ldGVyZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKENv
cmVJUEMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNs
ZWFyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1By
b3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9Qcm92aWRlcjo6YmFuZHdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TmV0d29ya0luZm9Qcm92aWRlcjo6bWV0ZXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViTmV0d29ya0luZm9Qcm92aWRlcik6CisgICAgICAgICogV2ViS2l0Mi5wcmk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFu
YWdlcjo6V2ViTmV0d29ya0luZm9NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29y
a0luZm9NYW5hZ2VyOjp+V2ViTmV0d29ya0luZm9NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlcjo6YmFuZHdpZHRoKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjptZXRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpkaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmg6IEFk
ZGVkLgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
TmV0d29ya0luZm9NYW5hZ2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dl
Yk5ldHdvcmtJbmZvTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6On5X
ZWJOZXR3b3JrSW5mb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xp
ZW50OjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6
bWV0ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjpzdGFydFVw
ZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OnN0b3BVcGRh
dGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5m
b0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3Jr
SW5mb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjpXZWJO
ZXR3b3JrSW5mb0NsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpuZXR3b3JrSW5mb01hbmFnZXIpOgorCisyMDEyLTA3LTA0ICBDaHJpc3RvcGhl
IER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKICAgICAgICAgW0VGTF1bV0sy
XSBFd2tfVmlldyBzaG91bGQgcmVwb3J0IGxvYWQgZXJyb3JzCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQ3OQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNl
cy5wcmkKaW5kZXggOWJjMDE2ZC4uY2UwMzlmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5w
cmkKQEAgLTQ1LDYgKzQ1LDcgQEAgVlBBVEggPSBcCiAgICAgV2ViUHJvY2Vzcy9JY29uRGF0YWJh
c2UgXAogICAgIFdlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdlIFwKICAgICBXZWJQcm9jZXNzL01l
ZGlhQ2FjaGUgXAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8gXAogICAgIFdlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucyBcCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zIFwKICAgICBXZWJQcm9jZXNz
L1Jlc291cmNlQ2FjaGUgXApAQCAtODYsNiArODcsOCBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwK
ICAgICBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFdl
Yk1lZGlhQ2FjaGVNYW5hZ2VyLm1lc3NhZ2VzLmluIFwKICAgICBXZWJNZWRpYUNhY2hlTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluIFwKKyAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMu
aW4gXAorICAgIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIFwKICAgICBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyLm1lc3Nh
Z2VzLmluIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMTY4MjMwNS4uYjBjMDcyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KQEAgLTc0LDYgKzc0LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0tleVZhbHVlU3RvcmFnZSBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9MYXVuY2hpbmcgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFDYWNoZSBcCisJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mbyBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cCBcCkBAIC0yMTksNiArMjIwLDcgQEAgdnBh
dGggJS5tZXNzYWdlcy5pbiA9IFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNl
IFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdlIFwKIAkkKFdlYktpdDIp
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZSBcCisJJChXZWJLaXQyKS9XZWJQcm9jZXNzL05ldHdvcmtJ
bmZvIFwKIAkkKFdlYktpdDIpL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucyBcCiAJJChXZWJLaXQy
KS9XZWJQcm9jZXNzL1BsdWdpbnMgXAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9SZXNvdXJjZUNh
Y2hlIFwKQEAgLTUyMiw2ICs1MjQsNyBAQCBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxzICQo
V2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvKi5pbikgXAogCSQoc2hlbGwgbHMgJChX
ZWJLaXQyKS9XZWJQcm9jZXNzL0tleVZhbHVlU3RvcmFnZS8qLmluKSBcCiAJJChzaGVsbCBscyAk
KFdlYktpdDIpL1dlYlByb2Nlc3MvTWVkaWFDYWNoZS8qLmluKSBcCisJJChzaGVsbCBscyAkKFdl
YktpdDIpL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vKi5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvKi5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL1BsdWdpbnMvKi5pbikgXAogCSQoc2hlbGwgbHMgJChXZWJLaXQyKS9X
ZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvKi5pbikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMGYyMDE5MC4uY2M2MDUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC03MCw2ICs3MCw3IEBAIHdlYmtpdDJfaF9hcGkgKz0gXAogCSQoV2ViS2l0MikvVUlQcm9j
ZXNzL0FQSS9DL1dLTWVkaWFDYWNoZU1hbmFnZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL0MvV0tOYXRpdmVFdmVudC5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS05h
dmlnYXRpb25EYXRhLmggXAorCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0lu
Zm9NYW5hZ2VyLmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9u
LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5o
IFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmggXApAQCAtMTkxLDYgKzE5MiwxMCBAQCB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgKz0g
XAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTWVkaWFDYWNoZU1hbmFnZXJNZXNzYWdlcy5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5ldHdv
cmtJbmZvTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvV2ViTmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgXApAQCAtNDU5LDYgKzQ2NCw3IEBAIHdl
YmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktleWJvYXJkRXZl
bnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXAorCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViTnVtYmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJPcGVuUGFuZWxQYXJhbWV0
ZXJzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
aCBcCkBAIC01NTcsNiArNTYzLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOYXRpdmVFdmVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgXApAQCAtODUxLDYgKzg1OSwxMCBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJD
bGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmNw
cCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmggXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oIFwK
KwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5jcHAgXAor
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmggXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNw
cCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVy
UHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNs
aWVudC5jcHAgXApAQCAtOTgxLDYgKzk5Myw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UvV2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFDYWNoZU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
XApAQCAtMTA1NCw2ICsxMDY4LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmNwcCBcCisJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaAppbmRleCAzNjM4MTM4Li40MDFhNjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKQEAgLTQ5LDYgKzQ5
LDcgQEAgZW51bSBNZXNzYWdlQ2xhc3MgewogICAgIE1lc3NhZ2VDbGFzc1dlYkluc3BlY3RvciwK
ICAgICBNZXNzYWdlQ2xhc3NXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgIE1lc3NhZ2VD
bGFzc1dlYk1lZGlhQ2FjaGVNYW5hZ2VyLAorICAgIE1lc3NhZ2VDbGFzc1dlYk5ldHdvcmtJbmZv
TWFuYWdlclByb3h5LAogICAgIE1lc3NhZ2VDbGFzc1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIsCiAg
ICAgTWVzc2FnZUNsYXNzV2ViUGFnZSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzLApAQCAt
NzQsNiArNzUsNyBAQCBlbnVtIE1lc3NhZ2VDbGFzcyB7CiAgICAgTWVzc2FnZUNsYXNzV2ViSW5z
cGVjdG9yUHJveHksCiAgICAgTWVzc2FnZUNsYXNzV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclBy
b3h5LAogICAgIE1lc3NhZ2VDbGFzc1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHksCisgICAgTWVz
c2FnZUNsYXNzV2ViTmV0d29ya0luZm9NYW5hZ2VyLAogICAgIE1lc3NhZ2VDbGFzc1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQYWdlUHJveHksCiAgICAg
TWVzc2FnZUNsYXNzV2ViUHJvY2Vzc1Byb3h5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCmluZGV4IDM2ZTJkZGQuLjgxM2Y1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tC
YXNlLmgKQEAgLTEwOSw2ICsxMDksOCBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0lu
dGVudFNlcnZpY2VJbmZvKiBXS0ludGVudFNlcnZpY2VJbmZvUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyKiBXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS01lZGlhQ2FjaGVNYW5hZ2Vy
KiBXS01lZGlhQ2FjaGVNYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tO
YXZpZ2F0aW9uRGF0YSogV0tOYXZpZ2F0aW9uRGF0YVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLTmV0d29ya0luZm9NYW5hZ2VyKiBXS05ldHdvcmtJbmZvTWFuYWdlclJlZjsKK3R5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTmV0d29ya0luZm8qIFdLTmV0d29ya0luZm9SZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05vdGlmaWNhdGlvbiogV0tOb3RpZmljYXRp
b25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05vdGlmaWNhdGlvbk1hbmFnZXIq
IFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggODMwZmVlOC4uNmRiNjc3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtOTUsNiArOTUsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFR5cGVLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBUeXBlTWVkaWFD
YWNoZU1hbmFnZXIsCiAgICAgICAgIFR5cGVOYXZpZ2F0aW9uRGF0YSwKKyAgICAgICAgVHlwZU5l
dHdvcmtJbmZvLAorICAgICAgICBUeXBlTmV0d29ya0luZm9NYW5hZ2VyLAogICAgICAgICBUeXBl
Tm90aWZpY2F0aW9uLAogICAgICAgICBUeXBlTm90aWZpY2F0aW9uTWFuYWdlciwKICAgICAgICAg
VHlwZU5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJOZXR3b3JrSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Mz
MWJkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3Jr
SW5mby5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvLmgiCisKKyNpZiBFTkFCTEUoTkVU
V09SS19JTkZPKQorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJBcmd1
bWVudHMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk5ldHdvcmtJbmZvOjpXZWJOZXR3
b3JrSW5mbyhkb3VibGUgYmFuZHdpZHRoLCBib29sIG1ldGVyZWQpCit7CisgICAgbV9kYXRhLmJh
bmR3aWR0aCA9IGJhbmR3aWR0aDsKKyAgICBtX2RhdGEubWV0ZXJlZCA9IG1ldGVyZWQ7Cit9CisK
K1dlYk5ldHdvcmtJbmZvOjp+V2ViTmV0d29ya0luZm8oKQoreworfQorCit2b2lkIFdlYk5ldHdv
cmtJbmZvOjpEYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihiYW5kd2lkdGgsIG1ldGVy
ZWQpKTsKK30KKworYm9vbCBXZWJOZXR3b3JrSW5mbzo6RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciogZGVjb2RlciwgRGF0YSYgZGF0YSkKK3sKKyAgICByZXR1cm4gZGVjb2Rl
ci0+ZGVjb2RlKENvcmVJUEM6Ok91dChkYXRhLmJhbmR3aWR0aCwgZGF0YS5tZXRlcmVkKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5G
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNGMxNjE3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJOZXR3b3JrSW5mby5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViTmV0d29ya0luZm9faAorI2RlZmluZSBXZWJOZXR3b3JrSW5m
b19oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CisjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVy
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYk5ldHdvcmtJbmZvIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVOZXR3b3JrSW5mbzsKKworICAgIHN0cnVj
dCBEYXRhIHsKKyAgICAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikg
Y29uc3Q7CisgICAgICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqLCBEYXRhJik7CisKKyAgICAgICAgZG91YmxlIGJhbmR3aWR0aDsKKyAgICAgICAgYm9vbCBt
ZXRlcmVkOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJOZXR3b3JrSW5mbz4g
Y3JlYXRlKGRvdWJsZSBiYW5kd2lkdGgsIGJvb2wgbWV0ZXJlZCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViTmV0d29ya0luZm8oYmFuZHdpZHRoLCBtZXRlcmVkKSk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB+V2ViTmV0d29ya0luZm8oKTsKKworICAgIGRvdWJsZSBiYW5k
d2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmFuZHdpZHRoOyB9CisgICAgYm9vbCBtZXRl
cmVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm1ldGVyZWQ7IH0KKworICAgIGNvbnN0IERhdGEm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKworcHJpdmF0ZToKKyAgICBXZWJOZXR3
b3JrSW5mbyhkb3VibGUgYmFuZHdpZHRoLCBib29sIG1ldGVyZWQpOworCisgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBEYXRhIG1fZGF0YTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktf
SU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGVlNDE5
NDcuLjQwZGJlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMTY2LDYgKzE2Niw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS09wZW5QYW5lbFBhcmFtZXRlcnMuaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29y
a0luZm9NYW5hZ2VyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oIFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggXApAQCAtMzM1LDYg
KzMzNiw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIFwKICAgICBXZWJQcm9jZXNzL0tleVZhbHVl
U3RvcmFnZS9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUNhY2hlTWFuYWdlci5oIFwKKyAgICBXZWJQcm9jZXNzL05ldHdvcmtJ
bmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5oIFwKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggXAogICAgIFdlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmggXAogICAgIFdlYlByb2Nl
c3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5oIFwKQEAgLTM2NCw2ICsz
NjYsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdl
b2xvY2F0aW9uQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQuaCBcCisgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJO
ZXR3b3JrSW5mb0NsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5v
dGlmaWNhdGlvbkNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBv
cHVwTWVudS5oIFwKQEAgLTQ4NSw2ICs0ODgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQv
V2ViSW1hZ2UuY3BwIFwKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNo
YXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCisgICAgU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmNwcCBc
CiAgICAgU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMuY3BwIFwKICAgICBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgXAogICAgIFNoYXJlZC9XZWJQYWdlR3JvdXBEYXRh
LmNwcCBcCkBAIC01MzcsNiArNTQxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS09w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkRhdGEuY3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIu
Y3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZUdyb3VwLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUGx1Z2luU2l0ZURh
dGFNYW5hZ2VyLmNwcCBcCkBAIC02MjYsNiArNjMxLDggQEAgU09VUkNFUyArPSBcCiAgICAgVUlQ
cm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJNZWRpYUNhY2hl
TWFuYWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBc
CisgICAgVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmNwcCBcCisgICAgVUlQ
cm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlkZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlQ29u
dGV4dE1lbnVDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcCBcCkBA
IC03MDksNiArNzE2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9xdC9JbmplY3RlZEJ1bmRsZVF0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0
b3JhZ2UvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAgXAogICAgIFdlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUNhY2hlTWFuYWdlci5jcHAgXAorICAgIFdlYlByb2Nlc3MvTmV0d29y
a0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgXAogICAgIFdl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCkBA
IC03MzksNiArNzQ3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAgXAorICAgIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCAxZWNlOWU2Li4yODNmZWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC03Nyw2ICs3Nyw4IEBAIGNs
YXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwogY2xhc3MgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clByb3h5OwogY2xhc3MgV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYk5hdmln
YXRpb25EYXRhOworY2xhc3MgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk7CitjbGFzcyBXZWJO
ZXR3b3JrSW5mbzsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIGNsYXNzIFdlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OwpAQCAtMTE4LDYg
KzEyMCw4IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0ludGVudFNlcnZpY2VJbmZvUmVmLCBXZWJJ
bnRlbnRTZXJ2aWNlSW5mbykKIFdLX0FERF9BUElfTUFQUElORyhXS0tleVZhbHVlU3RvcmFnZU1h
bmFnZXJSZWYsIFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS01lZGlhQ2FjaGVNYW5hZ2VyUmVmLCBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdlYk5hdmlnYXRpb25EYXRh
KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmLCBXZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eSkKK1dLX0FERF9BUElfTUFQUElORyhXS05ldHdvcmtJbmZvUmVmLCBX
ZWJOZXR3b3JrSW5mbykKIFdLX0FERF9BUElfTUFQUElORyhXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYsIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0UmVmLCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS05vdGlmaWNhdGlvblByb3ZpZGVyUmVmLCBXZWJO
b3RpZmljYXRpb25Qcm92aWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjFlMDczM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS05l
dHdvcmtJbmZvTWFuYWdlci5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworV0tUeXBlSUQgV0tOZXR3b3JrSW5mb01hbmFnZXJHZXRUeXBlSUQoKQoreworI2lmIEVOQUJM
RShORVRXT1JLX0lORk8pCisgICAgcmV0dXJuIHRvQVBJKFdlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5OjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRjMTA3NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdl
ci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tOZXR3
b3JrSW5mb01hbmFnZXJfaAorI2RlZmluZSBXS05ldHdvcmtJbmZvTWFuYWdlcl9oCisKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKKy8vIFByb3ZpZGVyLgordHlwZWRlZiB2b2lkICgqV0tOZXR3b3JrSW5mb1By
b3ZpZGVyU3RhcnRVcGRhdGluZ0NhbGxiYWNrKShXS05ldHdvcmtJbmZvTWFuYWdlclJlZiBuZXR3
b3JrSW5mb01hbmFnZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgq
V0tOZXR3b3JrSW5mb1Byb3ZpZGVyU3RvcFVwZGF0aW5nQ2FsbGJhY2spKFdLTmV0d29ya0luZm9N
YW5hZ2VyUmVmIG5ldHdvcmtJbmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0
eXBlZGVmIGRvdWJsZSAoKldLTmV0d29ya0luZm9Qcm92aWRlckdldEJhbmR3aWR0aENhbGxiYWNr
KShXS05ldHdvcmtJbmZvTWFuYWdlclJlZiBuZXR3b3JrSW5mb01hbmFnZXIsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwordHlwZWRlZiBib29sICgqV0tOZXR3b3JrSW5mb1Byb3ZpZGVySXNNZXRl
cmVkQ2FsbGJhY2spKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmIG5ldHdvcmtJbmZvTWFuYWdlciwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS05ldHdvcmtJbmZvUHJvdmlkZXIg
eworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87Cisg
ICAgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyU3RhcnRVcGRhdGluZ0NhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydFVwZGF0aW5nOworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlclN0
b3BVcGRhdGluZ0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFVwZGF0aW5n
OworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlckdldEJhbmR3aWR0aENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoOworICAgIFdLTmV0d29ya0luZm9Qcm92aWRlcklz
TWV0ZXJlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0ZXJlZDsKK307
Cit0eXBlZGVmIHN0cnVjdCBXS05ldHdvcmtJbmZvUHJvdmlkZXIgV0tOZXR3b3JrSW5mb1Byb3Zp
ZGVyOworCitlbnVtIHsga1dLTmV0d29ya0luZm9Qcm92aWRlckN1cnJlbnRWZXJzaW9uID0gMCB9
OworCitXS19FWFBPUlQgV0tUeXBlSUQgV0tOZXR3b3JrSW5mb01hbmFnZXJHZXRUeXBlSUQoKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLTmV0d29ya0lu
Zm9NYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3
b3JrSW5mb01hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmNkZGVhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyUHJveHkuaCIKKworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm8uaCIKKyNpbmNsdWRlICJX
ZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
UGFzc1JlZlB0cjxXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eT4gV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHk6OmNyZWF0ZShXZWJDb250ZXh0KiBjb250ZXh0KQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoY29udGV4dCkpOworfQorCitXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoV2ViQ29u
dGV4dCogY29udGV4dCkKKyAgICA6IG1faXNVcGRhdGluZyhmYWxzZSkKKyAgICAsIG1fY29udGV4
dChjb250ZXh0KQoreworfQorCitXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6fldlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5KCkKK3sKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eTo6aW52YWxpZGF0ZSgpCit7CisgICAgc3RvcFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgV2Vi
TmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS05ldHdv
cmtJbmZvUHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIG1fcHJvdmlkZXIuaW5pdGlhbGl6ZShw
cm92aWRlcik7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnByb3ZpZGVy
RGlkQ2hhbmdlTmV0d29ya0luZm9ybWF0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBXZWJOZXR3b3JrSW5mbyogbmV0d29ya0luZm9ybWF0aW9uKQoreworICAgIGlmICghbV9jb250
ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpEaWRDaGFuZ2VOZXR3b3JrSW5mb3Jt
YXRpb24oZXZlbnRUeXBlLCBuZXR3b3JrSW5mb3JtYXRpb24tPmRhdGEoKSkpOworfQorCit2b2lk
IFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cykKK3sKKyAgICBkaWRSZWNlaXZlV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1l
bnRzKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6c3RhcnRVcGRhdGlu
ZygpCit7CisgICAgaWYgKG1faXNVcGRhdGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9w
cm92aWRlci5zdGFydFVwZGF0aW5nKHRoaXMpOworICAgIG1faXNVcGRhdGluZyA9IHRydWU7Cit9
CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnN0b3BVcGRhdGluZygpCit7Cisg
ICAgaWYgKCFtX2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvdmlkZXIu
c3RvcFVwZGF0aW5nKHRoaXMpOworICAgIG1faXNVcGRhdGluZyA9IGZhbHNlOworfQorCit2b2lk
IFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpnZXRCYW5kd2lkdGgoZG91YmxlJiBiYW5kd2lk
dGgpCit7CisgICAgYmFuZHdpZHRoID0gbV9wcm92aWRlci5iYW5kd2lkdGgodGhpcyk7Cit9CisK
K3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmlzTWV0ZXJlZChib29sJiBtZXRlcmVk
KQoreworICAgIG1ldGVyZWQgPSBtX3Byb3ZpZGVyLm1ldGVyZWQodGhpcyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYwY2JhOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
TmV0d29ya0luZm9NYW5hZ2VyUHJveHlfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eV9oCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCisjaW5jbHVkZSAiTWVzc2FnZUlELmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9Qcm92
aWRlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsK
K2NsYXNzIEFyZ3VtZW50RGVjb2RlcjsKK2NsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK2NsYXNzIENv
bm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDb250ZXh0Owor
Y2xhc3MgV2ViTmV0d29ya0luZm87CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJ
VHlwZSA9IFR5cGVOZXR3b3JrSW5mb01hbmFnZXI7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eT4gY3JlYXRlKFdlYkNvbnRleHQqKTsKKyAgICB2aXJ0
dWFsIH5XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSgpOworCisgICAgdm9pZCBpbnZhbGlkYXRl
KCk7CisgICAgdm9pZCBjbGVhckNvbnRleHQoKSB7IG1fY29udGV4dCA9IDA7IH0KKworICAgIHZv
aWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLTmV0d29ya0luZm9Qcm92aWRlciopOworCisg
ICAgdm9pZCBwcm92aWRlckRpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25zdCBXVEY6OkF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBXZWJOZXR3b3JrSW5mbyopOworCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eShXZWJDb250ZXh0Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIC8vIEltcGxlbWVudGVkIGlu
IGdlbmVyYXRlZCBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAK
KyAgICB2b2lkIGRpZFJlY2VpdmVXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqLCBXVEY6Ok93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+Jik7CisKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGlu
ZygpOworCisgICAgdm9pZCBnZXRCYW5kd2lkdGgoZG91YmxlJik7CisgICAgdm9pZCBpc01ldGVy
ZWQoYm9vbCYpOworCisgICAgYm9vbCBtX2lzVXBkYXRpbmc7CisKKyAgICBXZWJDb250ZXh0KiBt
X2NvbnRleHQ7CisgICAgV2ViTmV0d29ya0luZm9Qcm92aWRlciBtX3Byb3ZpZGVyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQor
CisjZW5kaWYgLy8gV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YWNkYzIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoTkVUV09SS19J
TkZPKQorCittZXNzYWdlcyAtPiBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSB7CisgICAgU3Rh
cnRVcGRhdGluZygpOworICAgIFN0b3BVcGRhdGluZygpOworCisgICAgR2V0QmFuZHdpZHRoKCkg
LT4gKGRvdWJsZSBiYW5kd2lkdGgpOworICAgIElzTWV0ZXJlZCgpIC0+IChib29sIG1ldGVyZWQp
OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJO
ZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3
b3JrSW5mb1Byb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
OTY3NzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb1Byb3ZpZGVy
LmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuaCIKKyNpbmNsdWRlIDxsaW1p
dHMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViTmV0d29ya0luZm9Qcm92aWRl
cjo6c3RhcnRVcGRhdGluZyhXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSogbmV0d29ya0luZm9N
YW5hZ2VyKQoreworICAgIGlmICghbV9jbGllbnQuc3RhcnRVcGRhdGluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jbGllbnQuc3RhcnRVcGRhdGluZyh0b0FQSShuZXR3b3JrSW5mb01hbmFn
ZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb1Byb3Zp
ZGVyOjpzdG9wVXBkYXRpbmcoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkqIG5ldHdvcmtJbmZv
TWFuYWdlcikKK3sKKyAgICBpZiAoIW1fY2xpZW50LnN0b3BVcGRhdGluZykKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jbGllbnQuc3RvcFVwZGF0aW5nKHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdl
ciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCitkb3VibGUgV2ViTmV0d29ya0luZm9Qcm92
aWRlcjo6YmFuZHdpZHRoKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KiBuZXR3b3JrSW5mb01h
bmFnZXIpIGNvbnN0Cit7CisgICAgLy8gVGhlIHNwZWMgaW5kaWNhdGVzIHRoYXQgd2Ugc2hvdWxk
IHJldHVybiAiaW5maW5pdHkiIGlmIHRoZSBiYW5kd2lkdGggaXMgdW5rbm93bi4KKyAgICBpZiAo
IW1fY2xpZW50LmJhbmR3aWR0aCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKTsKKworICAgIHJldHVybiBtX2NsaWVudC5iYW5kd2lkdGgodG9B
UEkobmV0d29ya0luZm9NYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK2Jvb2wg
V2ViTmV0d29ya0luZm9Qcm92aWRlcjo6bWV0ZXJlZChXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eSogbmV0d29ya0luZm9NYW5hZ2VyKSBjb25zdAoreworICAgIGlmICghbV9jbGllbnQubWV0ZXJl
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fY2xpZW50Lm1ldGVyZWQo
dG9BUEkobmV0d29ya0luZm9NYW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVy
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZjhlYTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5oCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViTmV0d29ya0lu
Zm9Qcm92aWRlcl9oCisjZGVmaW5lIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXJfaAorCisjaWYgRU5B
QkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldL
TmV0d29ya0luZm9NYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OworCitjbGFz
cyBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyIDogcHVibGljIEFQSUNsaWVudDxXS05ldHdvcmtJbmZv
UHJvdmlkZXIsIGtXS05ldHdvcmtJbmZvUHJvdmlkZXJDdXJyZW50VmVyc2lvbj4geworcHVibGlj
OgorICAgIHZvaWQgc3RhcnRVcGRhdGluZyhXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSopOwor
ICAgIHZvaWQgc3RvcFVwZGF0aW5nKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Kik7CisKKyAg
ICBkb3VibGUgYmFuZHdpZHRoKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KikgY29uc3Q7Cisg
ICAgYm9vbCBtZXRlcmVkKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KikgY29uc3Q7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8p
CisKKyNlbmRpZiAvLyBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIucHJpIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKaW5kZXgg
ZmQzZDJmMi4uMTdkNTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKQEAgLTUwLDYgKzUwLDcgQEAgSU5DTFVE
RVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXAogICAg
ICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL01lZGlhQ2FjaGUgXAorICAgICQkU09VUkNFX0RJUi9X
ZWJQcm9jZXNzL05ldHdvcmtJbmZvIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9QbHVnaW5zIFwKICAgICAk
JFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzEwMzcx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5m
by9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9N
YW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAiV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrSW5mby5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0luZm9Db250cm9sbGVyLmg+CisjaW5jbHVkZSA8bGlt
aXRzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViTmV0d29ya0luZm9NYW5hZ2VyOjpXZWJOZXR3b3JrSW5mb01hbmFnZXIoV2ViUHJvY2Vz
cyogcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQorCitXZWJOZXR3b3Jr
SW5mb01hbmFnZXI6On5XZWJOZXR3b3JrSW5mb01hbmFnZXIoKQoreworfQorCit2b2lkIFdlYk5l
dHdvcmtJbmZvTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYk5ldHdvcmtJbmZvTWFu
YWdlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworfQorCit2b2lk
IFdlYk5ldHdvcmtJbmZvTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2UqIHBhZ2UpCit7
CisgICAgYm9vbCB3YXNFbXB0eSA9IG1fcGFnZVNldC5pc0VtcHR5KCk7CisKKyAgICBtX3BhZ2VT
ZXQuYWRkKHBhZ2UpOworCisgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICBtX3Byb2Nlc3MtPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OlN0
YXJ0VXBkYXRpbmcoKSwgMCk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyOjp1bnJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlKiBwYWdlKQoreworICAgIG1fcGFnZVNldC5yZW1vdmUocGFn
ZSk7CisKKyAgICBpZiAobV9wYWdlU2V0LmlzRW1wdHkoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpT
dG9wVXBkYXRpbmcoKSwgMCk7Cit9CisKK2RvdWJsZSBXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmJh
bmR3aWR0aChXZWJQYWdlKiBwYWdlKSBjb25zdAoreworICAgIC8vIFRoZSBzcGVjIGluZGljYXRl
cyB0aGF0IHdlIHNob3VsZCByZXR1cm4gImluZmluaXR5IiBpZiB0aGUgYmFuZHdpZHRoIGlzIHVu
a25vd24uCisgICAgZG91YmxlIGJhbmR3aWR0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpHZXRCYW5kd2lkdGgoKSwgTWVzc2Fn
ZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpHZXRCYW5kd2lkdGg6OlJlcGx5KGJhbmR3
aWR0aCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gYmFuZHdpZHRoOworfQorCitib29s
IFdlYk5ldHdvcmtJbmZvTWFuYWdlcjo6bWV0ZXJlZChXZWJQYWdlKiBwYWdlKSBjb25zdAorewor
ICAgIGJvb2wgbWV0ZXJlZCA9IGZhbHNlOworICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OklzTWV0ZXJlZCgp
LCBNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OklzTWV0ZXJlZDo6UmVwbHko
bWV0ZXJlZCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gbWV0ZXJlZDsKK30KKwordm9p
ZCBXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgV2ViTmV0d29ya0luZm86OkRhdGEmIGRh
dGEpCit7CisgICAgUmVmUHRyPE5ldHdvcmtJbmZvPiBuZXR3b3JrSW5mb3JtYXRpb24gPSBOZXR3
b3JrSW5mbzo6Y3JlYXRlKGRhdGEuYmFuZHdpZHRoLCBkYXRhLm1ldGVyZWQpOworCisgICAgSGFz
aFNldDxXZWJQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wYWdlU2V0LmJlZ2luKCk7Cisg
ICAgSGFzaFNldDxXZWJQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcGFnZVNldC5lbmQo
KTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdlYlBhZ2UqIHBhZ2Ug
PSAqaXQ7CisgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAgICAgICAgTmV0d29y
a0luZm9Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRDaGFuZ2VOZXR3b3Jr
SW5mb3JtYXRpb24oZXZlbnRUeXBlLCBuZXR3b3JrSW5mb3JtYXRpb24uZ2V0KCkpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19J
TkZPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9X
ZWJOZXR3b3JrSW5mb01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
a0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZDNkYWI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJOZXR3b3JrSW5mb01hbmFnZXJfaAor
I2RlZmluZSBXZWJOZXR3b3JrSW5mb01hbmFnZXJfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5G
TykKKworI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3MgQXJndW1lbnREZWNv
ZGVyOworY2xhc3MgQ29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlByb2Nlc3M7CitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFn
ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk5ldHdvcmtJbmZvTWFuYWdlcik7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgV2ViTmV0d29ya0luZm9NYW5hZ2VyKFdlYlByb2Nlc3MqKTsK
KyAgICB+V2ViTmV0d29ya0luZm9NYW5hZ2VyKCk7CisKKyAgICB2b2lkIHJlZ2lzdGVyV2ViUGFn
ZShXZWJQYWdlKik7CisgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlKik7CisKKyAg
ICBkb3VibGUgYmFuZHdpZHRoKFdlYlBhZ2UqKSBjb25zdDsKKyAgICBib29sIG1ldGVyZWQoV2Vi
UGFnZSopIGNvbnN0OworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsK
KworcHJpdmF0ZToKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVjZWl2ZVdlYk5ldHdv
cmtJbmZvTWFuYWdlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKKyAgICB2b2lkIGRpZENoYW5nZU5l
dHdvcmtJbmZvcm1hdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgV2Vi
TmV0d29ya0luZm86OkRhdGEmKTsKKworICAgIFdlYlByb2Nlc3MqIG1fcHJvY2VzczsKKyAgICBI
YXNoU2V0PFdlYlBhZ2UqPiBtX3BhZ2VTZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBXZWJOZXR3b3Jr
SW5mb01hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5tZXNzYWdlcy5p
bgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2M4NDBjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3Jr
SW5mb01hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZP
KQorCittZXNzYWdlcyAtPiBXZWJOZXR3b3JrSW5mb01hbmFnZXIgeworICAgIERpZENoYW5nZU5l
dHdvcmtJbmZvcm1hdGlvbihBdG9taWNTdHJpbmcgZXZlbnRUeXBlLCBXZWJLaXQ6OldlYk5ldHdv
cmtJbmZvOjpEYXRhIG5ldHdvcmtJbmZvcm1hdGlvbik7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5m
b0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk5ldHdvcmtJbmZvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43YTk1NDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5jcHAKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk5l
dHdvcmtJbmZvQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVk
ZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk5ldHdvcmtJbmZv
Q2xpZW50Ojp+V2ViTmV0d29ya0luZm9DbGllbnQoKQoreworfQorCitkb3VibGUgV2ViTmV0d29y
a0luZm9DbGllbnQ6OmJhbmR3aWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtJbmZvTWFuYWdlcigpLmJhbmR3aWR0aChtX3BhZ2UpOworfQorCiti
b29sIFdlYk5ldHdvcmtJbmZvQ2xpZW50OjptZXRlcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0luZm9NYW5hZ2VyKCkubWV0ZXJlZChtX3BhZ2Up
OworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvQ2xpZW50OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrSW5mb01hbmFnZXIoKS5yZWdpc3RlcldlYlBh
Z2UobV9wYWdlKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb0NsaWVudDo6c3RvcFVwZGF0aW5n
KCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrSW5mb01hbmFnZXIoKS51bnJl
Z2lzdGVyV2ViUGFnZShtX3BhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFjMDJlNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmV0d29y
a0luZm9DbGllbnQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYk5ldHdvcmtJbmZvQ2xpZW50X2gKKyNkZWZpbmUgV2ViTmV0d29ya0luZm9DbGllbnRf
aAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0luZm9DbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisK
K2NsYXNzIFdlYk5ldHdvcmtJbmZvQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5ldHdvcmtJbmZv
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJOZXR3b3JrSW5mb0NsaWVudChXZWJQYWdlKiBwYWdl
KQorICAgICAgICA6IG1fcGFnZShwYWdlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5X
ZWJOZXR3b3JrSW5mb0NsaWVudCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgZG91YmxlIGJh
bmR3aWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZXRlcmVkKCkgY29u
c3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSBPVkVSUklERTsKKworICAgIFdlYlBh
Z2UqIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGQyZjdiNTQuLjNhOTk0
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODAsNiAr
ODAsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5k
b21OdW1iZXIuaD4KIAorI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisjaW5jbHVkZSAiV2ViTmV0
d29ya0luZm9NYW5hZ2VyTWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgIU9TKFdJTkRPV1MpCiAj
aW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKQEAgLTE0OCw2ICsxNTIsOSBAQCBXZWJQcm9jZXNz
OjpXZWJQcm9jZXNzKCkKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgLCBtX2JhdHRl
cnlNYW5hZ2VyKHRoaXMpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorICAgICwg
bV9uZXR3b3JrSW5mb01hbmFnZXIodGhpcykKKyNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgLCBtX25vdGlmaWNhdGlv
bk1hbmFnZXIodGhpcykKICNlbmRpZgpAQCAtNjQzLDYgKzY1MCwxMyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lcwogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAg
ICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk5ldHdvcmtJbmZvTWFu
YWdlcj4oKSkgeworICAgICAgICBtX25ldHdvcmtJbmZvTWFuYWdlci5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKwogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNz
V2ViSWNvbkRhdGFiYXNlUHJveHk+KCkpIHsKICAgICAgICAgbV9pY29uRGF0YWJhc2VQcm94eS5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggY2Mw
YTdmOS4uMDkwZDRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTYxLDYgKzYxLDEwIEBAIGNsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsKICNpbmNsdWRlICJX
ZWJCYXR0ZXJ5TWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQor
I2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlci5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUg
IldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgpAQCAtMTUwLDYgKzE1NCwxMCBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIFdlYkJhdHRlcnlNYW5hZ2Vy
JiBiYXR0ZXJ5TWFuYWdlcigpIHsgcmV0dXJuIG1fYmF0dGVyeU1hbmFnZXI7IH0KICNlbmRpZgor
CisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXImIG5l
dHdvcmtJbmZvTWFuYWdlcigpIHsgcmV0dXJuIG1fbmV0d29ya0luZm9NYW5hZ2VyOyB9CisjZW5k
aWYKICAgICAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXImIG5vdGlmaWNhdGlvbk1hbmFn
ZXIoKSB7IHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXI7IH0KQEAgLTI5Nyw2ICszMDUsOSBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBXZWJCYXR0ZXJ5TWFu
YWdlciBtX2JhdHRlcnlNYW5hZ2VyOwogI2VuZGlmCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykK
KyAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXIgbV9uZXR3b3JrSW5mb01hbmFnZXI7CisjZW5kaWYK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgbV9ub3RpZmljYXRpb25NYW5hZ2VyOwogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150883</attachid>
            <date>2012-07-04 23:36:26 -0700</date>
            <delta_ts>2012-07-06 12:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89870_network_info.patch</filename>
            <type>text/plain</type>
            <size>61747</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMDBlOWU1NC4uYzI3MDcxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTI3LDYgKzI3LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0Rvd25sb2FkcyIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9GdWxsU2NyZWVuIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9j
ZXNzL0dlb2xvY2F0aW9uIgorICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL05ldHdvcmtJ
bmZvIgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZSIKICAgICAi
JHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZSIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkiCkBAIC0xNTYsNiArMTU3LDcgQEAg
U0VUKFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcAogICAg
IFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcAogICAgIFNoYXJlZC9XZWJNb3VzZUV2ZW50LmNw
cAorICAgIFNoYXJlZC9XZWJOZXR3b3JrSW5mby5jcHAKICAgICBTaGFyZWQvV2ViT3BlblBhbmVs
UGFyYW1ldGVycy5jcHAKICAgICBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
ICAgICBTaGFyZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAKQEAgLTI1MCw2ICsyNTIsOCBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCisgICAgVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclBy
b3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcAogICAgIFVJUHJvY2Vz
cy9XZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VHcm91
cC5jcHAKQEAgLTI4OSw2ICsyOTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tNZWRpYUNhY2hlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uRGF0YS5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuY3BwCkBAIC0zODgsNiArMzkzLDggQEAgU0VUKFdl
YktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhQ2FjaGVN
YW5hZ2VyLmNwcAogCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01h
bmFnZXIuY3BwCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAogICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAogCkBAIC00MjAsNiArNDI3LDcgQEAgU0VUKFdlYktp
dDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZv
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cApAQCAtNDY2LDYgKzQ3NCw3IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dl
YktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9X
ZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KICAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNDk2LDYgKzUwNSw4IEBAIFNFVChXZWJLaXQyX01FU1NBR0VTX0lOX0ZJTEVTCiAKICAg
ICBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4K
IAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLm1lc3Nh
Z2VzLmluCisKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgogCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTNmYTliNS4uMzVmZDk5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wNy0wNCAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0
IGZvciBOZXR3b3JrIEluZm9ybWF0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgTmV0d29yayBJbmZvcm1hdGlvbiBBUEkgc3VwcG9ydCBm
b3IgV2ViS2l0Mi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmg6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElP
YmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViTmV0d29ya0luZm8uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjpXZWJOZXR3
b3JrSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjp+V2ViTmV0d29ya0lu
Zm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mbzo6RGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OkRhdGE6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYk5ldHdvcmtJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYk5ldHdvcmtJbmZvKToKKyAgICAgICAgKERhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mbzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86
OmJhbmR3aWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvOjptZXRlcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm86OmRhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOZXR3b3JrSW5mbzo6dHlwZSk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV0tOZXR3b3JrSW5mb01hbmFnZXJHZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6V2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eTo6fldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6aW5pdGlhbGl6ZVByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2hhbmdl
TmV0d29ya0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmdldEJhbmR3aWR0aCk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppc01ldGVyZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKENv
cmVJUEMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OmNs
ZWFyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5
Ojp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1By
b3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyOjpzdGFydFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9Qcm92aWRlcjo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9Qcm92aWRlcjo6YmFuZHdpZHRoKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TmV0d29ya0luZm9Qcm92aWRlcjo6bWV0ZXJlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk5l
dHdvcmtJbmZvUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViTmV0d29ya0luZm9Qcm92aWRlcik6CisgICAgICAgICogV2ViS2l0Mi5wcmk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFu
YWdlcjo6V2ViTmV0d29ya0luZm9NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29y
a0luZm9NYW5hZ2VyOjp+V2ViTmV0d29ya0luZm9NYW5hZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvTWFuYWdlcjo6YmFuZHdpZHRoKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTmV0d29ya0luZm9NYW5hZ2VyOjptZXRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTmV0d29ya0luZm9NYW5hZ2VyOjpkaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmg6IEFk
ZGVkLgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
TmV0d29ya0luZm9NYW5hZ2VyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dl
Yk5ldHdvcmtJbmZvTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6On5X
ZWJOZXR3b3JrSW5mb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xp
ZW50OjpiYW5kd2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJOZXR3b3JrSW5mb0NsaWVudDo6
bWV0ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjpzdGFydFVw
ZGF0aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViTmV0d29ya0luZm9DbGllbnQ6OnN0b3BVcGRh
dGluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5m
b0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJOZXR3b3Jr
SW5mb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYk5ldHdvcmtJbmZvQ2xpZW50OjpXZWJO
ZXR3b3JrSW5mb0NsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpuZXR3b3JrSW5mb01hbmFnZXIpOgorCiAyMDEyLTA3LTA0ICBKb2huIE1lbGxv
ciAgPGpvaG5tZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVGV4dCBBdXRvc2l6aW5nOiBBZGQg
Y29tcGlsZSBmbGFnIGFuZCBydW50aW1lIHNldHRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnBy
aQppbmRleCA5YmMwMTZkLi5jZTAzOWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGVy
aXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLnByaQpA
QCAtNDUsNiArNDUsNyBAQCBWUEFUSCA9IFwKICAgICBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZSBc
CiAgICAgV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXAogICAgIFdlYlByb2Nlc3MvTWVkaWFD
YWNoZSBcCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5mbyBcCiAgICAgV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zIFwKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMgXAogICAgIFdlYlByb2Nlc3MvUmVz
b3VyY2VDYWNoZSBcCkBAIC04Niw2ICs4Nyw4IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAg
IFdlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgV2ViTWVk
aWFDYWNoZU1hbmFnZXIubWVzc2FnZXMuaW4gXAogICAgIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJv
eHkubWVzc2FnZXMuaW4gXAorICAgIFdlYk5ldHdvcmtJbmZvTWFuYWdlci5tZXNzYWdlcy5pbiBc
CisgICAgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gXAogICAgIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbiBcCiAgICAgV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbiBcCiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMu
aW4gXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAxNjgyMzA1Li5iMGMwNzI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtNzQsNiArNzQsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJ
X01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdlIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0xhdW5jaGluZyBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlIFwKKwktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZSBcCiAJLUkkKHNyY2RpcikvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwIFwKQEAgLTIxOSw2ICsyMjAsNyBAQCB2cGF0aCAl
Lm1lc3NhZ2VzLmluID0gXAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UgXAog
CSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0b3JhZ2UgXAogCSQoV2ViS2l0MikvV2Vi
UHJvY2Vzcy9NZWRpYUNhY2hlIFwKKwkkKFdlYktpdDIpL1dlYlByb2Nlc3MvTmV0d29ya0luZm8g
XAogCSQoV2ViS2l0MikvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKIAkkKFdlYktpdDIpL1dl
YlByb2Nlc3MvUGx1Z2lucyBcCiAJJChXZWJLaXQyKS9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUg
XApAQCAtNTIyLDYgKzUyNCw3IEBAIEVYVFJBX0RJU1QgKz0gXAogCSQoc2hlbGwgbHMgJChXZWJL
aXQyKS9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktp
dDIpL1dlYlByb2Nlc3MvS2V5VmFsdWVTdG9yYWdlLyouaW4pIFwKIAkkKHNoZWxsIGxzICQoV2Vi
S2l0MikvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlLyouaW4pIFwKKwkkKHNoZWxsIGxzICQoV2ViS2l0
MikvV2ViUHJvY2Vzcy9OZXR3b3JrSW5mby8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktpdDIp
L1dlYlByb2Nlc3MvUGx1Z2lucy8qLmluKSBcCiAJJChzaGVsbCBscyAkKFdlYktpdDIpL1dlYlBy
b2Nlc3MvUmVzb3VyY2VDYWNoZS8qLmluKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAwZjIwMTkwLi5jYzYwNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTcwLDYgKzcwLDcgQEAgd2Via2l0Ml9oX2FwaSArPSBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3Mv
QVBJL0MvV0tNZWRpYUNhY2hlTWFuYWdlci5oIFwKIAkkKFdlYktpdDIpL1VJUHJvY2Vzcy9BUEkv
Qy9XS05hdGl2ZUV2ZW50LmggXAogCSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdh
dGlvbkRhdGEuaCBcCisJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01h
bmFnZXIuaCBcCiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb24uaCBc
CiAJJChXZWJLaXQyKS9VSVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggXAog
CSQoV2ViS2l0MikvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuaCBcCkBAIC0xOTEsNiArMTkyLDEwIEBAIHdlYmtpdDJfYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJNZWRpYUNhY2hlTWFuYWdlck1lc3NhZ2VzLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTWVkaWFDYWNoZU1hbmFn
ZXJQcm94eU1lc3NhZ2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTmV0d29ya0lu
Zm9NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9X
ZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdlcy5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQy
L1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eU1lc3NhZ2VzLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCkBAIC00NTksNiArNDY0LDcgQEAgd2Via2l0
Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBcCisJU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJO
dW1iZXIuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk9wZW5QYW5lbFBhcmFtZXRlcnMu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5oIFwK
QEAgLTU1Nyw2ICs1NjMsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS05hdGl2ZUV2ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05hdmlnYXRpb25EYXRhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkRhdGEuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS05vdGlmaWNhdGlvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBcCkBAIC04NTEsNiArODU5LDEwIEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVu
dC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuaCBcCisJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmNwcCBcCisJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmggXAorCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcCBcCisJU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJvdmlkZXIuaCBcCiAJU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUNvbnRleHRNZW51Q2xpZW50
LmNwcCBcCkBAIC05ODEsNiArOTkzLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0tleVZhbHVlU3RvcmFnZS9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUNh
Y2hlTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUNhY2hlTWFuYWdlci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmggXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBcCkBA
IC0xMDU0LDYgKzEwNjgsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTmV0d29ya0luZm9DbGllbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmggXAogCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJO
b3RpZmljYXRpb25DbGllbnQuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oCmluZGV4IDM2MzgxMzguLjQwMWE2NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2FnZUlELmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdlSUQuaApAQCAtNDksNiArNDksNyBA
QCBlbnVtIE1lc3NhZ2VDbGFzcyB7CiAgICAgTWVzc2FnZUNsYXNzV2ViSW5zcGVjdG9yLAogICAg
IE1lc3NhZ2VDbGFzc1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNz
V2ViTWVkaWFDYWNoZU1hbmFnZXIsCisgICAgTWVzc2FnZUNsYXNzV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHksCiAgICAgTWVzc2FnZUNsYXNzV2ViTm90aWZpY2F0aW9uTWFuYWdlciwKICAgICBN
ZXNzYWdlQ2xhc3NXZWJQYWdlLAogICAgIE1lc3NhZ2VDbGFzc1dlYlByb2Nlc3MsCkBAIC03NCw2
ICs3NSw3IEBAIGVudW0gTWVzc2FnZUNsYXNzIHsKICAgICBNZXNzYWdlQ2xhc3NXZWJJbnNwZWN0
b3JQcm94eSwKICAgICBNZXNzYWdlQ2xhc3NXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHks
CiAgICAgTWVzc2FnZUNsYXNzV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eSwKKyAgICBNZXNzYWdl
Q2xhc3NXZWJOZXR3b3JrSW5mb01hbmFnZXIsCiAgICAgTWVzc2FnZUNsYXNzV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LAogICAgIE1lc3NhZ2VDbGFzc1dlYlBhZ2VQcm94eSwKICAgICBNZXNz
YWdlQ2xhc3NXZWJQcm9jZXNzUHJveHksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgK
aW5kZXggMzZlMmRkZC4uODEzZjViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aApAQCAtMTA5LDYgKzEwOSw4IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLSW50ZW50
U2VydmljZUluZm8qIFdLSW50ZW50U2VydmljZUluZm9SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXIqIFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTWVkaWFDYWNoZU1hbmFnZXIqIFdL
TWVkaWFDYWNoZU1hbmFnZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS05hdmln
YXRpb25EYXRhKiBXS05hdmlnYXRpb25EYXRhUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tOZXR3b3JrSW5mb01hbmFnZXIqIFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOZXR3b3JrSW5mbyogV0tOZXR3b3JrSW5mb1JlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTm90aWZpY2F0aW9uKiBXS05vdGlmaWNhdGlvblJl
ZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLTm90aWZpY2F0aW9uTWFuYWdlciogV0tO
b3RpZmljYXRpb25NYW5hZ2VyUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA4MzBmZWU4Li42ZGI2Nzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC05NSw2ICs5NSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgVHlwZUtleVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIFR5cGVNZWRpYUNhY2hl
TWFuYWdlciwKICAgICAgICAgVHlwZU5hdmlnYXRpb25EYXRhLAorICAgICAgICBUeXBlTmV0d29y
a0luZm8sCisgICAgICAgIFR5cGVOZXR3b3JrSW5mb01hbmFnZXIsCiAgICAgICAgIFR5cGVOb3Rp
ZmljYXRpb24sCiAgICAgICAgIFR5cGVOb3RpZmljYXRpb25NYW5hZ2VyLAogICAgICAgICBUeXBl
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViTmV0d29ya0luZm8uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5l
dHdvcmtJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzMxYmRj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZv
LmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm8uaCIKKworI2lmIEVOQUJMRShORVRXT1JL
X0lORk8pCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkFyZ3VtZW50
cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTmV0d29ya0luZm86OldlYk5ldHdvcmtJ
bmZvKGRvdWJsZSBiYW5kd2lkdGgsIGJvb2wgbWV0ZXJlZCkKK3sKKyAgICBtX2RhdGEuYmFuZHdp
ZHRoID0gYmFuZHdpZHRoOworICAgIG1fZGF0YS5tZXRlcmVkID0gbWV0ZXJlZDsKK30KKworV2Vi
TmV0d29ya0luZm86On5XZWJOZXR3b3JrSW5mbygpCit7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0lu
Zm86OkRhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKGJhbmR3aWR0aCwgbWV0ZXJlZCkp
OworfQorCitib29sIFdlYk5ldHdvcmtJbmZvOjpEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBEYXRhJiBkYXRhKQoreworICAgIHJldHVybiBkZWNvZGVyLT5k
ZWNvZGUoQ29yZUlQQzo6T3V0KGRhdGEuYmFuZHdpZHRoLCBkYXRhLm1ldGVyZWQpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZPKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk5ldHdvcmtJbmZvLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViTmV0d29ya0luZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40YzE2MTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYk5ldHdvcmtJbmZvLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJOZXR3b3JrSW5mb19oCisjZGVmaW5lIFdlYk5ldHdvcmtJbmZvX2gK
KworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNp
bmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViTmV0d29ya0luZm8gOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZU5ldHdvcmtJbmZvOworCisgICAgc3RydWN0IERh
dGEgeworICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25z
dDsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcios
IERhdGEmKTsKKworICAgICAgICBkb3VibGUgYmFuZHdpZHRoOworICAgICAgICBib29sIG1ldGVy
ZWQ7CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYk5ldHdvcmtJbmZvPiBjcmVh
dGUoZG91YmxlIGJhbmR3aWR0aCwgYm9vbCBtZXRlcmVkKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJOZXR3b3JrSW5mbyhiYW5kd2lkdGgsIG1ldGVyZWQpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5XZWJOZXR3b3JrSW5mbygpOworCisgICAgZG91YmxlIGJhbmR3aWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iYW5kd2lkdGg7IH0KKyAgICBib29sIG1ldGVyZWQo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEubWV0ZXJlZDsgfQorCisgICAgY29uc3QgRGF0YSYgZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorCitwcml2YXRlOgorICAgIFdlYk5ldHdvcmtJ
bmZvKGRvdWJsZSBiYW5kd2lkdGgsIGJvb2wgbWV0ZXJlZCk7CisKKyAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIERhdGEgbV9kYXRhOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoTkVUV09SS19JTkZP
KQorCisjZW5kaWYgLy8gV2ViTmV0d29ya0luZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZWU0MTk0Ny4u
NDBkYmU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xNjYsNiArMTY2LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBhbmVsUGFyYW1ldGVycy5oIFwKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIFwKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tOYXZpZ2F0aW9uRGF0YS5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5m
b01hbmFnZXIuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uLmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBcCkBAIC0zMzUsNiArMzM2
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmggXAogICAgIFdlYlByb2Nlc3MvS2V5VmFsdWVTdG9y
YWdlL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9NZWRpYUNh
Y2hlL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyLmggXAorICAgIFdlYlByb2Nlc3MvTmV0d29ya0luZm8v
V2ViTmV0d29ya0luZm9NYW5hZ2VyLmggXAogICAgIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBcCiAgICAgV2ViUHJvY2Vzcy9S
ZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmggXApAQCAtMzY0LDYgKzM2Niw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5oIFwKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdv
cmtJbmZvQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmggXAogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBN
ZW51LmggXApAQCAtNDg1LDYgKzQ4OCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9XZWJJ
bWFnZS5jcHAgXAogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmNwcCBcCiAgICAgU2hhcmVk
L1dlYk1vdXNlRXZlbnQuY3BwIFwKKyAgICBTaGFyZWQvV2ViTmV0d29ya0luZm8uY3BwIFwKICAg
ICBTaGFyZWQvV2ViT3BlblBhbmVsUGFyYW1ldGVycy5jcHAgXAogICAgIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBcCiAgICAgU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3Bw
IFwKQEAgLTUzNyw2ICs1NDEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9u
RGF0YS5jcHAgXAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAg
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlR3JvdXAuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQbHVnaW5TaXRlRGF0YU1h
bmFnZXIuY3BwIFwKQEAgLTYyNiw2ICs2MzEsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nl
c3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5h
Z2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTmF2aWdhdGlvbkRhdGEuY3BwIFwKKyAg
ICBVSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkuY3BwIFwKKyAgICBVSVByb2Nl
c3MvV2ViTmV0d29ya0luZm9Qcm92aWRlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0
TWVudUNsaWVudC5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJQYWdlR3JvdXAuY3BwIFwKQEAgLTcw
OSw2ICs3MTYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L3F0L0luamVjdGVkQnVuZGxlUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0tleVZhbHVlU3RvcmFn
ZS9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9NZWRpYUNh
Y2hlL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9OZXR3b3JrSW5m
by9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwIFwKICAgICBXZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBcCiAgICAgV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIFwKICAgICBXZWJQ
cm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKQEAgLTcz
OSw2ICs3NDcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQVBJQ2FzdC5oCmluZGV4IDFlY2U5ZTYuLjI4M2ZlZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKQEAgLTc3LDYgKzc3LDggQEAgY2xhc3Mg
V2ViSW50ZW50U2VydmljZUluZm87CiBjbGFzcyBXZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJv
eHk7CiBjbGFzcyBXZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTmF2aWdhdGlv
bkRhdGE7CitjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTsKK2NsYXNzIFdlYk5ldHdv
cmtJbmZvOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uOwogY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXI7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk7CkBAIC0xMTgsNiArMTIw
LDggQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLSW50ZW50U2VydmljZUluZm9SZWYsIFdlYkludGVu
dFNlcnZpY2VJbmZvKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdl
clJlZiwgV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLTWVkaWFDYWNoZU1hbmFnZXJSZWYsIFdlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tOYXZpZ2F0aW9uRGF0YVJlZiwgV2ViTmF2aWdhdGlvbkRhdGEpCitX
S19BRERfQVBJX01BUFBJTkcoV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYsIFdlYk5ldHdvcmtJbmZv
TWFuYWdlclByb3h5KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLTmV0d29ya0luZm9SZWYsIFdlYk5l
dHdvcmtJbmZvKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiwg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RSZWYsIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLTm90aWZpY2F0aW9uUHJvdmlkZXJSZWYsIFdlYk5vdGlm
aWNhdGlvblByb3ZpZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMWUwNzMzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS05ldHdvcmtJbmZvTWFuYWdlci5jcHAKQEAgLTAsMCArMSw0MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLTmV0d29y
a0luZm9NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXZWJO
ZXR3b3JrSW5mb01hbmFnZXJQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS05ldHdvcmtJbmZvTWFuYWdlckdldFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKE5F
VFdPUktfSU5GTykKKyAgICByZXR1cm4gdG9BUEkoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6
OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tOZXR3b3JrSW5mb01hbmFnZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmVjZjRlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLTmV0d29ya0luZm9NYW5hZ2VyLmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS05ldHdvcmtJ
bmZvTWFuYWdlcl9oCisjZGVmaW5lIFdLTmV0d29ya0luZm9NYW5hZ2VyX2gKKworI2luY2x1ZGUg
PFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLy8gUHJvdmlkZXIuCit0eXBlZGVmIHZvaWQgKCpXS05ldHdvcmtJbmZvUHJvdmlk
ZXJTdGFydFVwZGF0aW5nQ2FsbGJhY2spKFdLTmV0d29ya0luZm9NYW5hZ2VyUmVmIG5ldHdvcmtJ
bmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS05l
dHdvcmtJbmZvUHJvdmlkZXJTdG9wVXBkYXRpbmdDYWxsYmFjaykoV0tOZXR3b3JrSW5mb01hbmFn
ZXJSZWYgbmV0d29ya0luZm9NYW5hZ2VyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVk
ZWYgZG91YmxlICgqV0tOZXR3b3JrSW5mb1Byb3ZpZGVyR2V0QmFuZHdpZHRoQ2FsbGJhY2spKFdL
TmV0d29ya0luZm9NYW5hZ2VyUmVmIG5ldHdvcmtJbmZvTWFuYWdlciwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIGJvb2wgKCpXS05ldHdvcmtJbmZvUHJvdmlkZXJJc01ldGVyZWRD
YWxsYmFjaykoV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgbmV0d29ya0luZm9NYW5hZ2VyLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKKworc3RydWN0IFdLTmV0d29ya0luZm9Qcm92aWRlciB7Cisg
ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKKyAgICBX
S05ldHdvcmtJbmZvUHJvdmlkZXJTdGFydFVwZGF0aW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0VXBkYXRpbmc7CisgICAgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyU3RvcFVw
ZGF0aW5nQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wVXBkYXRpbmc7Cisg
ICAgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyR2V0QmFuZHdpZHRoQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYW5kd2lkdGg7CisgICAgV0tOZXR3b3JrSW5mb1Byb3ZpZGVySXNNZXRl
cmVkQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01ldGVyZWQ7Cit9Owor
dHlwZWRlZiBzdHJ1Y3QgV0tOZXR3b3JrSW5mb1Byb3ZpZGVyIFdLTmV0d29ya0luZm9Qcm92aWRl
cjsKKworZW51bSB7IGtXS05ldHdvcmtJbmZvUHJvdmlkZXJDdXJyZW50VmVyc2lvbiA9IDAgfTsK
KworV0tfRVhQT1JUIFdLVHlwZUlEIFdLTmV0d29ya0luZm9NYW5hZ2VyR2V0VHlwZUlEKCk7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS05ldHdvcmtJbmZv
TWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29y
a0luZm9NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40YWJlMmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZv
TWFuYWdlclByb3h5LmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5jbHVkZSAi
V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvLmgiCisjaW5jbHVkZSAiV2Vi
TmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bh
c3NSZWZQdHI8V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk+IFdlYk5ldHdvcmtJbmZvTWFuYWdl
clByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KGNvbnRleHQpKTsKK30KKworV2ViTmV0
d29ya0luZm9NYW5hZ2VyUHJveHk6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KFdlYkNvbnRl
eHQqIGNvbnRleHQpCisgICAgOiBtX2lzVXBkYXRpbmcoZmFsc2UpCisgICAgLCBtX2NvbnRleHQo
Y29udGV4dCkKK3sKK30KKworV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6On5XZWJOZXR3b3Jr
SW5mb01hbmFnZXJQcm94eSgpCit7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJv
eHk6OmludmFsaWRhdGUoKQoreworICAgIHN0b3BVcGRhdGluZygpOworfQorCit2b2lkIFdlYk5l
dHdvcmtJbmZvTWFuYWdlclByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tOZXR3b3Jr
SW5mb1Byb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUocHJv
dmlkZXIpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojpwcm92aWRlckRp
ZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
V2ViTmV0d29ya0luZm8qIG5ldHdvcmtJbmZvcm1hdGlvbikKK3sKKyAgICBpZiAoIW1fY29udGV4
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlcjo6RGlkQ2hhbmdlTmV0d29ya0luZm9ybWF0
aW9uKGV2ZW50VHlwZSwgbmV0d29ya0luZm9ybWF0aW9uLT5kYXRhKCkpKTsKK30KKwordm9pZCBX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50
cyk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OnN0YXJ0VXBkYXRpbmco
KQoreworICAgIGlmIChtX2lzVXBkYXRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJv
dmlkZXIuc3RhcnRVcGRhdGluZyh0aGlzKTsKKyAgICBtX2lzVXBkYXRpbmcgPSB0cnVlOworfQor
Cit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpzdG9wVXBkYXRpbmcoKQoreworICAg
IGlmICghbV9pc1VwZGF0aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb3ZpZGVyLnN0
b3BVcGRhdGluZyh0aGlzKTsKKyAgICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKK30KKwordm9pZCBX
ZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eTo6Z2V0QmFuZHdpZHRoKGRvdWJsZSYgYmFuZHdpZHRo
KQoreworICAgIGJhbmR3aWR0aCA9IG1fcHJvdmlkZXIuYmFuZHdpZHRoKHRoaXMpOworfQorCit2
b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Ojppc01ldGVyZWQoYm9vbCYgaXNNZXRlcmVk
KQoreworICAgIGlzTWV0ZXJlZCA9IG1fcHJvdmlkZXIuaXNNZXRlcmVkKHRoaXMpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MGNiYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHkuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5X2gKKyNkZWZpbmUgV2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHlfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZv
UHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgQ29yZUlQ
QyB7CitjbGFzcyBBcmd1bWVudERlY29kZXI7CitjbGFzcyBBcmd1bWVudEVuY29kZXI7CitjbGFz
cyBDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ29udGV4
dDsKK2NsYXNzIFdlYk5ldHdvcmtJbmZvOworCitjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eSA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBl
IEFQSVR5cGUgPSBUeXBlTmV0d29ya0luZm9NYW5hZ2VyOworCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CisgICAg
dmlydHVhbCB+V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoKTsKKworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOworICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX2NvbnRleHQgPSAwOyB9CisKKyAg
ICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS05ldHdvcmtJbmZvUHJvdmlkZXIqKTsK
KworICAgIHZvaWQgcHJvdmlkZXJEaWRDaGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgV2ViTmV0d29ya0luZm8qKTsKKworICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQg
V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkoV2ViQ29udGV4dCopOworCisgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICAvLyBJbXBsZW1lbnRl
ZCBpbiBnZW5lcmF0ZWQgV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciopOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgV1RGOjpPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyPiYpOworCisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBk
YXRpbmcoKTsKKworICAgIHZvaWQgZ2V0QmFuZHdpZHRoKGRvdWJsZSYpOworICAgIHZvaWQgaXNN
ZXRlcmVkKGJvb2wmKTsKKworICAgIGJvb2wgbV9pc1VwZGF0aW5nOworCisgICAgV2ViQ29udGV4
dCogbV9jb250ZXh0OworICAgIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXIgbV9wcm92aWRlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5G
TykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJOZXR3b3JrSW5mb01hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmFj
ZGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdv
cmtJbmZvTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAor
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYgRU5BQkxFKE5FVFdP
UktfSU5GTykKKworbWVzc2FnZXMgLT4gV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkgeworICAg
IFN0YXJ0VXBkYXRpbmcoKTsKKyAgICBTdG9wVXBkYXRpbmcoKTsKKworICAgIEdldEJhbmR3aWR0
aCgpIC0+IChkb3VibGUgYmFuZHdpZHRoKTsKKyAgICBJc01ldGVyZWQoKSAtPiAoYm9vbCBtZXRl
cmVkKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTmV0d29ya0luZm9Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
TmV0d29ya0luZm9Qcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNDdkMGNlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJOZXR3b3JrSW5mb1Byb3ZpZGVyLmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9Qcm92
aWRlci5oIgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSA8
bGltaXRzLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYk5ldHdvcmtJbmZvUHJv
dmlkZXI6OnN0YXJ0VXBkYXRpbmcoV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHkqIG5ldHdvcmtJ
bmZvTWFuYWdlcikKK3sKKyAgICBpZiAoIW1fY2xpZW50LnN0YXJ0VXBkYXRpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LnN0YXJ0VXBkYXRpbmcodG9BUEkobmV0d29ya0luZm9N
YW5hZ2VyKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9Q
cm92aWRlcjo6c3RvcFVwZGF0aW5nKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5KiBuZXR3b3Jr
SW5mb01hbmFnZXIpCit7CisgICAgaWYgKCFtX2NsaWVudC5zdG9wVXBkYXRpbmcpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LnN0b3BVcGRhdGluZyh0b0FQSShuZXR3b3JrSW5mb01h
bmFnZXIpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKworZG91YmxlIFdlYk5ldHdvcmtJbmZv
UHJvdmlkZXI6OmJhbmR3aWR0aChXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSogbmV0d29ya0lu
Zm9NYW5hZ2VyKSBjb25zdAoreworICAgIC8vIFRoZSBzcGVjIGluZGljYXRlcyB0aGF0IHdlIHNo
b3VsZCByZXR1cm4gImluZmluaXR5IiBpZiB0aGUgYmFuZHdpZHRoIGlzIHVua25vd24uCisgICAg
aWYgKCFtX2NsaWVudC5iYW5kd2lkdGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisKKyAgICByZXR1cm4gbV9jbGllbnQuYmFuZHdpZHRo
KHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiti
b29sIFdlYk5ldHdvcmtJbmZvUHJvdmlkZXI6OmlzTWV0ZXJlZChXZWJOZXR3b3JrSW5mb01hbmFn
ZXJQcm94eSogbmV0d29ya0luZm9NYW5hZ2VyKSBjb25zdAoreworICAgIGlmICghbV9jbGllbnQu
aXNNZXRlcmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQu
aXNNZXRlcmVkKHRvQVBJKG5ldHdvcmtJbmZvTWFuYWdlciksIG1fY2xpZW50LmNsaWVudEluZm8p
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JL
X0lORk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTmV0d29ya0lu
Zm9Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJv
dmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzIwNWQwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk5ldHdvcmtJbmZvUHJv
dmlkZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
Yk5ldHdvcmtJbmZvUHJvdmlkZXJfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyX2gK
KworI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNp
bmNsdWRlICJXS05ldHdvcmtJbmZvTWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eTsKKworY2xhc3MgV2ViTmV0d29ya0luZm9Qcm92aWRlciA6IHB1YmxpYyBBUElDbGllbnQ8V0tO
ZXR3b3JrSW5mb1Byb3ZpZGVyLCBrV0tOZXR3b3JrSW5mb1Byb3ZpZGVyQ3VycmVudFZlcnNpb24+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoV2ViTmV0d29ya0luZm9NYW5hZ2Vy
UHJveHkqKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZyhXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94
eSopOworCisgICAgZG91YmxlIGJhbmR3aWR0aChXZWJOZXR3b3JrSW5mb01hbmFnZXJQcm94eSop
IGNvbnN0OworICAgIGJvb2wgaXNNZXRlcmVkKFdlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5Kikg
Y29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShO
RVRXT1JLX0lORk8pCisKKyNlbmRpZiAvLyBXZWJOZXR3b3JrSW5mb1Byb3ZpZGVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcmkKaW5kZXggZmQzZDJmMi4uMTdkNTQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKQEAgLTUwLDYgKzUw
LDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9LZXlWYWx1ZVN0
b3JhZ2UgXAogICAgICQkU09VUkNFX0RJUi9XZWJQcm9jZXNzL01lZGlhQ2FjaGUgXAorICAgICQk
U09VUkNFX0RJUi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvIFwKICAgICAkJFNPVVJDRV9ESVIvV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9QbHVn
aW5zIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29y
a0luZm9NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8v
V2ViTmV0d29ya0luZm9NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44YzEwMzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTA0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
TmV0d29ya0luZm9NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQorCisjaW5j
bHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3
b3JrSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0luZm9Db250cm9sbGVyLmg+Cisj
aW5jbHVkZSA8bGltaXRzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViTmV0d29ya0luZm9NYW5hZ2VyOjpXZWJOZXR3b3JrSW5mb01hbmFn
ZXIoV2ViUHJvY2VzcyogcHJvY2VzcykKKyAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQor
CitXZWJOZXR3b3JrSW5mb01hbmFnZXI6On5XZWJOZXR3b3JrSW5mb01hbmFnZXIoKQoreworfQor
Cit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgZGlkUmVjZWl2ZVdlYk5l
dHdvcmtJbmZvTWFuYWdlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMp
OworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvTWFuYWdlcjo6cmVnaXN0ZXJXZWJQYWdlKFdlYlBh
Z2UqIHBhZ2UpCit7CisgICAgYm9vbCB3YXNFbXB0eSA9IG1fcGFnZVNldC5pc0VtcHR5KCk7CisK
KyAgICBtX3BhZ2VTZXQuYWRkKHBhZ2UpOworCisgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5h
Z2VyUHJveHk6OlN0YXJ0VXBkYXRpbmcoKSwgMCk7Cit9CisKK3ZvaWQgV2ViTmV0d29ya0luZm9N
YW5hZ2VyOjp1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlKiBwYWdlKQoreworICAgIG1fcGFnZVNl
dC5yZW1vdmUocGFnZSk7CisKKyAgICBpZiAobV9wYWdlU2V0LmlzRW1wdHkoKSkKKyAgICAgICAg
bV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFu
YWdlclByb3h5OjpTdG9wVXBkYXRpbmcoKSwgMCk7Cit9CisKK2RvdWJsZSBXZWJOZXR3b3JrSW5m
b01hbmFnZXI6OmJhbmR3aWR0aChXZWJQYWdlKiBwYWdlKSBjb25zdAoreworICAgIC8vIFRoZSBz
cGVjIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCByZXR1cm4gImluZmluaXR5IiBpZiB0aGUgYmFu
ZHdpZHRoIGlzIHVua25vd24uCisgICAgZG91YmxlIGJhbmR3aWR0aCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpHZXRCYW5kd2lk
dGgoKSwgTWVzc2FnZXM6OldlYk5ldHdvcmtJbmZvTWFuYWdlclByb3h5OjpHZXRCYW5kd2lkdGg6
OlJlcGx5KGJhbmR3aWR0aCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gYmFuZHdpZHRo
OworfQorCitib29sIFdlYk5ldHdvcmtJbmZvTWFuYWdlcjo6bWV0ZXJlZChXZWJQYWdlKiBwYWdl
KSBjb25zdAoreworICAgIGJvb2wgbWV0ZXJlZCA9IGZhbHNlOworICAgIG1fcHJvY2Vzcy0+Y29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6
OklzTWV0ZXJlZCgpLCBNZXNzYWdlczo6V2ViTmV0d29ya0luZm9NYW5hZ2VyUHJveHk6OklzTWV0
ZXJlZDo6UmVwbHkobWV0ZXJlZCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gbWV0ZXJl
ZDsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb01hbmFnZXI6OmRpZENoYW5nZU5ldHdvcmtJbmZv
cm1hdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgV2ViTmV0d29ya0lu
Zm86OkRhdGEmIGRhdGEpCit7CisgICAgUmVmUHRyPE5ldHdvcmtJbmZvPiBuZXR3b3JrSW5mb3Jt
YXRpb24gPSBOZXR3b3JrSW5mbzo6Y3JlYXRlKGRhdGEuYmFuZHdpZHRoLCBkYXRhLm1ldGVyZWQp
OworCisgICAgSGFzaFNldDxXZWJQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wYWdlU2V0
LmJlZ2luKCk7CisgICAgSGFzaFNldDxXZWJQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1f
cGFnZVNldC5lbmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFdl
YlBhZ2UqIHBhZ2UgPSAqaXQ7CisgICAgICAgIGlmIChwYWdlLT5jb3JlUGFnZSgpKQorICAgICAg
ICAgICAgTmV0d29ya0luZm9Db250cm9sbGVyOjpmcm9tKHBhZ2UtPmNvcmVQYWdlKCkpLT5kaWRD
aGFuZ2VOZXR3b3JrSW5mb3JtYXRpb24oZXZlbnRUeXBlLCBuZXR3b3JrSW5mb3JtYXRpb24uZ2V0
KCkpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoTkVUV09SS19JTkZPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZDNkYWI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29ya0luZm8vV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJOZXR3b3JrSW5m
b01hbmFnZXJfaAorI2RlZmluZSBXZWJOZXR3b3JrSW5mb01hbmFnZXJfaAorCisjaWYgRU5BQkxF
KE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIENvcmVJUEMgeworY2xhc3Mg
QXJndW1lbnREZWNvZGVyOworY2xhc3MgQ29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlByb2Nlc3M7CitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJOZXR3
b3JrSW5mb01hbmFnZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk5ldHdvcmtJbmZv
TWFuYWdlcik7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViTmV0d29ya0luZm9NYW5hZ2VyKFdl
YlByb2Nlc3MqKTsKKyAgICB+V2ViTmV0d29ya0luZm9NYW5hZ2VyKCk7CisKKyAgICB2b2lkIHJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlKik7CisgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQ
YWdlKik7CisKKyAgICBkb3VibGUgYmFuZHdpZHRoKFdlYlBhZ2UqKSBjb25zdDsKKyAgICBib29s
IG1ldGVyZWQoV2ViUGFnZSopIGNvbnN0OworCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqKTsKKworcHJpdmF0ZToKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQg
V2ViTmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAorICAgIHZvaWQgZGlkUmVj
ZWl2ZVdlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CisKKyAgICB2b2lk
IGRpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgY29uc3QgV2ViTmV0d29ya0luZm86OkRhdGEmKTsKKworICAgIFdlYlByb2Nlc3MqIG1fcHJv
Y2VzczsKKyAgICBIYXNoU2V0PFdlYlBhZ2UqPiBtX3BhZ2VTZXQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCisKKyNlbmRpZiAv
LyBXZWJOZXR3b3JrSW5mb01hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrSW5mby9XZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmtJbmZvL1dlYk5ldHdvcmtJbmZvTWFuYWdl
ci5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2M4NDBj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrSW5m
by9XZWJOZXR3b3JrSW5mb01hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTAsMCArMSwyOSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUo
TkVUV09SS19JTkZPKQorCittZXNzYWdlcyAtPiBXZWJOZXR3b3JrSW5mb01hbmFnZXIgeworICAg
IERpZENoYW5nZU5ldHdvcmtJbmZvcm1hdGlvbihBdG9taWNTdHJpbmcgZXZlbnRUeXBlLCBXZWJL
aXQ6OldlYk5ldHdvcmtJbmZvOjpEYXRhIG5ldHdvcmtJbmZvcm1hdGlvbik7Cit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJOZXR3b3JrSW5mb0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43YTk1NDZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJOZXR3b3JrSW5mb0NsaWVudC5jcHAKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYk5ldHdvcmtJbmZvQ2xpZW50LmgiCisKKyNpZiBFTkFCTEUoTkVUV09SS19JTkZP
KQorCisjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dl
Yk5ldHdvcmtJbmZvQ2xpZW50Ojp+V2ViTmV0d29ya0luZm9DbGllbnQoKQoreworfQorCitkb3Vi
bGUgV2ViTmV0d29ya0luZm9DbGllbnQ6OmJhbmR3aWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtJbmZvTWFuYWdlcigpLmJhbmR3aWR0aChtX3Bh
Z2UpOworfQorCitib29sIFdlYk5ldHdvcmtJbmZvQ2xpZW50OjptZXRlcmVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0luZm9NYW5hZ2VyKCkubWV0
ZXJlZChtX3BhZ2UpOworfQorCit2b2lkIFdlYk5ldHdvcmtJbmZvQ2xpZW50OjpzdGFydFVwZGF0
aW5nKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrSW5mb01hbmFnZXIoKS5y
ZWdpc3RlcldlYlBhZ2UobV9wYWdlKTsKK30KKwordm9pZCBXZWJOZXR3b3JrSW5mb0NsaWVudDo6
c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrSW5mb01h
bmFnZXIoKS51bnJlZ2lzdGVyV2ViUGFnZShtX3BhZ2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX0lORk8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJbmZvQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5ldHdvcmtJ
bmZvQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFjMDJlNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViTmV0d29ya0luZm9DbGllbnQuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYk5ldHdvcmtJbmZvQ2xpZW50X2gKKyNkZWZpbmUgV2ViTmV0d29y
a0luZm9DbGllbnRfaAorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya0luZm9DbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2U7CisKK2NsYXNzIFdlYk5ldHdvcmtJbmZvQ2xpZW50IDogcHVibGljIFdlYkNvcmU6
Ok5ldHdvcmtJbmZvQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBXZWJOZXR3b3JrSW5mb0NsaWVudChX
ZWJQYWdlKiBwYWdlKQorICAgICAgICA6IG1fcGFnZShwYWdlKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIH5XZWJOZXR3b3JrSW5mb0NsaWVudCgpOworCitwcml2YXRlOgorICAgIHZpcnR1
YWwgZG91YmxlIGJhbmR3aWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBt
ZXRlcmVkKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
ZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSBPVkVSUklERTsK
KworICAgIFdlYlBhZ2UqIG1fcGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfSU5GTykKKworI2VuZGlmIC8vIFdlYk5ldHdvcmtJbmZv
Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGQy
ZjdiNTQuLjNhOTk0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cApAQCAtODAsNiArODAsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIAorI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCisjaW5j
bHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgIU9T
KFdJTkRPV1MpCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKQEAgLTE0OCw2ICsxNTIsOSBA
QCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAg
ICAgLCBtX2JhdHRlcnlNYW5hZ2VyKHRoaXMpCiAjZW5kaWYKKyNpZiBFTkFCTEUoTkVUV09SS19J
TkZPKQorICAgICwgbV9uZXR3b3JrSW5mb01hbmFnZXIodGhpcykKKyNlbmRpZgogI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgLCBt
X25vdGlmaWNhdGlvbk1hbmFnZXIodGhpcykKICNlbmRpZgpAQCAtNjQzLDYgKzY1MCwxMyBAQCB2
b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok1lcwogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKE5FVFdP
UktfSU5GTykKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYk5l
dHdvcmtJbmZvTWFuYWdlcj4oKSkgeworICAgICAgICBtX25ldHdvcmtJbmZvTWFuYWdlci5kaWRS
ZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6
TWVzc2FnZUNsYXNzV2ViSWNvbkRhdGFiYXNlUHJveHk+KCkpIHsKICAgICAgICAgbV9pY29uRGF0
YWJhc2VQcm94eS5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3Vt
ZW50cyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggY2MwYTdmOS4uMDkwZDRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKQEAgLTYxLDYgKzYxLDEwIEBAIGNsYXNzIFFOZXR3b3JrQWNjZXNzTWFuYWdlcjsK
ICNpbmNsdWRlICJXZWJCYXR0ZXJ5TWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTkVU
V09SS19JTkZPKQorI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlci5oIgorI2VuZGlmCisK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05T
KQogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgpAQCAtMTUwLDYg
KzE1NCwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEJBVFRFUllfU1RBVFVTKQogICAgIFdlYkJh
dHRlcnlNYW5hZ2VyJiBiYXR0ZXJ5TWFuYWdlcigpIHsgcmV0dXJuIG1fYmF0dGVyeU1hbmFnZXI7
IH0KICNlbmRpZgorCisjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKKyAgICBXZWJOZXR3b3JrSW5m
b01hbmFnZXImIG5ldHdvcmtJbmZvTWFuYWdlcigpIHsgcmV0dXJuIG1fbmV0d29ya0luZm9NYW5h
Z2VyOyB9CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxF
KExFR0FDWV9OT1RJRklDQVRJT05TKQogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXImIG5vdGlm
aWNhdGlvbk1hbmFnZXIoKSB7IHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXI7IH0KQEAgLTI5
Nyw2ICszMDUsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShCQVRURVJZX1NUQVRVUykKICAgICBX
ZWJCYXR0ZXJ5TWFuYWdlciBtX2JhdHRlcnlNYW5hZ2VyOwogI2VuZGlmCisjaWYgRU5BQkxFKE5F
VFdPUktfSU5GTykKKyAgICBXZWJOZXR3b3JrSW5mb01hbmFnZXIgbV9uZXR3b3JrSW5mb01hbmFn
ZXI7CisjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9O
T1RJRklDQVRJT05TKQogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIgbV9ub3RpZmljYXRpb25N
YW5hZ2VyOwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>