<?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>218752</bug_id>
          
          <creation_ts>2020-11-10 07:16:06 -0800</creation_ts>
          <short_desc>Add a WebRTC SFrame transform</short_desc>
          <delta_ts>2020-11-16 10:22:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>218751</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1706074</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-10 07:16:06 -0800</bug_when>
    <thetext>Add a WebRTC SFrame transform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706374</commentid>
    <comment_count>1</comment_count>
      <attachid>413792</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-11 00:31:43 -0800</bug_when>
    <thetext>Created attachment 413792
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706948</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-12 11:35:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/71335529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707165</commentid>
    <comment_count>3</comment_count>
      <attachid>414016</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 02:07:22 -0800</bug_when>
    <thetext>Created attachment 414016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707170</commentid>
    <comment_count>4</comment_count>
      <attachid>414019</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 02:28:12 -0800</bug_when>
    <thetext>Created attachment 414019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707176</commentid>
    <comment_count>5</comment_count>
      <attachid>414023</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 02:42:29 -0800</bug_when>
    <thetext>Created attachment 414023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707177</commentid>
    <comment_count>6</comment_count>
      <attachid>414024</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 02:43:40 -0800</bug_when>
    <thetext>Created attachment 414024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707181</commentid>
    <comment_count>7</comment_count>
      <attachid>414026</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 02:50:21 -0800</bug_when>
    <thetext>Created attachment 414026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707186</commentid>
    <comment_count>8</comment_count>
      <attachid>414029</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 03:55:36 -0800</bug_when>
    <thetext>Created attachment 414029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707217</commentid>
    <comment_count>9</comment_count>
      <attachid>414038</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 06:23:37 -0800</bug_when>
    <thetext>Created attachment 414038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707246</commentid>
    <comment_count>10</comment_count>
      <attachid>414038</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-13 08:17:09 -0800</bug_when>
    <thetext>Comment on attachment 414038
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:56
&gt; +        promise.reject(Exception { TypeError, &quot;Invalid key&quot;_s });
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    if (WTF::get&lt;CryptoKeyAlgorithm&gt;(algorithm).name != &quot;HKDF&quot;) {
&gt; +        promise.reject(Exception { TypeError, &quot;Invalid key&quot;_s });

It might be helpful to have different error strings to help a developer understand the failure.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:75
&gt; +    backend.setTransformableFrameCallback([transformer = m_transformer, backend = makeRef(backend)](auto&amp;&amp; frame) {
&gt; +        auto chunk = frame.data();

Is there no chance the transform can be destroyed before the callback fires?

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:89
&gt; +    if (firstByte &amp; 0x80)

Nit: it might be nice to put this and the other bit tests below into a methods to make it clear what they do.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.h:2
&gt; + * Copyright (C) 2018 Apple Inc. All rights reserved.

s/2018/2020/

&gt; Tools/TestWebKitAPI/Tests/WebCore/RTCRtpSFrameTransformerTests.cpp:2
&gt; + * Copyright (C) 2014-2016 Apple Inc. All rights reserved.

s/2014-2016/2020/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707334</commentid>
    <comment_count>11</comment_count>
      <attachid>414071</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-13 11:44:02 -0800</bug_when>
    <thetext>Created attachment 414071
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707593</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-15 05:34:54 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 414071 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707594</commentid>
    <comment_count>13</comment_count>
      <attachid>414163</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-15 05:38:48 -0800</bug_when>
    <thetext>Created attachment 414163
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707617</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-15 10:00:18 -0800</bug_when>
    <thetext>Committed r269830: &lt;https://trac.webkit.org/changeset/269830&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414163.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707634</commentid>
    <comment_count>15</comment_count>
      <attachid>414163</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-15 11:31:45 -0800</bug_when>
    <thetext>Comment on attachment 414163
Rebasing

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

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:80
&gt; +static inline Vector&lt;uint8_t&gt; computeIV(uint64_t counter, const Vector&lt;uint8_t&gt;&amp; saltKey)
&gt; +{
&gt; +    Vector&lt;uint8_t&gt; iv(16);
&gt; +    for (unsigned i = 0; i &lt; 8; ++i) {
&gt; +        auto value = (counter &gt;&gt; ((7 - i) * 8)) &amp; 0xff;
&gt; +        iv[i] = value ^ saltKey[i];
&gt; +    }
&gt; +    for (unsigned i = 8; i &lt; 16; ++i)
&gt; +        iv[i] = saltKey[i];
&gt; +    return iv;
&gt; +}

This seems unsafe. Nothing is bounds checking saltKey here.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:233
&gt; +        auto keyIdLength = lengthOfUInt64(m_keyId);
&gt; +        writeUInt64(transformedData.data() + headerSize, m_keyId, keyIdLength);

What prevents keyIdLength from being bigger than transformedData.size() - headerSize (in which case I believe writeUInt64 will buffer overrun)?

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:237
&gt; +    auto counterLength = lengthOfUInt64(m_counter);
&gt; +    writeUInt64(transformedData.data() + headerSize, m_counter, counterLength);

Same question.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformerCocoa.cpp:69
&gt; +    Vector&lt;uint8_t&gt; result(CC_SHA256_DIGEST_LENGTH);
&gt; +    CCHmac(kCCHmacAlgSHA256, key.data(), key.size(), data, size, result.data());
&gt; +    return result;
&gt; +}

This really shouldn&apos;t be calling CommonCrypto directly. The way we like to handle this in WebCore is to add an appropriate platform abstraction in the platform/ directory (or PAL) and use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707698</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-16 00:05:43 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #15)
&gt; Comment on attachment 414163 [details]
&gt; Rebasing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=414163&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:80
&gt; &gt; +static inline Vector&lt;uint8_t&gt; computeIV(uint64_t counter, const Vector&lt;uint8_t&gt;&amp; saltKey)
&gt; &gt; +{
&gt; &gt; +    Vector&lt;uint8_t&gt; iv(16);
&gt; &gt; +    for (unsigned i = 0; i &lt; 8; ++i) {
&gt; &gt; +        auto value = (counter &gt;&gt; ((7 - i) * 8)) &amp; 0xff;
&gt; &gt; +        iv[i] = value ^ saltKey[i];
&gt; &gt; +    }
&gt; &gt; +    for (unsigned i = 8; i &lt; 16; ++i)
&gt; &gt; +        iv[i] = saltKey[i];
&gt; &gt; +    return iv;
&gt; &gt; +}
&gt; 
&gt; This seems unsafe. Nothing is bounds checking saltKey here.

I will add an ASSERT.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:233
&gt; &gt; +        auto keyIdLength = lengthOfUInt64(m_keyId);
&gt; &gt; +        writeUInt64(transformedData.data() + headerSize, m_keyId, keyIdLength);
&gt; 
&gt; What prevents keyIdLength from being bigger than transformedData.size() -
&gt; headerSize (in which case I believe writeUInt64 will buffer overrun)?
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:237
&gt; &gt; +    auto counterLength = lengthOfUInt64(m_counter);
&gt; &gt; +    writeUInt64(transformedData.data() + headerSize, m_counter, counterLength);
&gt; 
&gt; Same question.
&gt; 

transformedData is allocating (frameSize + MaxHeaderSize + m_authenticationSize) data.
MaxHeaderSize is the max size of header (17 bytes), 1 byte + 8 bytes for key ID + 8 bytes for counter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707857</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-16 09:47:41 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #16)
&gt; (In reply to Sam Weinig from comment #15)
&gt; &gt; Comment on attachment 414163 [details]
&gt; &gt; Rebasing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=414163&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:80
&gt; &gt; &gt; +static inline Vector&lt;uint8_t&gt; computeIV(uint64_t counter, const Vector&lt;uint8_t&gt;&amp; saltKey)
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    Vector&lt;uint8_t&gt; iv(16);
&gt; &gt; &gt; +    for (unsigned i = 0; i &lt; 8; ++i) {
&gt; &gt; &gt; +        auto value = (counter &gt;&gt; ((7 - i) * 8)) &amp; 0xff;
&gt; &gt; &gt; +        iv[i] = value ^ saltKey[i];
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +    for (unsigned i = 8; i &lt; 16; ++i)
&gt; &gt; &gt; +        iv[i] = saltKey[i];
&gt; &gt; &gt; +    return iv;
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; This seems unsafe. Nothing is bounds checking saltKey here.
&gt; 
&gt; I will add an ASSERT.

What is ensuring saltKey is long enough? It kind of seems like m_saltKey is maybe supposed to be a fixed size array of 16 bytes (from looking at computeSaltKey). One way to make this more clear and less error prone would be to use a better type for it, like a fixed size std::array rather than a Vector. 

&gt; 
&gt; &gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:233
&gt; &gt; &gt; +        auto keyIdLength = lengthOfUInt64(m_keyId);
&gt; &gt; &gt; +        writeUInt64(transformedData.data() + headerSize, m_keyId, keyIdLength);
&gt; &gt; 
&gt; &gt; What prevents keyIdLength from being bigger than transformedData.size() -
&gt; &gt; headerSize (in which case I believe writeUInt64 will buffer overrun)?
&gt; &gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:237
&gt; &gt; &gt; +    auto counterLength = lengthOfUInt64(m_counter);
&gt; &gt; &gt; +    writeUInt64(transformedData.data() + headerSize, m_counter, counterLength);
&gt; &gt; 
&gt; &gt; Same question.
&gt; &gt; 
&gt; 
&gt; transformedData is allocating (frameSize + MaxHeaderSize +
&gt; m_authenticationSize) data.
&gt; MaxHeaderSize is the max size of header (17 bytes), 1 byte + 8 bytes for key
&gt; ID + 8 bytes for counter.

Is there any way to make this clearer through the type system or judicious use of release asserts? This seems like something that could easily be broken if anyone changes any of the built in assumptions here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707881</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-16 10:22:42 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #17)
&gt; (In reply to youenn fablet from comment #16)
&gt; &gt; (In reply to Sam Weinig from comment #15)
&gt; &gt; &gt; Comment on attachment 414163 [details]
&gt; &gt; &gt; Rebasing
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=414163&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:80
&gt; &gt; &gt; &gt; +static inline Vector&lt;uint8_t&gt; computeIV(uint64_t counter, const Vector&lt;uint8_t&gt;&amp; saltKey)
&gt; &gt; &gt; &gt; +{
&gt; &gt; &gt; &gt; +    Vector&lt;uint8_t&gt; iv(16);
&gt; &gt; &gt; &gt; +    for (unsigned i = 0; i &lt; 8; ++i) {
&gt; &gt; &gt; &gt; +        auto value = (counter &gt;&gt; ((7 - i) * 8)) &amp; 0xff;
&gt; &gt; &gt; &gt; +        iv[i] = value ^ saltKey[i];
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; &gt; +    for (unsigned i = 8; i &lt; 16; ++i)
&gt; &gt; &gt; &gt; +        iv[i] = saltKey[i];
&gt; &gt; &gt; &gt; +    return iv;
&gt; &gt; &gt; &gt; +}
&gt; &gt; &gt; 
&gt; &gt; &gt; This seems unsafe. Nothing is bounds checking saltKey here.
&gt; &gt; 
&gt; &gt; I will add an ASSERT.
&gt; 
&gt; What is ensuring saltKey is long enough? It kind of seems like m_saltKey is
&gt; maybe supposed to be a fixed size array of 16 bytes (from looking at
&gt; computeSaltKey). One way to make this more clear and less error prone would
&gt; be to use a better type for it, like a fixed size std::array rather than a
&gt; Vector.

It might depend on the encryption mechanism. We only support one at the moment.
I added an ASSERT when computing m_saltKey in https://bugs.webkit.org/show_bug.cgi?id=218981.
 
&gt; &gt; &gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:233
&gt; &gt; &gt; &gt; +        auto keyIdLength = lengthOfUInt64(m_keyId);
&gt; &gt; &gt; &gt; +        writeUInt64(transformedData.data() + headerSize, m_keyId, keyIdLength);
&gt; &gt; &gt; 
&gt; &gt; &gt; What prevents keyIdLength from being bigger than transformedData.size() -
&gt; &gt; &gt; headerSize (in which case I believe writeUInt64 will buffer overrun)?
&gt; &gt; &gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransformer.cpp:237
&gt; &gt; &gt; &gt; +    auto counterLength = lengthOfUInt64(m_counter);
&gt; &gt; &gt; &gt; +    writeUInt64(transformedData.data() + headerSize, m_counter, counterLength);
&gt; &gt; &gt; 
&gt; &gt; &gt; Same question.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; transformedData is allocating (frameSize + MaxHeaderSize +
&gt; &gt; m_authenticationSize) data.
&gt; &gt; MaxHeaderSize is the max size of header (17 bytes), 1 byte + 8 bytes for key
&gt; &gt; ID + 8 bytes for counter.
&gt; 
&gt; Is there any way to make this clearer through the type system or judicious
&gt; use of release asserts? This seems like something that could easily be
&gt; broken if anyone changes any of the built in assumptions here.

All of this computation is done in the same method so breakage can only happen in these 10 lines. I can add some comments.
Or I can rewrite to have a method generating the header as a Vector&lt;uint8_t, 17&gt; and memcpy the header content into transformedData.
I&apos;ll do that in https://bugs.webkit.org/show_bug.cgi?id=218981.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413792</attachid>
            <date>2020-11-11 00:31:43 -0800</date>
            <delta_ts>2020-11-13 02:07:17 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-218752-20201111093141.patch</filename>
            <type>text/plain</type>
            <size>60839</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI4ZGVlMDE4OTMzMDFi
NGYyYzQxOTk0YmY1ZjFkZTI2NGQ4MzQ5Ni4uYWY2ZmJhMWJmYzg2NGU1ZDFiMWE4ODJkMjE5MjFj
MGU4ZmY3YjVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDIwLTExLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdDogd2VicnRjL3ZpZGVvLXNmcmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNr
ZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUlu
dDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlW
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVu
Y3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6
OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
cjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2ln
bmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OnNldElzU2VuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3Jt
QUVTX0NUUik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29t
cHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6
OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjplbmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUp
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgV2ViUlRDIHRyYW5zZm9y
bXMgdG8gc2VsZWN0IGEgZ2VuZXJpYyBwYWNrZXRpemF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2NjliNjg2MWI2YWZhMWQwYWMw
OTdiMWJkMzEwNjQ0ODNlZWM3NTE5Li4zOTY1ZTZjZDA1ZDQyZjM2NTBiMjU3ZTM5Nzc0OTU0ZjIw
NWI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKQEAgLTIzNiw2ICsyMzYsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKICQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZGI2NzEwMDg4
ZWYyNDU0NDgzMDI1ZTAxZTRhYTdjZTVkZmVjMzA0Yy4uMjZkM2MxNGEyYTY4Yjg5MTY2OWViMGQ1
NjAyN2NlNGY1Y2U3M2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3MDUsNiArMTcwNSw4IEBAICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJlY2VpdmVyLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4
UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRw
U2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlhZTQwYzE4Nzk2ODkzODE3Yjg0MTY1MjdjMjQw
YWY3MjNlOGYxMTYuLmE1ZmI0NWI4MGZiMDFmZDk5MGI0NWY2NmM3NWIyZGFjNTc5Zjc3NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYzLDYgKzI2Myw3IEBAIEpTX0JJTkRJ
TkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRQYXJhbWV0ZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRs
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmIxNDJiM2VjMGMzOTllZGVm
MWM4NjllZDdiMzM5NDRkOGE1MTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0wLDAgKzEs
MTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIgorCisj
aWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9LZXkuaCIKKyNpbmNsdWRlICJD
cnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSVENSdHBTRnJhbWVUcmFuc2Zvcm06OlJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSgpCisgICAgOiBtX3RyYW5zZm9ybWVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpjcmVhdGUoKSkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtKCkKK3sKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVu
Y3J5cHRpb25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9N
UHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGFsZ29yaXRobSA9
IGtleS5hbGdvcml0aG0oKTsKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRv
S2V5QWxnb3JpdGhtPihhbGdvcml0aG0pKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciwgIkludmFsaWQga2V5Il9zIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKFdURjo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5u
YW1lICE9ICJIS0RGIikgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNl
LnNldHRsZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5
SWQpKTsKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zv
cm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAg
bV90cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBt
X3RyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09
IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2Vu
ZC5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9y
bWVyLCBiYWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKSwgc2lkZV0oYXV0byYmIGZyYW1lKSB7Cisg
ICAgICAgIGF1dG8gY2h1bmsgPSBmcmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
dHJhbnNmb3JtZXItPnRyYW5zZm9ybShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihXZWJSVEMsICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBh
IGZyYW1lIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
c2lkZSA9PSBTaWRlOjpTZW5kZXIpCisgICAgICAgICAgICBmcmFtZS51c2VHZW5lcmljKCk7Cisg
ICAgICAgIGZyYW1lLnNldERhdGEoeyByZXN1bHQucmV0dXJuVmFsdWUoKS5kYXRhKCksIHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpLnNpemUoKSB9KTsKKworICAgICAgICBiYWNrZW5kLT5wcm9jZXNzVHJh
bnNmb3JtZWRGcmFtZShXVEZNb3ZlKGZyYW1lKSk7CisgICAgfSk7Cit9CisKKwordm9pZCBSVENS
dHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJh
bnNmb3JtQmFja2VuZCYgYmFja2VuZCkKK3sKKyAgICBpbml0aWFsaXplVHJhbnNmb3JtZXIoYmFj
a2VuZCwgU2lkZTo6UmVjZWl2ZXIpOworfQorCit2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6
aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2Vu
ZCkKK3sKKyAgICBpbml0aWFsaXplVHJhbnNmb3JtZXIoYmFja2VuZCwgU2lkZTo6U2VuZGVyKTsK
K30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRw
VHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkKK3sKKyAgICBiYWNrZW5kLmNsZWFyVHJhbnNmb3Jt
YWJsZUZyYW1lQ2FsbGJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wM2E1
YWE0MTZkMjc3MjU4YTI4ZDczODc4NmY3MzVkODc1MWVlZDlmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
aApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3J5cHRvS2V5OworY2xhc3MgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI7CisKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBmaW5hbCA6IHB1
YmxpYyBSVENSdHBUcmFuc2Zvcm0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSk7IH0KKyAgICB+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CisKKyAgICB2b2lk
IHNldEVuY3J5cHRpb25LZXkoQ3J5cHRvS2V5JiwgT3B0aW9uYWw8dWludDY0X3Q+LCBET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CisKK3ByaXZhdGU6CisgICAgUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJh
bnNmb3JtQmFja2VuZCYpIGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5k
ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOworICAgIHZvaWQgd2lsbENsZWFyQmFj
a2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisKKyAgICBlbnVtIGNsYXNzIFNp
ZGUgeyBTZW5kZXIsIFJlY2VpdmVyIH07CisgICAgdm9pZCBpbml0aWFsaXplVHJhbnNmb3JtZXIo
UlRDUnRwVHJhbnNmb3JtQmFja2VuZCYsIFNpZGUpOworCisgICAgUmVmPFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyPiBtX3RyYW5zZm9ybWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWNkZWEwMmUxOTAyZjcxNTEwNTJjNWI1MTIxNWE1MWJhNmQ0N2RhMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250
cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VC
X1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLAorICAg
IEV4cG9zZWQ9V2luZG93CitdIGludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gOiBSVENS
dHBUcmFuc2Zvcm0geworICAgIGNvbnN0cnVjdG9yKCk7CisKKyAgICBQcm9taXNlPHVuZGVmaW5l
ZD4gc2V0RW5jcnlwdGlvbktleShDcnlwdG9LZXkga2V5LCBvcHRpb25hbCB1bnNpZ25lZCBsb25n
IGxvbmcga2V5SUQpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbWlzc2luZyBtZXRo
b2RzLgorICAgIC8vIFByb21pc2U8dW5kZWZpbmVkPiByYXRjaGV0RW5jcnlwdGlvbktleSgpOwor
ICAgIC8vIFByb21pc2U8dW5kZWZpbmVkPiBzZXRTaWduaW5nS2V5KENyeXB0b0tleSBrZXkpOwor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzYzZDNjMjM2YmI1Yjhj
NjJjZmUyZGRlMjlmZTE2ZWU5ZGU5MGQzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwCkBAIC0w
LDAgKzEsMjc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgaW5saW5lIHZvaWQgd3JpdGVVSW50NjQodWludDhfdCogZGF0YSwgdWludDY0X3QgdmFsdWUs
IHVpbnQ4X3QgdmFsdWVMZW5ndGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZh
bHVlTGVuZ3RoOyArK2kpCisgICAgICAgICpkYXRhKysgPSAodmFsdWUgPj4gKCh2YWx1ZUxlbmd0
aCAtIDEgLSBpKSAqIDgpKSAmIDB4ZmY7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBsZW5n
dGhPZlVJbnQ2NCh1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICB1aW50OF90IGxlbmd0aCA9IDA7Cisg
ICAgZG8geworICAgICAgICArK2xlbmd0aDsKKyAgICAgICAgdmFsdWUgPSB2YWx1ZSA+PiA4Owor
ICAgIH0gd2hpbGUgKHZhbHVlKTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQorCitzdGF0aWMgaW5s
aW5lIHVpbnQ4X3QgY29tcHV0ZUZpcnN0SGVhZGVyQnl0ZSh1aW50NjRfdCBrZXlJZCwgdWludDY0
X3QgY291bnRlcikKK3sKKyAgICB1aW50OF90IHZhbHVlID0gMDsKKyAgICB2YWx1ZSB8PSAobGVu
Z3RoT2ZVSW50NjQoY291bnRlcikgLSAxKSA8PCA0OworICAgIGlmIChrZXlJZCA8IDgpCisgICAg
ICAgIHZhbHVlIHw9IGtleUlkOworICAgIGVsc2UgeworICAgICAgICB2YWx1ZSB8PSAobGVuZ3Ro
T2ZVSW50NjQoa2V5SWQpIC0gMSk7CisgICAgICAgIHZhbHVlIHw9IDEgPDwgMzsKKyAgICB9Cisg
ICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBjb21w
dXRlSVYodWludDY0X3QgY291bnRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0S2V5KQor
eworICAgIFZlY3Rvcjx1aW50OF90PiBpdigxNik7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDg7ICsraSkgeworICAgICAgICBhdXRvIHZhbHVlID0gKGNvdW50ZXIgPj4gKCg3IC0gaSkg
KiA4KSkgJiAweGZmOworICAgICAgICBpdltpXSA9IHZhbHVlIF4gc2FsdEtleVtpXTsKKyAgICB9
CisgICAgZm9yICh1bnNpZ25lZCBpID0gODsgaSA8IDE2OyArK2kpCisgICAgICAgIGl2W2ldID0g
c2FsdEtleVtpXTsKKyAgICByZXR1cm4gaXY7Cit9CisKK3N0cnVjdCBTRnJhbWVIZWFkZXJJbmZv
IHsKKyAgICB1aW50OF90IHNpemU7CisgICAgdWludDY0X3Qga2V5SWQ7CisgICAgdWludDY0X3Qg
Y291bnRlcjsKK307CitzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFNGcmFtZUhlYWRlckluZm8+IHBh
cnNlU0ZyYW1lSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAg
IGF1dG8qIHN0YXJ0ID0gZGF0YTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZSBi
aXQuCisgICAgdWludDY0X3Qga2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOwor
CisgICAgYXV0byBmaXJzdEJ5dGUgPSAqZGF0YSsrOworICAgIHVpbnQ4X3QgY291bnRlckxlbmd0
aCA9ICgoZmlyc3RCeXRlID4+IDQpICYgMHgwNykgKyAxOworCisgICAgaWYgKHNpemUgPCBjb3Vu
dGVyTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChmaXJzdEJ5dGUg
JiAweDA4KSB7CisgICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoID0gKGZpcnN0Qnl0ZSAmIDB4MDcp
ICsgMTsKKyAgICAgICAgaWYgKHNpemUgPCBjb3VudGVyTGVuZ3RoICsga2V5TGVuZ3RoICsgMSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgd2hpbGUgKGtleUxlbmd0aC0tKQor
ICAgICAgICAgICAga2V5SWQgPSAoa2V5SWQgPDwgOCkgfCAqZGF0YSsrOworICAgICAgICB3aGls
ZSAoY291bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9IChjb3VudGVyIDw8IDgp
IHwgKmRhdGErKzsKKyAgICB9IGVsc2UgeworICAgICAgICBrZXlJZCA9IGZpcnN0Qnl0ZSAmIDB4
MDc7CisgICAgICAgIHdoaWxlIChjb3VudGVyTGVuZ3RoLS0pCisgICAgICAgICAgICBjb3VudGVy
ID0gKGNvdW50ZXIgPDwgOCkgfCAqZGF0YSsrOworICAgIH0KKyAgICB1aW50OF90IGhlYWRlclNp
emUgPSBkYXRhIC0gc3RhcnQ7CisgICAgcmV0dXJuIFNGcmFtZUhlYWRlckluZm8geyBoZWFkZXJT
aXplLCBrZXlJZCwgY291bnRlciB9OworfQorCitSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkpOworfQorCitSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKQoreworfQorCitSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCkKK3sKKyAg
ICBhdXRvIHNhbHRLZXlSZXN1bHQgPSBjb21wdXRlU2FsdEtleShyYXdLZXkpOworICAgIGlmIChz
YWx0S2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2FsdEtleVJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0
ID0gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGF1dGhlbnRpY2F0
aW9uS2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXV0aGVudGljYXRp
b25LZXlSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBlbmNyeXB0aW9uS2V5
UmVzdWx0ID0gY29tcHV0ZUVuY3J5cHRpb25LZXkocmF3S2V5KTsKKyAgICBpZiAoZW5jcnlwdGlv
bktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY3J5cHRpb25LZXlS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2tleUxvY2spOworCisgICAgbV9zYWx0S2V5ID0gc2FsdEtleVJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICBtX2F1dGhlbnRpY2F0aW9uS2V5ID0gYXV0aGVudGljYXRpb25LZXlSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgbV9lbmNyeXB0aW9uS2V5ID0gZW5jcnlwdGlv
bktleVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIGlmIChrZXlJZCkKKyAgICAg
ICAgbV9rZXlJZCA9ICprZXlJZDsKKworICAgIG1faGFzS2V5ID0gdHJ1ZTsKKyAgICByZXR1cm4g
eyB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKKworICAgIC8vIFBhcnNlIGhlYWRlcgorICAg
IGF1dG8gaGVhZGVyID0gcGFyc2VTRnJhbWVIZWFkZXIoZnJhbWVEYXRhLCBmcmFtZVNpemUpOwor
CisgICAgaWYgKCFoZWFkZXIpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Ig
fTsKKworICAgIGlmIChoZWFkZXItPmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1fY291bnRlcikK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgbV9j
b3VudGVyID0gaGVhZGVyLT5jb3VudGVyOworCisgICAgaWYgKGhlYWRlci0+a2V5SWQgIT0gbV9r
ZXlJZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisK
KyAgICAvLyBDb21wdXRlIHNpZ25hdHVyZQorICAgIGF1dG8qIHRyYW5zbWl0dGVkU2lnbmF0dXJl
ID0gZnJhbWVEYXRhICsgZnJhbWVTaXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0
byBzaWduYXR1cmUgPSBjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShmcmFtZURhdGEsIGZy
YW1lU2l6ZSAgLSBtX2F1dGhlbnRpY2F0aW9uU2l6ZSwgbV9hdXRoZW50aWNhdGlvbktleSk7Cisg
ICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsgKytj
cHRyKSB7CisgICAgICAgIGlmIChzaWduYXR1cmVbY3B0cl0gIT0gdHJhbnNtaXR0ZWRTaWduYXR1
cmVbY3B0cl0pIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IG90aGVyIGtl
eXMKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9Owor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRGVjcnlwdCBkYXRhCisgICAgYXV0byBpdiA9IGNv
bXB1dGVJVihtX2NvdW50ZXIsIG1fc2FsdEtleSk7CisgICAgYXV0byBkYXRhU2l6ZSA9IGZyYW1l
U2l6ZSAtIGhlYWRlci0+c2l6ZSAtIG1fYXV0aGVudGljYXRpb25TaXplOworICAgIGF1dG8gcmVz
dWx0ID0gZGVjcnlwdERhdGEoZnJhbWVEYXRhICsgaGVhZGVyLT5zaXplLCBkYXRhU2l6ZSwgaXYs
IG1fZW5jcnlwdGlvbktleSk7CisKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHJldHVybiByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZShjb25zdCB1aW50OF90KiBm
cmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCit7CisgICAgLy8gRklYTUU6IFN1cHBvcnQgc2ln
bmF0dXJlLgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1heEhlYWRlclNpemUgPSAxNzsK
KworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKKworICAgIGF1dG8gaXYg
PSBjb21wdXRlSVYobV9jb3VudGVyLCBtX3NhbHRLZXkpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHRyYW5zZm9ybWVkRGF0YTsKKyAgICB0cmFuc2Zvcm1lZERhdGEucmVzaXplKGZyYW1lU2l6ZSAr
IE1heEhlYWRlclNpemUgKyBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7CisKKyAgICAvLyBGaWxsIGhl
YWRlci4KKyAgICBzaXplX3QgaGVhZGVyU2l6ZSA9IDE7CisgICAgdHJhbnNmb3JtZWREYXRhWzBd
ID0gY29tcHV0ZUZpcnN0SGVhZGVyQnl0ZShtX2tleUlkLCBtX2NvdW50ZXIpOworICAgIGlmICht
X2tleUlkID49IDgpIHsKKyAgICAgICAgYXV0byBrZXlJZExlbmd0aCA9IGxlbmd0aE9mVUludDY0
KG1fa2V5SWQpOworICAgICAgICB3cml0ZVVJbnQ2NCh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsg
aGVhZGVyU2l6ZSwgbV9rZXlJZCwga2V5SWRMZW5ndGgpOworICAgICAgICBoZWFkZXJTaXplICs9
IGtleUlkTGVuZ3RoOworICAgIH0KKyAgICBhdXRvIGNvdW50ZXJMZW5ndGggPSBsZW5ndGhPZlVJ
bnQ2NChtX2NvdW50ZXIpOworICAgIHdyaXRlVUludDY0KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkg
KyBoZWFkZXJTaXplLCBtX2NvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOworICAgIGhlYWRlclNpemUg
Kz0gY291bnRlckxlbmd0aDsKKworICAgIHRyYW5zZm9ybWVkRGF0YS5yZXNpemUoZnJhbWVTaXpl
ICsgaGVhZGVyU2l6ZSArIG1fYXV0aGVudGljYXRpb25TaXplKTsKKworICAgIC8vIEZpbGwgZW5j
cnlwdGVkIGRhdGEKKyAgICBhdXRvIGVuY3J5cHRlZERhdGEgPSBlbmNyeXB0RGF0YShmcmFtZURh
dGEsIGZyYW1lU2l6ZSwgaXYsIG1fZW5jcnlwdGlvbktleSk7CisgICAgQVNTRVJUKCFlbmNyeXB0
ZWREYXRhLmhhc0V4Y2VwdGlvbigpKTsKKyAgICBpZiAoZW5jcnlwdGVkRGF0YS5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGVuY3J5cHRlZERhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwor
CisgICAgbWVtY3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBlbmNyeXB0
ZWREYXRhLnJldHVyblZhbHVlKCkuZGF0YSgpLCBmcmFtZVNpemUpOworCisgICAgLy8gRmlsbCBz
aWduYXR1cmUKKyAgICBhdXRvIHNpZ25hdHVyZSA9IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0
dXJlKHRyYW5zZm9ybWVkRGF0YS5kYXRhKCksIGZyYW1lU2l6ZSArIGhlYWRlclNpemUsIG1fYXV0
aGVudGljYXRpb25LZXkpOworICAgIG1lbWNweSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgZnJh
bWVTaXplICsgaGVhZGVyU2l6ZSwgc2lnbmF0dXJlLmRhdGEoKSwgbV9hdXRoZW50aWNhdGlvblNp
emUpOworCisgICAgKyttX2NvdW50ZXI7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhOwor
fQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Ojp0cmFuc2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYg
KCFtX2hhc0tleSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CisKKyAgICByZXR1cm4gbV9pc1NlbmRpbmcgPyBlbmNyeXB0RnJhbWUoZGF0YSwgc2l6ZSkg
OiBkZWNyeXB0RnJhbWUoZGF0YSwgc2l6ZSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21w
dXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBOb3RTdXBw
b3J0ZWRFcnJvcjsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYpCit7CisgICAgcmV0dXJuIE5vdFN1cHBvcnRlZEVycm9yOworfQorCitFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlw
dGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBOb3RTdXBwb3J0
ZWRFcnJvcjsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gTm90
U3VwcG9ydGVkRXJyb3I7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0
dXJuIE5vdFN1cHBvcnRlZEVycm9yOworfQorCitWZWN0b3I8dWludDhfdD4gUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIHsgfTsKK30K
KyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1MThjMjY4NWZkYjVlODg2NTk5MDI2MDA3MGM2Y2FjODg4OTI2YmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3J5cHRvS2V5OworCitjbGFzcyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4geworcHVibGljOgor
ICAgIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IGNyZWF0ZSgpOworICAgIH5S
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOworCisgICAgdm9pZCBzZXRJc1NlbmRpbmcoYm9vbCBp
c1NlbmRpbmcpOworICAgIHZvaWQgc2V0SXNQcm9jZXNzaW5nQXVkaW8oYm9vbCBpc1Byb2Nlc3Np
bmdBdWRpbyk7CisKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRFbmNyeXB0aW9uS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1aW50NjRfdD4pOworICAgIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKTsKKworICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRpb25L
ZXkoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0aW9uS2V5OyB9CisgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBlbmNyeXB0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9lbmNyeXB0aW9u
S2V5OyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0S2V5KCkgY29uc3QgeyByZXR1
cm4gbV9zYWx0S2V5OyB9CisKKyAgICB2b2lkIHNldENvdW50ZXIodWludDY0X3QgY291bnRlcikg
eyBtX2NvdW50ZXIgPSBjb3VudGVyOyB9CisKK3ByaXZhdGU6CisgICAgUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIoKTsKKworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEZy
YW1lKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKTsKKyAgICBFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IGVuY3J5cHRGcmFtZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qg
c2l6ZSk7CisKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVTYWx0S2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4m
IHJhd0tleSk7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlRW5jcnlw
dGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSk7CisKKyAgICBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IGVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
KTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUVuY3J5cHRl
ZERhdGFTaWduYXR1cmUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5KTsKKworICAgIExvY2sgbV9rZXlMb2NrOworICAgIGJvb2wgbV9o
YXNLZXkgeyBmYWxzZSB9OworICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1dGhlbnRpY2F0aW9uS2V5
OworICAgIFZlY3Rvcjx1aW50OF90PiBtX2VuY3J5cHRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fc2FsdEtleTsKKworICAgIGJvb2wgbV9pc1NlbmRpbmcgeyBmYWxzZSB9OworICAgIHVp
bnQ2NF90IG1fYXV0aGVudGljYXRpb25TaXplIHsgMTAgfTsKKyAgICB1aW50NjRfdCBtX2tleUlk
IHsgMCB9OworICAgIHVpbnQ2NF90IG1fY291bnRlciB7IDAgfTsKK307CisKK2lubGluZSB2b2lk
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRJc1NlbmRpbmcoYm9vbCBpc1NlbmRpbmcpCit7
CisgICAgbV9pc1NlbmRpbmcgPSBpc1NlbmRpbmc7Cit9CisKK2lubGluZSB2b2lkIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyOjpzZXRJc1Byb2Nlc3NpbmdBdWRpbyhib29sIGlzUHJvY2Vzc2luZ0F1
ZGlvKQoreworICAgIG1fYXV0aGVudGljYXRpb25TaXplID0gaXNQcm9jZXNzaW5nQXVkaW8gPyA0
IDogMTA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDE3MmMxYjJmMTQwOWVhOTViODc4OGVjMDk4MmNjYTZmZGY3MGM0NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJDb2NvYS5jcHAKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5oIgorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21t
b25DcnlwdG8uaD4KKworI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQ29tbW9uQ3J5cHRvU1BJLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gZGVyaXZlSERLRlNIQTI1NkJpdHMoY29uc3QgdWludDhfdCoga2V5LCBzaXplX3Qga2V5
U2l6ZSwgY29uc3QgdWludDhfdCogc2FsdCwgc2l6ZV90IHNhbHRTaXplLCBjb25zdCB1aW50OF90
KiBpbmZvLCBzaXplX3QgaW5mb1NpemUsIHNpemVfdCBsZW5ndGgpCit7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKKyAgICBWZWN0b3I8dWludDhfdD4gaW5mb1ZlY3Rv
cjsKKworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgLy8gPHJk
YXI6Ly9wcm9ibGVtLzMyNDM5NDU1PiBDdXJyZW50bHksIHdoZW4ga2V5IGRhdGEgaXMgZW1wdHks
IENDS2V5RGVyaXZhdGlvbkhNYWMgd2lsbCBiYWlsIG91dC4KKyAgICAvLyA8cmRhcjovL3Byb2Js
ZW0vNDg4OTYwMjE+IFJlbWluZGVyOiBTd2l0Y2ggdG8gQ0NEZXJpdmVLZXkgbm93IHRoYXQgQ0NL
ZXlEZXJpdmF0aW9uSE1hYyBpcyBkZXByZWNhdGVkLgorICAgIGlmIChDQ0tleURlcml2YXRpb25I
TWFjKGtDQ0tERkFsZ29yaXRobUhLREYsIGtDQ0RpZ2VzdFNIQTI1NiwgMCwga2V5LCBrZXlTaXpl
LCAwLCAwLCBpbmZvLCBpbmZvU2l6ZSwgMCwgMCwgc2FsdCwgc2FsdFNpemUsIHJlc3VsdC5kYXRh
KCksIHJlc3VsdC5zaXplKCkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOworfQorCisvLyBGSVhNRTogUmVmYWN0b3IgY29kZSB3aXRoIFdl
YkNyeXB0bworc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVT
Q1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVy
LCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGhhY2sgb25jZSA8cmRhcjovL3Byb2JsZW0vMzEzNjEw
NTA+IGlzIGZpeGVkLgorCisgICAgLy8gY291bnRlciA9IG5vbmNlICsgY291bnRlcgorICAgIC8v
IENvbW1vbkNyeXB0byBjdXJyZW50bHkgY2FuIG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9y
IGRldGVjdCBvdmVyZmxvdyBvbmNlIHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSBy
ZXN0cmljdGVkCisgICAgLy8gYnkgdGhlIGNvdW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50
cyB0aGUgbm9uY2Ugd2hpY2ggc2hvdWxkIHN0YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlv
bi4gVG8gcmVtZWR5IHRoaXMgaXNzdWUsCisgICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBh
aGVhZCBhbmQgZGl2aWRlIHRoZSBvcGVyYXRpb24gaW50byB0d28gcGFydHMuCisgICAgc2l6ZV90
IG51bWJlck9mQmxvY2tzID0gZGF0YVNpemUgJSBrQ0NCbG9ja1NpemVBRVMxMjggPyBkYXRhU2l6
ZSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyOCArIDEgOiBkYXRhU2l6ZSAvIGtDQ0Jsb2NrU2l6ZUFFUzEy
ODsKKworICAgIC8vIERldGVjdCBsb29wCisgICAgaWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yo
c2l6ZV90KSAqIDggJiYgbnVtYmVyT2ZCbG9ja3MgPiAoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8
PCBjb3VudGVyTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVy
cm9yIH07CisKKyAgICAvLyBDYWxjdWxhdGUgY2FwYWNpdHkgYmVmb3JlIG92ZXJmbG93CisgICAg
Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyIGNvdW50ZXJCbG9ja0hl
bHBlcihjb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKKyAgICBzaXplX3QgY2FwYWNpdHkgPSBjb3Vu
dGVyQmxvY2tIZWxwZXIuY291bnRUb092ZXJmbG93U2F0dXJhdGluZygpOworCisgICAgLy8gRGl2
aWRlIGRhdGEgaW50byB0d28gcGFydHMgaWYgbmVjZXNzYXJ5LgorICAgIHNpemVfdCBoZWFkU2l6
ZSA9IGRhdGFTaXplOworICAgIGlmIChjYXBhY2l0eSA8IG51bWJlck9mQmxvY2tzKQorICAgICAg
ICBoZWFkU2l6ZSA9IGNhcGFjaXR5ICoga0NDQmxvY2tTaXplQUVTMTI4OworCisgICAgLy8gZmly
c3QgcGFydDogY29tcHV0ZSB0aGUgZmlyc3Qgbj1jYXBhY2l0eSBibG9ja3Mgb2YgZGF0YSBpZiBj
YXBhY2l0eSBpcyBpbnN1ZmZpY2llbnQuIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQuCisg
ICAgQ0NDcnlwdG9yUmVmIGNyeXB0b3I7CisgICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IEND
Q3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGht
QUVTMTI4LCBjY05vUGFkZGluZywgY291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXpl
KCksIDAsIDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKKyAgICBpZiAoc3Rh
dHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAg
IFZlY3Rvcjx1aW50OF90PiBoZWFkKENDQ3J5cHRvckdldE91dHB1dExlbmd0aChjcnlwdG9yLCBo
ZWFkU2l6ZSwgdHJ1ZSkpOworCisgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMg
PSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YSwgaGVhZFNpemUsIGhlYWQuZGF0YSgpLCBo
ZWFkLnNpemUoKSwgJmJ5dGVzV3JpdHRlbik7CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICB1aW50OF90KiBwID0gaGVh
ZC5kYXRhKCkgKyBieXRlc1dyaXR0ZW47CisgICAgc3RhdHVzID0gQ0NDcnlwdG9yRmluYWwoY3J5
cHRvciwgcCwgaGVhZC5lbmQoKSAtIHAsICZieXRlc1dyaXR0ZW4pOworICAgIHAgKz0gYnl0ZXNX
cml0dGVuOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OworCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihwIDw9IGhlYWQuZW5kKCkpOworICAgIGhlYWQuc2hyaW5rKHAgLSBoZWFkLmJlZ2luKCkp
OworCisgICAgQ0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKKworICAgIGlmIChjYXBhY2l0eSA+
PSBudW1iZXJPZkJsb2NrcykKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7CisKKyAgICAv
LyBzZWNvbmQgcGFydDogY29tcHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEgYW5kIGFwcGVuZCB0aGVt
IHRvIHRoZSBoZWFkLgorICAgIC8vIHJlc2V0IGNvdW50ZXIKKyAgICBWZWN0b3I8dWludDhfdD4g
cmVtYWluaW5nQ291bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVjdG9yQWZ0ZXJP
dmVyZmxvdygpOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlv
biwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgcmVtYWluaW5n
Q291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtDQ01vZGVP
cHRpb25DVFJfQkUsICZjcnlwdG9yKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHNpemVfdCB0YWlsU2l6ZSA9IGRh
dGFTaXplIC0gaGVhZFNpemU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRhaWwoQ0NDcnlwdG9yR2V0
T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIHRhaWxTaXplLCB0cnVlKSk7CisKKyAgICBzdGF0dXMgPSBD
Q0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5k
YXRhKCksIHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBpZiAoc3RhdHVzKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHAgPSB0YWls
LmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlw
dG9yLCBwLCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7CisgICAgcCArPSBieXRlc1dy
aXR0ZW47CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yIH07CisKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKHAgPD0gdGFpbC5lbmQoKSk7CisgICAgdGFpbC5zaHJpbmsocCAtIHRhaWwuYmVnaW4oKSk7
CisKKyAgICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOworCisgICAgaGVhZC5hcHBlbmRWZWN0
b3IodGFpbCk7CisgICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7Cit9CisKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQoreworICAgIHVpbnQ4IHVzYWdlW10gPSAiU0Zy
YW1lU2FsdEtleSI7CisgICAgcmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKHJhd0tleS5kYXRh
KCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJhd0tleS5zaXplKCkgLSAxNiwgdXNhZ2UsIHNp
emVvZih1c2FnZSkgLSAxLCAxMjgpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCit7CisgICAgdWludDggdXNhZ2VbXSA9ICJTRnJhbWVB
dXRoZW50aWNhdGlvbktleSI7CisgICAgcmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKHJhd0tl
eS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJhd0tleS5zaXplKCkgLSAxNiwgdXNh
Z2UsIHNpemVvZih1c2FnZSkgLSAxLCAyNTYpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGlvbktleShjb25z
dCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sKKyAgICB1aW50OCB1c2FnZVtdID0gIlNGcmFt
ZUVuY3J5cHRpb25LZXkiOworICAgIHJldHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXku
ZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEoKSArIDE2LCByYXdLZXkuc2l6ZSgpIC0gMTYsIHVzYWdl
LCBzaXplb2YodXNhZ2UpIC0gMSwgMTI4KTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5KQoreworICAgIHJldHVybiB0cmFuc2Zvcm1BRVNDVFIoa0NDRGVjcnlw
dCwgaXYsIGl2LnNpemUoKSwga2V5LCBkYXRhLCBzaXplKTsKK30KKworRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KQoreworICAgIHJldHVybiB0cmFuc2Zvcm1BRVNDVFIo
a0NDRW5jcnlwdCwgaXYsIGl2LnNpemUoKSwga2V5LCBkYXRhLCBzaXplKTsKK30KKworVmVjdG9y
PHVpbnQ4X3Q+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNp
Z25hdHVyZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ19TSEEyNTZfRElH
RVNUX0xFTkdUSCk7CisgICAgQ0NIbWFjKGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtl
eS5zaXplKCksIGRhdGEsIHNpemUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCA2NGE1ZDVkNGQ0NzA2NDY5M2MwNWZmODcyMWVjNWUzN2IwNTM5
NTY1Li4xMGQwOWYyNzRhZjU5YWUxOGIwYjgxNTAwNzgxZTVmYzQwNDVhOGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMTYzLDYgKzE2Myw4IEBAIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlVHJhbnNw
b3J0LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBUcmFuc2NlaXZlci5jcHAKQEAgLTMzMTksNiArMzMyMSw3IEBAIEpTUlRDUnRwSGVhZGVyRXh0
ZW5zaW9uUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiBKU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCitKU1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5jcHAKIEpTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNlbmRlci5jcHAK
IEpTUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggMmFkMzNhOTU1MTkyZDkwNzZlYjNkOGMxNjJjZmUzODYyMmRmYjE4Yy4uYzVkMzk5OTI0
Y2I3YzgwMjI5NmIwNDUxOWI4YjIxM2E1ZjdkYjQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC04OSw2ICs4OSw3IEBAIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJ
dGVtc0NvY29hLm1tCiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ckNvY29hLmNwcAogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1t
CiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAogTW9kdWxlcy93
ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM5OGQxNmE5MWI4
YzFjZDA0ZjcwYWRjZWU2ZmRkZmVhNGQ5MTRkMDMuLmQ2ZDg3YzliNWRmOWIzOTI3OGUzZjIxMmMz
YzMyMGFjMjJjZDBhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDksNiArMTEwOSw4IEBACiAJCTQxODFDNUQ2MjU1NUMx
QjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVENTI1NTVDMUI5MDBBRUIwRkYgLyogTW9j
a1JUQ1J0cFRyYW5zZm9ybS5oICovOyB9OwogCQk0MTgxQzVENzI1NTVDNDlBMDBBRUIwRkYgLyog
TW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTgxQzVEMzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5z
Zm9ybS5jcHAgKi87IH07CiAJCTQxODFDNjM5MjU1QUU5MEYwMEFFQjBGRiAvKiBKU01vY2tSVENS
dHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQ2RjNFOTIxQzFGODU1NTAwNjFEQkU0IC8qIEpTTW9ja1JUQ1J0cFRyYW5zZm9ybS5j
cHAgKi87IH07CisJCTQxODFDNjQ4MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi87
IH07CisJCTQxODFDNjRBMjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0
MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4
MjA1NDcxRTUzRTk4QzAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAv
KiBSVENDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNDE4MjZCRjIyM0ZCNTk3NzAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjZC
RjEyM0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODRGNTE2MUVBRjA1QTgwMEYx
OEJGMCAvKiBPcmllbnRhdGlvbk5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRp
b25Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03NzAyLDYgKzc3MDQsMTIgQEAKIAkJNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8q
IE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxODFDNUQ1MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM2MzYyNTVBRTI2MTAwQUVCMEZGIC8qIE1v
Y2tSVENSdHBUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTgxQzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDEyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAv
KiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFD
NjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQ1MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTgyMDU0ODFFNTNFQUFEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjZCRjEyM0ZCNTk3MDAwQjkyMkIxIC8q
IERvY3VtZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
b2N1bWVudElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDgy
LDYgKzE3MDkwLDEyIEBACiAJCQkJNDFGQ0I3NjAyMTQ4NjcwMDAwMzhBREM2IC8qIFJUQ1J0cFJ0
eFBhcmFtZXRlcnMuaCAqLywKIAkJCQk0MUZDQjc1ODIxNDg2NUQyMDAzOEFEQzYgLyogUlRDUnRw
UnR4UGFyYW1ldGVycy5pZGwgKi8sCiAJCQkJNDEzQzhCMjYyNTUyRUVBOTAwRTY1MDU1IC8qIFJU
Q1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsICovLAorCQkJCTQxODFDNjQ1MjU1QjRDMjgwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwICovLAorCQkJCTQxODFDNjQ0MjU1QjRDMjcw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLywKKwkJCQk0MTgxQzY0MzI1NUI0
QzI3MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbCAqLywKKwkJCQk0MTgxQzY0
MTI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwICovLAorCQkJ
CTQxODFDNjQyMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICov
LAorCQkJCTQxODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ckNvY29hLmNwcCAqLywKIAkJCQk1RTJDNDM1OTFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2Vu
ZGVyLmNwcCAqLywKIAkJCQk1RTJDNDM1QTFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVy
LmggKi8sCiAJCQkJNUUyQzQzNUIxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlci5pZGwg
Ki8sCkBAIC0zMjkwNyw2ICszMjkyMSw3IEBACiAJCQkJQ0VEMDZBRDExQzc3NzU0ODAwRkRGQUYx
IC8qIEpTU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE4MkMyNTYxRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZFQjM3Q0ExRjk3Q0NEMjAwQjY1NTIzIC8qIEpTU2VydmljZVdvcmtlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4MUM2NDgyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVCMzdDQzFGOTdDQ0Qy
MDBCNjU1MjMgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE4MkMyNTgxRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE4MkMyNUExRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmggaW4gSGVhZGVycyAqLywKQEAgLTM0OTA2LDYgKzM0OTIxLDcgQEAK
IAkJCQk1NzE1MkI4MDIxRERBNTgxMDAwQzM3Q0EgLyogV2ViQXV0aGVudGljYXRpb25VdGlscy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RCNjM1NDkyM0Y2MDIzQTAwQzBGOURFIC8qIFdlYkFWUGxh
eWVyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzNkVBOUMxRTIxQkExNzAwNjIx
RTI1IC8qIFdlYkJhY2tncm91bmRUYXNrQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDE4MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVCODFDQjUxRkFBNDQ2MjAwMzdEMUU2IC8qIFdlYkNvbnNvbGVBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJCQTJDQUIxRjY3OUUwQzAwRkQxQzFFIC8qIFdlYkNv
bnRlbnRSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUJFNzU5MUJDN0Y0MkIwMEUxQzg1
QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCA1YWU3MzRkOTA5
MGMwZDBmNzU0NGQxNGY2Y2JiZDMxMzEzNGYxMmI4Li4xNGQ2ZGY0NzIxODIxY2U1OTEyZjE1OGVj
NDEwMDMyOWYzNmJlMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMTksNiArMjE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9uKSBcCiAgICAgbWFjcm8oUlRDUGVlckNvbm5l
Y3Rpb25JY2VFdmVudCkgXAogICAgIG1hY3JvKFJUQ1J0cFJlY2VpdmVyKSBcCisgICAgbWFjcm8o
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKSBcCiAgICAgbWFjcm8oUlRDUnRwU2VuZGVyKSBcCiAgICAg
bWFjcm8oUlRDUnRwVHJhbnNjZWl2ZXIpIFwKICAgICBtYWNybyhSVENSdHBUcmFuc2Zvcm0pIFwK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzODVh
MWJlYWMxYjhiNDZjZmViNmM2MmI4NDA3NmVlOTc4ZDI3YWRkLi4zNWY5MjVlNjg4MjIyYTlkMWNh
ODNmZjdlZjg0M2NkM2Q1MjdlMDhkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTEtMTEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYlJUQyBTRnJhbWUgdHJh
bnNmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTg3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm1lclRlc3RzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRSYXdLZXkp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVmlkZW9UcmFuc2Zvcm1lcik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1ZlY3RvcnNBcmVFcXVhbCk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0xMS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY5NTI1KTogTWFueSBsYXlv
dXQgdGVzdHMgY3Jhc2ggd2hlbiBydW4gdW5kZXIgQVNhbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAxMmM4MDEwY2VmYWMzNWYwNmU4YzNiY2I0NzgzY2Q5MzcxNDk1ZjcyLi5mMWVlYTYwYTNi
NDkzZjk5YzJkMmRmNjliYTk4M2ZiMWM2MTYyMGJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjM2LDYgKzIzNiw3IEBACiAJCTQxMzVGQjg1MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJD
b3JlVGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RT
dXBwb3J0LmR5bGliICovOyB9OwogCQk0MTRBRDY4NjIyODVEMUMwMDA3NzdGMkQgLyogU3RvcmFn
ZVF1b3RhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLzsgfTsKIAkJNDE2
NjFDNjYyMzU1RTg1RTAwRDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJhdWRpby5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjYxQzY1
MjM1NUQ5OEIwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAqLzsgfTsKKwkJ
NDE4MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2
MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICov
OyB9OwogCQk0MTg0OEY0NDI0ODkxODc5MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxl
LXVybC13aXRoLWhvc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ct
d2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCAqLzsgfTsKIAkJNDE4ODJGMDMyMTAxMEMwRDAw
MkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQ
cmVXYXJtaW5nLm1tICovOyB9OwogCQk0NDA3N0JCMTIzMTQ0QjUwMDAxNzlFMkQgLyogRGF0YURl
dGVjdG9yc1Rlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NDA3N0JCMDIzMTQ0OUQyMDAxNzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1Mu
bW0gKi87IH07CkBAIC0xOTU1LDYgKzE5NTYsNyBAQAogCQk0MTM1RkI4NjIwMTFGQUJGMDAzMzIx
MzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9
IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3JhZ2VRdW90YS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE2NjFDNjUyMzU1RDk4QjAwRDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJh
dWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImdldFVzZXJNZWRpYS13ZWJh
dWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2MkMyNTVBODkx
MTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODQ4RjQzMjQ4OTE4MTUwMDBFMjU4
OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gIm9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYy
ODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUxNyw2ICszNTE5LDcgQEAKIAkJCQlDRDIyNUMwNzFD
NDVBNjkyMDAxNDA3NjEgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCAqLywKIAkJCQlBQTk2Q0FC
NDIxQzdEQjQyMDBGRDJGOTcgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLAogCQkJCTA0MUEx
RTMzMjE2RkZEQkMwMDc4OUUwQSAvKiBQdWJsaWNTdWZmaXguY3BwICovLAorCQkJCTQxODFDNjJD
MjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLywK
IAkJCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwICov
LAogCQkJCUY0MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCAq
LywKIAkJCQlDRENGQTdBOTFFNDUxMjJGMDBDMjQzM0QgLyogU2FtcGxlTWFwLmNwcCAqLywKQEAg
LTU1NzEsNiArNTU3NCw3IEBACiAJCQkJRjQzRTNCQkYyMERBREExRTAwQTRFN0VEIC8qIFdLU2Ny
b2xsVmlld1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDYyOEM4RTkyMzY3QUJEMTAwQjA3
M0YwIC8qIFdLU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjIx
QTQxMUFFNjAwNDQ3QzRDIC8qIFdLU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxODFD
NjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjFFMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS1N0cmluZ0pT
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENENGOEJEMUQ4MzYwQ0MwMDAxQ0U4RCAv
KiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUM2ODNERTFFQTEzNEU4
MDA2NTAxODMgLyogV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lclRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzIwNDBlYTMzY2U4OGRk
N2JiYzc2MTBiM2E5ZTRlMWFlNDBmNjZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwCkBA
IC0wLDAgKzEsMzUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlIDxXZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg+CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVmVjdG9yPHVpbnQ4X3Q+IGdldFJhd0tleSgpCit7CisgICAg
cmV0dXJuIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjQ5LAorICAgICAgICAxOTUs
CisgICAgICAgIDIwMiwKKyAgICAgICAgMTU5LAorICAgICAgICA1NiwKKyAgICAgICAgMTkxLAor
ICAgICAgICAxMDMsCisgICAgICAgIDI0NywKKyAgICAgICAgMjQ1LAorICAgICAgICAyMTMsCisg
ICAgICAgIDIwLAorICAgICAgICA2OCwKKyAgICAgICAgNjcsCisgICAgICAgIDIwLAorICAgICAg
ICAxNTEsCisgICAgICAgIDE4NSwKKyAgICAgICAgMjQyLAorICAgICAgICA3OCwKKyAgICAgICAg
MTc2LAorICAgICAgICAxNTgsCisgICAgICAgIDkxLAorICAgICAgICAyMDUsCisgICAgICAgIDEz
OCwKKyAgICAgICAgNTUsCisgICAgICAgIDE3NiwKKyAgICAgICAgMTQ3LAorICAgICAgICAxOTgs
CisgICAgICAgIDI0MywKKyAgICAgICAgMTQ2LAorICAgICAgICAyMDQsCisgICAgICAgIDI0MywK
KyAgICAgICAgMjIwCisgICAgKTsKK30KKworc3RhdGljIFJlZjxXZWJDb3JlOjpSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcj4gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihib29sIGlzU2VuZGluZyA9IHRy
dWUpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpjcmVhdGUoKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKGlzU2VuZGlu
Zyk7CisgICAgdHJhbnNmb3JtZXItPnNldElzUHJvY2Vzc2luZ0F1ZGlvKGZhbHNlKTsKKworICAg
IGF1dG8ga2V5SWQgPSBWZWN0b3I8dWludDhfdD46OmZyb20oMTk4LCAzMSwgMjUxLCAxOTcsIDQ4
LCAxMzksIDkxLCA1MSk7CisgICAgdWludDY0X3Qga2V5SWRWYWx1ZSA9IDA7CisgICAgZm9yIChh
dXRvIHZhbHVlIDoga2V5SWQpCisgICAgICAgIGtleUlkVmFsdWUgPSB2YWx1ZSArIChrZXlJZFZh
bHVlIDw8IDgpOworCisgICAgYXV0byBrZXlSZXN1bHQgPSB0cmFuc2Zvcm1lci0+c2V0RW5jcnlw
dGlvbktleShnZXRSYXdLZXkoKSwga2V5SWRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGtleVJl
c3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZXI7Cit9CisKK3N0
YXRpYyB2b2lkIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY29t
cHV0ZWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwZWN0ZWQpCit7CisgICAgRVhQRUNUX0VR
KGNvbXB1dGVkLnNpemUoKSwgZXhwZWN0ZWQuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBjcHRy
ID0gMDsgY3B0ciA8IHN0ZDo6bWluKGNvbXB1dGVkLnNpemUoKSwgZXhwZWN0ZWQuc2l6ZSgpKTsg
KytjcHRyKQorICAgICAgICBFWFBFQ1RfRVEoY29tcHV0ZWRbY3B0cl0sIGV4cGVjdGVkW2NwdHJd
KTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgQXV0aGVudGljYXRpb25LZXkp
Cit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAg
ICBjaGVja1ZlY3RvcnNBcmVFcXVhbCh0cmFuc2Zvcm1lci0+YXV0aGVudGljYXRpb25LZXkoKSwg
VmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICA5MiwKKyAgICAgICAgMjI4LAorICAgICAg
ICAxMzksCisgICAgICAgIDE5NSwKKyAgICAgICAgOTgsCisgICAgICAgIDE2LAorICAgICAgICA0
LAorICAgICAgICAxOTMsCisgICAgICAgIDIyMSwKKyAgICAgICAgMjQ4LAorICAgICAgICAyMzIs
CisgICAgICAgIDE3OCwKKyAgICAgICAgMTM1LAorICAgICAgICAyMiwKKyAgICAgICAgMTQxLAor
ICAgICAgICAxNTAsCisgICAgICAgIDE2NSwKKyAgICAgICAgMjQyLAorICAgICAgICA3MywKKyAg
ICAgICAgNzIsCisgICAgICAgIDEwLAorICAgICAgICAxOTcsCisgICAgICAgIDE1LAorICAgICAg
ICA4NywKKyAgICAgICAgMTgxLAorICAgICAgICAzNCwKKyAgICAgICAgMTIwLAorICAgICAgICA3
MSwKKyAgICAgICAgNDIsCisgICAgICAgIDE3NCwKKyAgICAgICAgMTMxLAorICAgICAgICA3Mgor
ICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0aW9uS2V5
KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7Cisg
ICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwodHJhbnNmb3JtZXItPmVuY3J5cHRpb25LZXkoKSwgVmVj
dG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAyMDcsCisgICAgICAgIDI1MSwKKyAgICAgICAg
NTIsCisgICAgICAgIDIxLAorICAgICAgICAxMDEsCisgICAgICAgIDUwLAorICAgICAgICAyMzIs
CisgICAgICAgIDQ4LAorICAgICAgICAyMTEsCisgICAgICAgIDExNSwKKyAgICAgICAgMTEsCisg
ICAgICAgIDE1NSwKKyAgICAgICAgMTAxLAorICAgICAgICAxMTYsCisgICAgICAgIDE1MywKKyAg
ICAgICAgNzEKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgU2Fs
dEtleSkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigp
OworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHRyYW5zZm9ybWVyLT5zYWx0S2V5KCksIFZlY3Rv
cjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjI5LAorICAgICAgICAxOSwKKyAgICAgICAgNDIs
CisgICAgICAgIDkzLAorICAgICAgICAxNjQsCisgICAgICAgIDEwMywKKyAgICAgICAgMTIwLAor
ICAgICAgICA1MywKKyAgICAgICAgMjUsCisgICAgICAgIDI2LAorICAgICAgICAyMzcsCisgICAg
ICAgIDIwNCwKKyAgICAgICAgNzksCisgICAgICAgIDEzOCwKKyAgICAgICAgMTM4LAorICAgICAg
ICAyMzEKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlw
dERlY3J5cHQpCit7CisgICAgYXV0byBlbmNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVy
KCk7CisgICAgYXV0byBkZWNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKGZhbHNlKTsK
KyAgICBhdXRvIGZyYW1lID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKDEzNSwgODksIDUxLCAxNjYs
IDI0OCwgMTI5LCAxNTcsIDExMSwgMTkwLCAxMzQsIDIyMCk7CisKKyAgICBhdXRvIGVuY3J5cHRl
ZFJlc3VsdCA9IGVuY3J5cHRvci0+dHJhbnNmb3JtKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoZW5jcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKwor
ICAgIGF1dG8gZW5jcnlwdGVkID0gZW5jcnlwdGVkUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OworICAgIGF1dG8gZGVjcnlwdGVkUmVzdWx0ID0gZGVjcnlwdG9yLT50cmFuc2Zvcm0oZW5jcnlw
dGVkLmRhdGEoKSwgZW5jcnlwdGVkLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGRlY3J5cHRl
ZFJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChkZWNy
eXB0ZWRSZXN1bHQucmV0dXJuVmFsdWUoKSwgZnJhbWUpOworfQorCitURVNUKFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLCBFbmNyeXB0RGVjcnlwdEtleUlEMCkKK3sKKyAgICBhdXRvIGVuY3J5cHRv
ciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBlbmNyeXB0b3ItPnNldEVuY3J5cHRp
b25LZXkoZ2V0UmF3S2V5KCksIDApOworCisgICAgYXV0byBkZWNyeXB0b3IgPSBjcmVhdGVWaWRl
b1RyYW5zZm9ybWVyKGZhbHNlKTsKKyAgICBkZWNyeXB0b3ItPnNldEVuY3J5cHRpb25LZXkoZ2V0
UmF3S2V5KCksIDApOworCisgICAgYXV0byBmcmFtZSA9IFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgx
MzUsIDg5LCA1MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjApOworCisg
ICAgYXV0byBlbmNyeXB0ZWRSZXN1bHQgPSBlbmNyeXB0b3ItPnRyYW5zZm9ybShmcmFtZS5kYXRh
KCksIGZyYW1lLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGVuY3J5cHRlZFJlc3VsdC5oYXNF
eGNlcHRpb24oKSk7CisKKyAgICBhdXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRlZFJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5cHRvci0+
dHJhbnNmb3JtKGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOworICAgIEVYUEVD
VF9GQUxTRShkZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hlY2tWZWN0
b3JzQXJlRXF1YWwoZGVjcnlwdGVkUmVzdWx0LnJldHVyblZhbHVlKCksIGZyYW1lKTsKK30KKwor
VEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjApCit7CisgICAg
YXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKworICAgIHVpbnQ4
X3QgZnJhbWUxW10gPSB7IDEzNSwgODksIDUxLCAxNjYsIDI0OCwgMTI5LCAxNTcsIDExMSwgMTkw
LCAxMzQsIDIyMCB9OworICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShm
cmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKTsKKworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAxNSwKKyAgICAgICAgMTk4
LAorICAgICAgICAzMSwKKyAgICAgICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAgIDQ4LAor
ICAgICAgICAxMzksCisgICAgICAgIDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMCwKKyAgICAg
ICAgMjU0LAorICAgICAgICAxNzEsCisgICAgICAgIDE2OCwKKyAgICAgICAgMTI3LAorICAgICAg
ICAxNTgsCisgICAgICAgIDk3LAorICAgICAgICA3MCwKKyAgICAgICAgNCwKKyAgICAgICAgMjMz
LAorICAgICAgICAxNTYsCisgICAgICAgIDEzNCwKKyAgICAgICAgMjIwLAorICAgICAgICA0NCwK
KyAgICAgICAgNTAsCisgICAgICAgIDkwLAorICAgICAgICAzLAorICAgICAgICA2OCwKKyAgICAg
ICAgMjAwLAorICAgICAgICAxMjcsCisgICAgICAgIDIyMywKKyAgICAgICAgNgorICAgICkpOwor
fQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1Db3VudGVyMjU2KQor
eworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisKKyAg
ICB1aW50OF90IGZyYW1lMVtdID0geyA4LCAxNjQsIDE4OSwgMTgsIDYxLCAxMTcsIDEzMiwgNDMs
IDExNywgMTY5LCA0MiB9OworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gcmVzdWx0ID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CisgICAgcmVzdWx0ID0gdHJhbnNmb3JtZXIt
PnRyYW5zZm9ybShmcmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICBmb3IgKHNpemVfdCBjcHRy
ID0gMDsgY3B0ciA8IDI1NjsgKytjcHRyKSB7CisgICAgICAgIHJlc3VsdCA9IHRyYW5zZm9ybWVy
LT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIH0KKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVh
bChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAg
ICAgICAgMzEsCisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAg
ICAgMTk3LAorICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAg
NTEsCisgICAgICAgIDEsCisgICAgICAgIDAsCisgICAgICAgIDEyNCwKKyAgICAgICAgMjE4LAor
ICAgICAgICA2MSwKKyAgICAgICAgMjMsCisgICAgICAgIDc4LAorICAgICAgICAxNSwKKyAgICAg
ICAgMTkwLAorICAgICAgICAzNSwKKyAgICAgICAgMjU1LAorICAgICAgICAyNTMsCisgICAgICAg
IDEyMCwKKyAgICAgICAgNjQsCisgICAgICAgIDI4LAorICAgICAgICAxODMsCisgICAgICAgIDE3
MiwKKyAgICAgICAgMTU0LAorICAgICAgICAxNDQsCisgICAgICAgIDE2LAorICAgICAgICAyMjks
CisgICAgICAgIDg3LAorICAgICAgICA1MgorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1Db3VudGVyNjU1MzYpCit7CisgICAgYXV0byB0cmFuc2Zv
cm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0Q291
bnRlcig2NTUzNik7CisKKyAgICB1aW50OF90IGZyYW1lMVtdID0geyAwLCAzMywgMjQ0LCAyNCwg
MjM2LCAxNTYsIDEyNywgOCwgNDgsIDg4LCAyMjAgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHRyYW5z
Zm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgRVhQRUNUX0ZB
TFNFKHJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAg
ICAgNDcsCisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAgICAg
MTk3LAorICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAgNTEs
CisgICAgICAgIDEsCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIDk4LAorICAgICAg
ICAyMTIsCisgICAgICAgIDEzNywKKyAgICAgICAgMjQ0LAorICAgICAgICAyMDksCisgICAgICAg
IDE2LAorICAgICAgICA4OSwKKyAgICAgICAgMjM0LAorICAgICAgICAyMSwKKyAgICAgICAgMTcx
LAorICAgICAgICAxNSwKKyAgICAgICAgMTA3LAorICAgICAgICA1MCwKKyAgICAgICAgMTQ1LAor
ICAgICAgICA3MywKKyAgICAgICAgMTA3LAorICAgICAgICAxNjUsCisgICAgICAgIDQ1LAorICAg
ICAgICAxOTAsCisgICAgICAgIDI1LAorICAgICAgICA4MgorICAgICkpOworfQorCit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYTUzYzYyZjdjZGQyNThhYmRiOWEwMzkxMzc3NTFlZWI2NDg4OGVlYS4uMWJlNGVmYTU5M2E3
OWZjNWI5NzdhZjcyOGQ4OTgyYWFjNDZhNGZiNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIw
LTExLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YSBXZWJSVEMgU0ZyYW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWJydGMvdmlkZW8tc2ZyYW1lLmh0bWw6IEFkZGVkLgorCiAy
MDIwLTExLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIFdlYlJUQyB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJydGMvdmlkZW8tc2ZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvdmlk
ZW8tc2ZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc0MGVlNzA0MWE2MzkzNGYzM2EzMzkwMTRmNjU5
OTQ2NmYxMGFhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1z
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDQyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDx0aXRsZT5U
ZXN0aW5nIGJhc2ljIHZpZGVvIGV4Y2hhbmdlIGZyb20gb2ZmZXJlciB0byByZWNlaXZlcjwvdGl0
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRl
byBpZD0idmlkZW8iIGF1dG9wbGF5PSIiPjwvdmlkZW8+CisgICAgICAgIDxjYW52YXMgaWQ9ImNh
bnZhcyIgd2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiPjwvY2FudmFzPgorICAgICAgICA8c2NyaXB0
IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK3ZhciBwYzEs
IHBjMjsKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGxvY2FsU3Ry
ZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0
cnVlfSk7CisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJh
dyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYs
IDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZl
Qml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmly
c3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Cisg
ICAgICAgICAgICBjb25zdCBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAgbGV0
IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm07CisgICAgICAgICAgICB0cmFu
c2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9y
bSA9IHRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAgICAg
ICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0
aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB0cmFu
c2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7CisgICAgICAgICAgICAgICAgdHJhY2tFdmVudC5y
ZWNlaXZlci50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0
cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAg
ICB9KTsKKworICAgIHZpZGVvLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2aWRlby5w
bGF5KCk7Cit9LCAiQmFzaWMgdmlkZW8gZXhjaGFuZ2UiKTsKKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414016</attachid>
            <date>2020-11-13 02:07:22 -0800</date>
            <delta_ts>2020-11-13 02:29:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218752-20201113110720.patch</filename>
            <type>text/plain</type>
            <size>78548</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uNDFlYzc3ZDUyMWJhNTY0YTczMjc3MjMzOWUwMjA2
NTY0ZWM2Y2UzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRoYXQgaW1wbGVtZW50cyB0
aGUgU0ZyYW1lIGZvcm1hdC4KKyAgICAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGlzIGEgUlRD
UnRwVHJhbnNmb3JtIHRoYXQgY2FuIGJlIHNldCB0byBSVENSdHAgc2VuZGVyIGFuZCByZWNlaXZl
ciBvYmplY3RzLgorICAgICAgICBBUEkgc3VwcG9ydHMgc2V0dGluZyBlbmNyeXB0aW9uIGtleS4K
KyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gcmV1c2UgV2ViQ3J5cHRvIHJvdXRpbmVzIGZv
ciBlbmNyeXB0aW9uL2RlY3J5cHRpb24uCisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxl
bmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlWKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1
dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5
cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRl
Y3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUpOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcml2
ZUhES0ZTSEEyNTZCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNjY5YjY4NjFi
NmFmYTFkMGFjMDk3YjFiZDMxMDY0NDgzZWVjNzUxOS4uMzk2NWU2Y2QwNWQ0MmYzNjUwYjI1N2Uz
OTc3NDk1NGYyMDViODA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC0yMzYsNiArMjM2LDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBQYXJhbWV0ZXJzLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSdHhQYXJhbWV0ZXJzLmlkbAorJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4
IGRiNjcxMDA4OGVmMjQ1NDQ4MzAyNWUwMWU0YWE3Y2U1ZGZlYzMwNGMuLjI2ZDNjMTRhMmE2OGI4
OTE2NjllYjBkNTYwMjdjZTRmNWNlNzNjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzA1LDYgKzE3MDUsOCBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBS
ZWNlaXZlci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5kUGFyYW1ldGVycy5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0u
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5YWU0MGMxODc5Njg5MzgxN2I4
NDE2NTI3YzI0MGFmNzIzZThmMTE2Li5hNWZiNDViODBmYjAxZmQ5OTBiNDVmNjZjNzViMmRhYzU3
OWY3Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI2Myw2ICsyNjMsNyBA
QCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kUGFyYW1ldGVycy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyRGly
ZWN0aW9uLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIzMGVmZGUy
MjE5M2QwMDI0MjEzNDFiYWRmNTM3ODkxNWI2ODQxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApA
QCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3Lmgi
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm0o
KQorICAgIDogbV90cmFuc2Zvcm1lcihSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCkp
Cit7Cit9CisKK1JUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgp
Cit7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KENy
eXB0b0tleSYga2V5LCBPcHRpb25hbDx1aW50NjRfdD4ga2V5SWQsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgYXV0byBhbGdvcml0aG0gPSBrZXkuYWxnb3JpdGht
KCk7CisgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENyeXB0b0tleUFsZ29yaXRobT4o
YWxnb3JpdGhtKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChXVEY6OmdldDxDcnlwdG9LZXlBbGdvcml0aG0+KGFsZ29yaXRobSkubmFtZSAhPSAiSEtERiIp
IHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiSW52YWxp
ZCBrZXkiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvJiByYXdLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGtleSk7CisgICAgcHJvbWlzZS5zZXR0bGUobV90cmFu
c2Zvcm1lci0+c2V0RW5jcnlwdGlvbktleShyYXdLZXkua2V5KCksIGtleUlkKSk7Cit9CisKK3Vp
bnQ2NF90IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6Y291bnRlckZvclRlc3RpbmcoKSBjb25zdAor
eworICAgIHJldHVybiBtX3RyYW5zZm9ybWVyLT5jb3VudGVyKCk7Cit9CisKK3ZvaWQgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZCYgYmFja2VuZCwgU2lkZSBzaWRlKQoreworICAgIG1fdHJhbnNmb3JtZXItPnNldElzU2Vu
ZGluZyhzaWRlID09IFNpZGU6OlNlbmRlcik7CisgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNQcm9j
ZXNzaW5nQXVkaW8oYmFja2VuZC5tZWRpYVR5cGUoKSA9PSBSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
OjpNZWRpYVR5cGU6OkF1ZGlvKTsKKworICAgIGJhY2tlbmQuc2V0VHJhbnNmb3JtYWJsZUZyYW1l
Q2FsbGJhY2soW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgYmFja2VuZCA9IG1ha2VSZWYo
YmFja2VuZCldKGF1dG8mJiBmcmFtZSkgeworICAgICAgICBhdXRvIGNodW5rID0gZnJhbWUuZGF0
YSgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oY2h1bmsu
ZGF0YSwgY2h1bmsuc2l6ZSk7CisKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtIGZhaWxlZCB0cmFuc2Zvcm1pbmcgYSBmcmFtZSIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgZnJhbWUuc2V0RGF0YSh7IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgpIH0pOworCisgICAgICAgIGJh
Y2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1vdmUoZnJhbWUpKTsKKyAgICB9KTsK
K30KKworCit2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JS
ZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxp
emVUcmFuc2Zvcm1lcihiYWNrZW5kLCBTaWRlOjpSZWNlaXZlcik7Cit9CisKK3ZvaWQgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxpemVUcmFuc2Zvcm1lcihiYWNrZW5k
LCBTaWRlOjpTZW5kZXIpOworfQorCit2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6d2lsbENs
ZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGJhY2tl
bmQuY2xlYXJUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE1ODE5MGE5MDk2NjBjZjA0MGQwNjdlMzZhYTU3ZmZiY2E2MTRiYWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJf
UlRDKQorCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJSVENS
dHBUcmFuc2Zvcm0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9LZXk7
CitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjsKKworY2xhc3MgUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtIGZpbmFsIDogcHVibGljIFJUQ1J0cFRyYW5zZm9ybSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKTsgfQorICAgIH5SVENSdHBTRnJhbWVUcmFuc2Zv
cm0oKTsKKworICAgIHZvaWQgc2V0RW5jcnlwdGlvbktleShDcnlwdG9LZXkmLCBPcHRpb25hbDx1
aW50NjRfdD4sIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHVpbnQ2NF90IGNvdW50ZXJGb3JUZXN0aW5nKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9y
UmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOworICAgIHZvaWQgaW5pdGlh
bGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOworICAg
IHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisK
KyAgICBlbnVtIGNsYXNzIFNpZGUgeyBTZW5kZXIsIFJlY2VpdmVyIH07CisgICAgdm9pZCBpbml0
aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYsIFNpZGUpOworCisgICAg
UmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBtX3RyYW5zZm9ybWVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdiNzY5OGJkOGM2ZDRiMjJjZWM2MDlhODdjYTcxYWIw
YWU0Yjk0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbApAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFs
PVdFQl9SVEMsCisgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywK
KyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAg
ICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCitdIGludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0gOiBSVENSdHBUcmFuc2Zvcm0geworICAgIGNvbnN0cnVjdG9yKCk7CisKKyAgICBQcm9t
aXNlPHVuZGVmaW5lZD4gc2V0RW5jcnlwdGlvbktleShDcnlwdG9LZXkga2V5LCBvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGxvbmcga2V5SUQpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
bWlzc2luZyBtZXRob2RzLgorICAgIC8vIFByb21pc2U8dW5kZWZpbmVkPiByYXRjaGV0RW5jcnlw
dGlvbktleSgpOworICAgIC8vIFByb21pc2U8dW5kZWZpbmVkPiBzZXRTaWduaW5nS2V5KENyeXB0
b0tleSBrZXkpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBk
ODkxZjM0Njc2NjNjZmFjODhiZjIxOWUwNmRhMjk3NmNiNDZjYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIuY3BwCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgaW5saW5lIHZvaWQgd3JpdGVVSW50NjQodWludDhfdCogZGF0YSwgdWlu
dDY0X3QgdmFsdWUsIHVpbnQ4X3QgdmFsdWVMZW5ndGgpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHZhbHVlTGVuZ3RoOyArK2kpCisgICAgICAgICpkYXRhKysgPSAodmFsdWUgPj4g
KCh2YWx1ZUxlbmd0aCAtIDEgLSBpKSAqIDgpKSAmIDB4ZmY7Cit9CisKK3N0YXRpYyBpbmxpbmUg
dWludDhfdCBsZW5ndGhPZlVJbnQ2NCh1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICB1aW50OF90IGxl
bmd0aCA9IDA7CisgICAgZG8geworICAgICAgICArK2xlbmd0aDsKKyAgICAgICAgdmFsdWUgPSB2
YWx1ZSA+PiA4OworICAgIH0gd2hpbGUgKHZhbHVlKTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQor
CitzdGF0aWMgaW5saW5lIHVpbnQ4X3QgY29tcHV0ZUZpcnN0SGVhZGVyQnl0ZSh1aW50NjRfdCBr
ZXlJZCwgdWludDY0X3QgY291bnRlcikKK3sKKyAgICB1aW50OF90IHZhbHVlID0gMDsKKyAgICB2
YWx1ZSB8PSAobGVuZ3RoT2ZVSW50NjQoY291bnRlcikgLSAxKSA8PCA0OworICAgIGlmIChrZXlJ
ZCA8IDgpCisgICAgICAgIHZhbHVlIHw9IGtleUlkOworICAgIGVsc2UgeworICAgICAgICB2YWx1
ZSB8PSAobGVuZ3RoT2ZVSW50NjQoa2V5SWQpIC0gMSk7CisgICAgICAgIHZhbHVlIHw9IDEgPDwg
MzsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgaW5saW5lIFZlY3Rvcjx1
aW50OF90PiBjb21wdXRlSVYodWludDY0X3QgY291bnRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzYWx0S2V5KQoreworICAgIFZlY3Rvcjx1aW50OF90PiBpdigxNik7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDg7ICsraSkgeworICAgICAgICBhdXRvIHZhbHVlID0gKGNvdW50ZXIg
Pj4gKCg3IC0gaSkgKiA4KSkgJiAweGZmOworICAgICAgICBpdltpXSA9IHZhbHVlIF4gc2FsdEtl
eVtpXTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gODsgaSA8IDE2OyArK2kpCisgICAg
ICAgIGl2W2ldID0gc2FsdEtleVtpXTsKKyAgICByZXR1cm4gaXY7Cit9CisKK3N0cnVjdCBTRnJh
bWVIZWFkZXJJbmZvIHsKKyAgICB1aW50OF90IHNpemU7CisgICAgdWludDY0X3Qga2V5SWQ7Cisg
ICAgdWludDY0X3QgY291bnRlcjsKK307CitzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFNGcmFtZUhl
YWRlckluZm8+IHBhcnNlU0ZyYW1lSGVhZGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQoreworICAgIGF1dG8qIHN0YXJ0ID0gZGF0YTsKKworICAgIHVpbnQ2NF90IGtleUlkID0g
MDsKKyAgICB1aW50NjRfdCBjb3VudGVyID0gMDsKKworICAgIGF1dG8gZmlyc3RCeXRlID0gKmRh
dGErKzsKKworICAgIC8vIFNpZ25hdHVyZSBiaXQuCisgICAgaWYgKGZpcnN0Qnl0ZSAmIDB4ODAp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICB1aW50OF90IGNvdW50ZXJMZW5ndGggPSAoKGZp
cnN0Qnl0ZSA+PiA0KSAmIDB4MDcpICsgMTsKKworICAgIGlmIChzaXplIDwgY291bnRlckxlbmd0
aCArIDEpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoZmlyc3RCeXRlICYgMHgwOCkg
eworICAgICAgICB1aW50OF90IGtleUxlbmd0aCA9IChmaXJzdEJ5dGUgJiAweDA3KSArIDE7Cisg
ICAgICAgIGlmIChzaXplIDwgY291bnRlckxlbmd0aCArIGtleUxlbmd0aCArIDEpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworCisgICAgICAgIHdoaWxlIChrZXlMZW5ndGgtLSkKKyAgICAgICAg
ICAgIGtleUlkID0gKGtleUlkIDw8IDgpIHwgKmRhdGErKzsKKyAgICAgICAgd2hpbGUgKGNvdW50
ZXJMZW5ndGgtLSkKKyAgICAgICAgICAgIGNvdW50ZXIgPSAoY291bnRlciA8PCA4KSB8ICpkYXRh
Kys7CisgICAgfSBlbHNlIHsKKyAgICAgICAga2V5SWQgPSBmaXJzdEJ5dGUgJiAweDA3OworICAg
ICAgICB3aGlsZSAoY291bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9IChjb3Vu
dGVyIDw8IDgpIHwgKmRhdGErKzsKKyAgICB9CisgICAgdWludDhfdCBoZWFkZXJTaXplID0gZGF0
YSAtIHN0YXJ0OworICAgIHJldHVybiBTRnJhbWVIZWFkZXJJbmZvIHsgaGVhZGVyU2l6ZSwga2V5
SWQsIGNvdW50ZXIgfTsKK30KKworUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpKTsKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6
OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpCit7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1aW50NjRfdD4ga2V5SWQpCit7CisgICAgYXV0byBz
YWx0S2V5UmVzdWx0ID0gY29tcHV0ZVNhbHRLZXkocmF3S2V5KTsKKyAgICBpZiAoc2FsdEtleVJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNhbHRLZXlSZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBhdXRoZW50aWNhdGlvbktleVJlc3VsdCA9IGNvbXB1
dGVBdXRoZW50aWNhdGlvbktleShyYXdLZXkpOworICAgIGlmIChhdXRoZW50aWNhdGlvbktleVJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uS2V5UmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gZW5jcnlwdGlvbktleVJlc3VsdCA9
IGNvbXB1dGVFbmNyeXB0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGVuY3J5cHRpb25LZXlSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBlbmNyeXB0aW9uS2V5UmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2Nr
KTsKKworICAgIG1fc2FsdEtleSA9IHNhbHRLZXlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7
CisgICAgbV9hdXRoZW50aWNhdGlvbktleSA9IGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOworICAgIG1fZW5jcnlwdGlvbktleSA9IGVuY3J5cHRpb25LZXlSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBpZiAoa2V5SWQpCisgICAgICAgIG1fa2V5
SWQgPSAqa2V5SWQ7CisKKyAgICBtX2hhc0tleSA9IHRydWU7CisgICAgcmV0dXJuIHsgfTsKK30K
KworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
ZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkK
K3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGhlYWRlciA9IHBhcnNlU0ZyYW1lSGVh
ZGVyKGZyYW1lRGF0YSwgZnJhbWVTaXplKTsKKworICAgIGlmICghaGVhZGVyKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIGlmIChoZWFkZXIt
PmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1fY291bnRlcikKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgbV9jb3VudGVyID0gaGVhZGVyLT5jb3Vu
dGVyOworCisgICAgaWYgKGhlYWRlci0+a2V5SWQgIT0gbV9rZXlJZCkgeworICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHNlYXJjaCBmb3Iga2V5cy4KKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgfQorCisgICAgLy8gQ29tcHV0ZSBzaWduYXR1
cmUKKyAgICBhdXRvKiB0cmFuc21pdHRlZFNpZ25hdHVyZSA9IGZyYW1lRGF0YSArIGZyYW1lU2l6
ZSAtIG1fYXV0aGVudGljYXRpb25TaXplOworICAgIGF1dG8gc2lnbmF0dXJlID0gY29tcHV0ZUVu
Y3J5cHRlZERhdGFTaWduYXR1cmUoZnJhbWVEYXRhLCBmcmFtZVNpemUgIC0gbV9hdXRoZW50aWNh
dGlvblNpemUsIG1fYXV0aGVudGljYXRpb25LZXkpOworICAgIGZvciAoc2l6ZV90IGNwdHIgPSAw
OyBjcHRyIDwgbV9hdXRoZW50aWNhdGlvblNpemU7ICsrY3B0cikgeworICAgICAgICBpZiAoc2ln
bmF0dXJlW2NwdHJdICE9IHRyYW5zbWl0dGVkU2lnbmF0dXJlW2NwdHJdKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSByYXRjaGV0aW5nLgorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBEZWNyeXB0IGRhdGEKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1fY291bnRlciwgbV9z
YWx0S2V5KTsKKyAgICBhdXRvIGRhdGFTaXplID0gZnJhbWVTaXplIC0gaGVhZGVyLT5zaXplIC0g
bV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0RGF0YShmcmFt
ZURhdGEgKyBoZWFkZXItPnNpemUsIGRhdGFTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5KTsKKwor
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1l
U2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgTWF4SGVhZGVyU2l6ZSA9IDE3OworCisgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2tleUxvY2spOworCisgICAgYXV0byBpdiA9IGNvbXB1dGVJVihtX2NvdW50ZXIs
IG1fc2FsdEtleSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdHJhbnNmb3JtZWREYXRhOworICAg
IHRyYW5zZm9ybWVkRGF0YS5yZXNpemUoZnJhbWVTaXplICsgTWF4SGVhZGVyU2l6ZSArIG1fYXV0
aGVudGljYXRpb25TaXplKTsKKworICAgIC8vIEZpbGwgaGVhZGVyLgorICAgIHNpemVfdCBoZWFk
ZXJTaXplID0gMTsKKyAgICB0cmFuc2Zvcm1lZERhdGFbMF0gPSBjb21wdXRlRmlyc3RIZWFkZXJC
eXRlKG1fa2V5SWQsIG1fY291bnRlcik7CisgICAgaWYgKG1fa2V5SWQgPj0gOCkgeworICAgICAg
ICBhdXRvIGtleUlkTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9rZXlJZCk7CisgICAgICAgIHdy
aXRlVUludDY0KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBtX2tleUlkLCBr
ZXlJZExlbmd0aCk7CisgICAgICAgIGhlYWRlclNpemUgKz0ga2V5SWRMZW5ndGg7CisgICAgfQor
ICAgIGF1dG8gY291bnRlckxlbmd0aCA9IGxlbmd0aE9mVUludDY0KG1fY291bnRlcik7CisgICAg
d3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1fY291bnRl
ciwgY291bnRlckxlbmd0aCk7CisgICAgaGVhZGVyU2l6ZSArPSBjb3VudGVyTGVuZ3RoOworCisg
ICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBoZWFkZXJTaXplICsgbV9hdXRo
ZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBlbmNyeXB0ZWQgZGF0YQorICAgIGF1dG8g
ZW5jcnlwdGVkRGF0YSA9IGVuY3J5cHREYXRhKGZyYW1lRGF0YSwgZnJhbWVTaXplLCBpdiwgbV9l
bmNyeXB0aW9uS2V5KTsKKyAgICBBU1NFUlQoIWVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkp
OworICAgIGlmIChlbmNyeXB0ZWREYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
ZW5jcnlwdGVkRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBzdGQ6Om1lbWNweSh0cmFu
c2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwgZW5jcnlwdGVkRGF0YS5yZXR1cm5WYWx1
ZSgpLmRhdGEoKSwgZnJhbWVTaXplKTsKKworICAgIC8vIEZpbGwgc2lnbmF0dXJlCisgICAgYXV0
byBzaWduYXR1cmUgPSBjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZSh0cmFuc2Zvcm1lZERh
dGEuZGF0YSgpLCBmcmFtZVNpemUgKyBoZWFkZXJTaXplLCBtX2F1dGhlbnRpY2F0aW9uS2V5KTsK
KyAgICBzdGQ6Om1lbWNweSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgZnJhbWVTaXplICsgaGVh
ZGVyU2l6ZSwgc2lnbmF0dXJlLmRhdGEoKSwgbV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAg
KyttX2NvdW50ZXI7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhOworfQorCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2hhc0tleSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBy
ZXR1cm4gbV9pc1NlbmRpbmcgPyBlbmNyeXB0RnJhbWUoZGF0YSwgc2l6ZSkgOiBkZWNyeXB0RnJh
bWUoZGF0YSwgc2l6ZSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlU2FsdEtleShj
b25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBOb3RTdXBwb3J0ZWRFcnJvcjsK
K30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
cjo6Y29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7Cisg
ICAgcmV0dXJuIE5vdFN1cHBvcnRlZEVycm9yOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGlvbktleShjb25z
dCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBOb3RTdXBwb3J0ZWRFcnJvcjsKK30K
KworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
ZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gTm90U3VwcG9ydGVkRXJy
b3I7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIE5vdFN1cHBv
cnRlZEVycm9yOworfQorCitWZWN0b3I8dWludDhfdD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6
OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIHsgfTsKK30KKyNlbmRpZiAvLyAh
UExBVEZPUk0oQ09DT0EpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0NTgwZWU4
Njk1MDY2NmY4ODE2OWI5OTg5NDNjMzE2MmQ1ODFkYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgK
QEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQ3J5cHRvS2V5OworCitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4geworcHVibGljOgorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IGNyZWF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIH5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOworCisgICAgdm9pZCBz
ZXRJc1NlbmRpbmcoYm9vbCk7CisgICAgdm9pZCBzZXRJc1Byb2Nlc3NpbmdBdWRpbyhib29sKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEVuY3J5cHRpb25LZXko
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90Pik7CisgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm0oY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisKKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhl
bnRpY2F0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbktleTsgfQorICAg
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZW5jcnlwdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5jcnlwdGlvbktleTsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdEtleSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2FsdEtleTsgfQorCisgICAgdWludDY0X3QgY291bnRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fY291bnRlcjsgfQorICAgIHZvaWQgc2V0Q291bnRlcih1aW50NjRfdCBjb3Vu
dGVyKSB7IG1fY291bnRlciA9IGNvdW50ZXI7IH0KKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VY
UE9SVCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOworCisgICAgRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVTYWx0S2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAg
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+Jik7CisKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGVu
Y3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IGRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKyAgICBWZWN0b3I8
dWludDhfdD4gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoY29uc3QgdWludDhfdCosIHNp
emVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpOworCisgICAgTG9jayBtX2tleUxvY2s7
CisgICAgYm9vbCBtX2hhc0tleSB7IGZhbHNlIH07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYXV0
aGVudGljYXRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZW5jcnlwdGlvbktleTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbV9zYWx0S2V5OworCisgICAgYm9vbCBtX2lzU2VuZGluZyB7IGZh
bHNlIH07CisgICAgdWludDY0X3QgbV9hdXRoZW50aWNhdGlvblNpemUgeyAxMCB9OworICAgIHVp
bnQ2NF90IG1fa2V5SWQgeyAwIH07CisgICAgdWludDY0X3QgbV9jb3VudGVyIHsgMCB9OworfTsK
KworaW5saW5lIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyhib29s
IGlzU2VuZGluZykKK3sKKyAgICBtX2lzU2VuZGluZyA9IGlzU2VuZGluZzsKK30KKworaW5saW5l
IHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzUHJvY2Vzc2luZ0F1ZGlvKGJvb2wg
aXNQcm9jZXNzaW5nQXVkaW8pCit7CisgICAgbV9hdXRoZW50aWNhdGlvblNpemUgPSBpc1Byb2Nl
c3NpbmdBdWRpbyA/IDQgOiAxMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NWEyMmQ5MWJjMWNlMWU2N2MxODFjMjM5MTc2MTRlMjA2YWVmNzNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JU
QykKKworI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCisjaW5jbHVkZSA8Q29tbW9u
Q3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0
S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQoreworICAgIHVpbnQ4IHVzYWdlW10g
PSAiU0ZyYW1lU2FsdEtleSI7CisgICAgcmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKHJhd0tl
eS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJhd0tleS5zaXplKCkgLSAxNiwgdXNh
Z2UsIHNpemVvZih1c2FnZSkgLSAxLCAxMjgpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXko
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCit7CisgICAgdWludDggdXNhZ2VbXSA9ICJT
RnJhbWVBdXRoZW50aWNhdGlvbktleSI7CisgICAgcmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRz
KHJhd0tleS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJhd0tleS5zaXplKCkgLSAx
NiwgdXNhZ2UsIHNpemVvZih1c2FnZSkgLSAxLCAyNTYpOworfQorCitFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGlvbktl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sKKyAgICB1aW50OCB1c2FnZVtdID0g
IlNGcmFtZUVuY3J5cHRpb25LZXkiOworICAgIHJldHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhy
YXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEoKSArIDE2LCByYXdLZXkuc2l6ZSgpIC0gMTYs
IHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMTI4KTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdERhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5KQoreworICAgIHJldHVybiB0cmFuc2Zvcm1BRVNfQ1RSKGtD
Q0RlY3J5cHQsIGl2LCBpdi5zaXplKCksIGtleSwgZGF0YSwgc2l6ZSk7Cit9CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHREYXRh
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICByZXR1cm4gdHJhbnNmb3Jt
QUVTX0NUUihrQ0NFbmNyeXB0LCBpdiwgaXYuc2l6ZSgpLCBrZXksIGRhdGEsIHNpemUpOworfQor
CitWZWN0b3I8dWludDhfdD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0
ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KENDX1NI
QTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICBDQ0htYWMoa0NDSG1hY0FsZ1NIQTI1Niwga2V5LmRh
dGEoKSwga2V5LnNpemUoKSwgZGF0YSwgc2l6ZSwgcmVzdWx0LmRhdGEoKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDY0YTVkNWQ0ZDQ3MDY0NjkzYzA1ZmY4NzIxZWM1
ZTM3YjA1Mzk1NjUuLjEwZDA5ZjI3NGFmNTlhZTE4YjBiODE1MDA3ODFlNWZjNDA0NWE4ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0xNjMsNiArMTYzLDggQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJ
Y2VUcmFuc3BvcnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm1lci5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcApAQCAtMzMxOSw2ICszMzIxLDcgQEAgSlNSVENSdHBI
ZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNS
VENSdHBSZWNlaXZlci5jcHAKIEpTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKK0pTUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcAogSlNSVENSdHBTZW5kUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU2Vu
ZGVyLmNwcAogSlNSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAppbmRleCAyYWQzM2E5NTUxOTJkOTA3NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi5m
NTAyZTcxYzRmODFlM2ZlNjVkNDBhMTAxOTgyMmYzYmJkNTMxYzUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTg5LDYgKzg5LDcgQEAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50
U3VtbWFyeUl0ZW1zQ29jb2EubW0KIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBw
bGVQYXlQYXltZW50SGFuZGxlci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlw
Ym9hcmRJbWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBi
b2FyZEltYWdlUmVhZGVyTWFjLm1tCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBN
b2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCkBAIC0xMjgs
NiArMTI5LDcgQEAgY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHAKIGNy
eXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCiBjcnlwdG8vbWFjL0NyeXB0b0tleU1hYy5jcHAK
IGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRp
ZXNDb2NvYS5jcHAKIGNyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KIGRv
bS9EYXRhVHJhbnNmZXJNYWMubW0KIGRvbS9pb3MvTW91c2VFdmVudElPUy5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOThk
MTZhOTFiOGMxY2QwNGY3MGFkY2VlNmZkZGZlYTRkOTE0ZDAzLi5mZDRiYjVhNWZlOWY0YWVlYzk2
MWUxNGZlMTVmMTBiMTdhNTY4NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5LDYgKzExMDksOCBAQAogCQk0MTgxQzVE
NjI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZG
IC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVC
MEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENS
dHBUcmFuc2Zvcm0uY3BwICovOyB9OwogCQk0MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNN
b2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENkYzRTkyMUMxRjg1NTUwMDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwICovOyB9OworCQk0MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxODFDNjQyMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQx
ODFDNjRBMjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUz
RTk4QzAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDE4MjZCRjIyM0ZCNTk3NzAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjZCRjEyM0ZCNTk3
MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODRGNTE2MUVBRjA1QTgwMEYxOEJGMCAvKiBP
cmllbnRhdGlvbk5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03
NzAyLDYgKzc3MDQsMTIgQEAKIAkJNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENS
dHBUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a1JUQ1J0cFRyYW5zZm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFD
NUQ1MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM2MzYyNTVBRTI2MTAwQUVCMEZGIC8qIE1vY2tSVENSdHBU
cmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTgxQzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE4MUM2NDEyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDIy
NTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQ0MjU1QjRD
MjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxODFDNjQ1MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjA1NDUx
RTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUlRDQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTgyMDU0ODFFNTNFQUFEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDb250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjZCRjEyM0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50
SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudElk
ZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MzUsNiArNzc0Myw4
IEBACiAJCTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQg
LyogVmlzaXRlZExpbmtTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
aXNpdGVkTGlua1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJFNzUy
MUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVCdWlsdGluTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE5RDkzMDUyNTVFODQyNzAwREExOTg0IC8qIENyeXB0b1V0aWxpdGll
c0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b1V0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOUQ5MzA3MjU1RTg0MjgwMERBMTk4NCAvKiBDcnlwdG9V
dGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9VdGlsaXRpZXNDb2Nv
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVC
MzU3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJl
YWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkw
MEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVh
ZGFibGVTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwODksNiAr
MTcwOTksMTIgQEAKIAkJCQk0MTNDOEIyRTI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVy
V2l0aFRyYW5zZm9ybS5oICovLAogCQkJCTQxNEFEM0ZDMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENS
dHBTZW5kUGFyYW1ldGVycy5oICovLAogCQkJCTQxNEFEM0ZFMjE0OTg0MjAwMDUyMTY3NiAvKiBS
VENSdHBTZW5kUGFyYW1ldGVycy5pZGwgKi8sCisJCQkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgKi8sCisJCQkJNDE4MUM2NDQyNTVCNEMyNzAw
QUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovLAorCQkJCTQxODFDNjQzMjU1QjRD
MjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsICovLAorCQkJCTQxODFDNjQx
MjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgKi8sCisJCQkJ
NDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8s
CisJCQkJNDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Q29jb2EuY3BwICovLAogCQkJCTQxNUUxQkI2MjE1MDE1MkEwMDIyREE5NiAvKiBSVENSdHBTeW5j
aHJvbml6YXRpb25Tb3VyY2UuaCAqLywKIAkJCQk0MTVFMUJCNzIxNTAxNTMwMDAyMkRBOTYgLyog
UlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmlkbCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRC
MDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovLApAQCAtMjgyNTUsNiArMjgyNzEs
OCBAQAogCQkJCTU3NTBBOTdBMUU2OTE2MTYwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQ01hYy5jcHAg
Ki8sCiAJCQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi8s
CiAJCQkJRTE2NEZBQTQxODMxNUUxQTAwREI0RTYxIC8qIENyeXB0b0tleVJTQU1hYy5jcHAgKi8s
CisJCQkJNDE5RDkzMDcyNTVFODQyODAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmNw
cCAqLywKKwkJCQk0MTlEOTMwNTI1NUU4NDI3MDBEQTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29j
b2EuaCAqLywKIAkJCQlFMThERjMzNjE4QUFGMTREMDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0
b0tleVdyYXBNYWMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTM0MDkzLDYgKzM0
MTExLDggQEAKIAkJCQk0MTNDOEIzNTI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXJX
aXRoVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM2MTFCQ0VFMzIzMDAwMUUy
QkMgLyogUlRDUnRwU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDOEIzMzI1NTJGMjdE
MDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDE4MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDE4MUM2NDgyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBE
ODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRUI1NERGMUU3
REM3NDQwMEMxNjIzQiAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQzhCMzQyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJD
b3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmgKaW5kZXggNWFlNzM0ZDkwOTBjMGQwZjc1NDRkMTRmNmNiYmQzMTMxMzRmMTJi
OC4uMTRkNmRmNDcyMTgyMWNlNTkxMmYxNThlYzQxMDAzMjlmMzZiZTAzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMjE5LDYg
KzIxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlv
bikgXAogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpIFwKICAgICBtYWNybyhS
VENSdHBSZWNlaXZlcikgXAorICAgIG1hY3JvKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSkgXAogICAg
IG1hY3JvKFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCiAg
ICAgbWFjcm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcAppbmRleCBjYzQxZGE2NWIw
ZGFjOWM4YjVkYjFhMGU0MmZlMDIwMGI1MjhlYTM4Li43NTc5ZTQwYWUzN2NhY2U0MjJhMDZlM2Zl
YzVlZWU2NGYwMmYxYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0Ny
eXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKQEAgLTMxLDEwMCArMzEsMjMgQEAKIAog
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0
b0tleUFFUy5oIgotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKyNpbmNs
dWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVy
YXRpb24gb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBj
b3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBmb2xs
b3dpbmcgaGFjayBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTM2MTA1MD4gaXMgZml4ZWQuCi0gICAg
Ly8gY291bnRlciA9IG5vbmNlICsgY291bnRlcgotICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50
bHkgY2FuIG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNl
IHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSByZXN0cmljdGVkCi0gICAgLy8gYnkg
dGhlIGNvdW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hv
dWxkIHN0YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNz
dWUsCi0gICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBv
cGVyYXRpb24gaW50byB0d28gcGFydHMuCi0gICAgc2l6ZV90IG51bWJlck9mQmxvY2tzID0gZGF0
YS5zaXplKCkgJSBrQ0NCbG9ja1NpemVBRVMxMjggPyBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6
ZUFFUzEyOCArIDEgOiBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKLQotICAgIC8v
IERldGVjdCBsb29wCi0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDgg
JiYgbnVtYmVyT2ZCbG9ja3MgPiAoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBjb3VudGVyTGVu
Z3RoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAg
ICAvLyBDYWxjdWxhdGUgY2FwYWNpdHkgYmVmb3JlIG92ZXJmbG93Ci0gICAgQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVyIGNvdW50ZXJCbG9ja0hlbHBlcihjb3VudGVy
LCBjb3VudGVyTGVuZ3RoKTsKLSAgICBzaXplX3QgY2FwYWNpdHkgPSBjb3VudGVyQmxvY2tIZWxw
ZXIuY291bnRUb092ZXJmbG93U2F0dXJhdGluZygpOwotCi0gICAgLy8gRGl2aWRlIGRhdGEgaW50
byB0d28gcGFydHMgaWYgbmVjZXNzYXJ5LgotICAgIHNpemVfdCBoZWFkU2l6ZSA9IGRhdGEuc2l6
ZSgpOwotICAgIGlmIChjYXBhY2l0eSA8IG51bWJlck9mQmxvY2tzKQotICAgICAgICBoZWFkU2l6
ZSA9IGNhcGFjaXR5ICoga0NDQmxvY2tTaXplQUVTMTI4OwotCi0gICAgLy8gZmlyc3QgcGFydDog
Y29tcHV0ZSB0aGUgZmlyc3Qgbj1jYXBhY2l0eSBibG9ja3Mgb2YgZGF0YSBpZiBjYXBhY2l0eSBp
cyBpbnN1ZmZpY2llbnQuIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQuCi0gICAgQ0NDcnlw
dG9yUmVmIGNyeXB0b3I7Ci0gICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDQ3J5cHRvckNy
ZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBj
Y05vUGFkZGluZywgY291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAs
IDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKLSAgICBpZiAoc3RhdHVzKQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIFZlY3Rvcjx1
aW50OF90PiBoZWFkKENDQ3J5cHRvckdldE91dHB1dExlbmd0aChjcnlwdG9yLCBoZWFkU2l6ZSwg
dHJ1ZSkpOwotCi0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0
b3JVcGRhdGUoY3J5cHRvciwgZGF0YS5kYXRhKCksIGhlYWRTaXplLCBoZWFkLmRhdGEoKSwgaGVh
ZC5zaXplKCksICZieXRlc1dyaXR0ZW4pOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgdWludDhfdCogcCA9IGhlYWQu
ZGF0YSgpICsgYnl0ZXNXcml0dGVuOwotICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0
b3IsIHAsIGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBwICs9IGJ5dGVzV3Jp
dHRlbjsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKLQotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0g
aGVhZC5lbmQoKSk7Ci0gICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4oKSk7Ci0KLSAgICBD
Q0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOwotCi0gICAgaWYgKGNhcGFjaXR5ID49IG51bWJlck9m
QmxvY2tzKQotICAgICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKLQotICAgIC8vIHNlY29uZCBw
YXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhl
YWQuCi0gICAgLy8gcmVzZXQgY291bnRlcgotICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5pbmdD
b3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCk7
Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2Rl
Q1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVyLmRh
dGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9C
RSwgJmNyeXB0b3IpOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgc2l6ZV90IHRhaWxTaXplID0gZGF0YS5zaXplKCkg
LSBoZWFkU2l6ZTsKLSAgICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRM
ZW5ndGgoY3J5cHRvciwgdGFpbFNpemUsIHRydWUpKTsKLQotICAgIHN0YXR1cyA9IENDQ3J5cHRv
clVwZGF0ZShjcnlwdG9yLCBkYXRhLmRhdGEoKSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5k
YXRhKCksIHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBpZiAoc3RhdHVzKQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIHAgPSB0YWls
LmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlw
dG9yLCBwLCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7Ci0gICAgcCArPSBieXRlc1dy
aXR0ZW47Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yIH07Ci0KLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9
IHRhaWwuZW5kKCkpOwotICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJlZ2luKCkpOwotCi0gICAg
Q0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKLQotICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwp
OwotICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOwotfQotCiBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlw
dG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYg
a2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKICAgICBBU1NFUlQocGFy
YW1ldGVycy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0g
ICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVy
VmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dCk7CisgICAg
cmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVj
dG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dC5kYXRhKCksIHBs
YWluVGV4dC5zaXplKCkpOwogfQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0
b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1B
ZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgICBBU1NFUlQocGFyYW1ldGVycy5j
b3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJu
IHRyYW5zZm9ybUFFU19DVFIoa0NDRGVjcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCks
IHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIGNpcGhlclRleHQpOworICAgIEFTU0VSVChw
YXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsK
KyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50
ZXJWZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgY2lwaGVyVGV4dC5kYXRh
KCksIGNpcGhlclRleHQuc2l6ZSgpKTsKIH0KIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwCmluZGV4IDZjYWE1ZjNjYmU1Mzlm
ZTY1NGNiN2E5ZmVmZWQ5NGI5YTcyZDU3MzEuLmI0MTdiNzFjNWM2YWZlNGUyODk0NDg0NTY0MTFl
OWU5NWEzNWUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtSEtERk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1IS0RGTWFjLmNwcApAQCAtMjgsMjUgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUo
V0VCX0NSWVBUTykKIAotI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcu
aCIKKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6
cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMmIHBhcmFt
ZXRlcnMsIGNvbnN0IENyeXB0b0tleVJhdyYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIFZl
Y3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7Ci0gICAgQ0NEaWdlc3RBbGdvcml0aG0g
ZGlnZXN0QWxnb3JpdGhtOwotICAgIGdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJh
bWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBkaWdlc3RBbGdvcml0aG0pOwotCi0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0
NTU+IEN1cnJlbnRseSwgd2hlbiBrZXkgZGF0YSBpcyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1h
YyB3aWxsIGJhaWwgb3V0LgotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5k
ZXI6IFN3aXRjaCB0byBDQ0Rlcml2ZUtleSBub3cgdGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlz
IGRlcHJlY2F0ZWQuCi0gICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGht
SEtERiwgZGlnZXN0QWxnb3JpdGhtLCAwLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6
ZSgpLCAwLCAwLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuaW5m
b1ZlY3RvcigpLnNpemUoKSwgMCwgMCwgcGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBw
YXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXpl
KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOworICAgIHJldHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhrZXkua2V5KCkuZGF0YSgpLCBr
ZXkua2V5KCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRl
cnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuZGF0YSgpLCBw
YXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5zaXplKCksIGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBmZDVmM2NiZjcxMjgxNmQ1MTlmZjg1MTdmZTViZTlkOTVhYTBlNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2Eu
Y3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBU
TykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ1RS
LmgiCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NU
UihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwg
c2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCByZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNrIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUw
PiBpcyBmaXhlZC4KKyAgICAvLyBjb3VudGVyID0gbm9uY2UgKyBjb3VudGVyCisgICAgLy8gQ29t
bW9uQ3J5cHRvIGN1cnJlbnRseSBjYW4gbmVpdGhlciByZXNldCB0aGUgY291bnRlciBub3IgZGV0
ZWN0IG92ZXJmbG93IG9uY2UgdGhlIGNvdW50ZXIgcmVhY2hlcyBpdHMgbWF4IHZhbHVlIHJlc3Ry
aWN0ZWQKKyAgICAvLyBieSB0aGUgY291bnRlckxlbmd0aC4gSXQgdGhlbiBpbmNyZW1lbnRzIHRo
ZSBub25jZSB3aGljaCBzaG91bGQgc3RheSBzYW1lIGZvciB0aGUgd2hvbGUgb3BlcmF0aW9uLiBU
byByZW1lZHkgdGhpcyBpc3N1ZSwKKyAgICAvLyB3ZSBkZXRlY3QgdGhlIG92ZXJmbG93IGFoZWFk
IGFuZCBkaXZpZGUgdGhlIG9wZXJhdGlvbiBpbnRvIHR3byBwYXJ0cy4KKyAgICBzaXplX3QgbnVt
YmVyT2ZCbG9ja3MgPSBkYXRhU2l6ZSAlIGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGFTaXplIC8g
a0NDQmxvY2tTaXplQUVTMTI4ICsgMSA6IGRhdGFTaXplIC8ga0NDQmxvY2tTaXplQUVTMTI4Owor
CisgICAgLy8gRGV0ZWN0IGxvb3AKKyAgICBpZiAoY291bnRlckxlbmd0aCA8IHNpemVvZihzaXpl
X3QpICogOCAmJiBudW1iZXJPZkJsb2NrcyA+IChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IGNv
dW50ZXJMZW5ndGgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKKworICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKKyAgICBDcnlw
dG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXIgY291bnRlckJsb2NrSGVscGVy
KGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOworICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvdW50ZXJC
bG9ja0hlbHBlci5jb3VudFRvT3ZlcmZsb3dTYXR1cmF0aW5nKCk7CisKKyAgICAvLyBEaXZpZGUg
ZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3NhcnkuCisgICAgc2l6ZV90IGhlYWRTaXplID0g
ZGF0YVNpemU7CisgICAgaWYgKGNhcGFjaXR5IDwgbnVtYmVyT2ZCbG9ja3MpCisgICAgICAgIGhl
YWRTaXplID0gY2FwYWNpdHkgKiBrQ0NCbG9ja1NpemVBRVMxMjg7CisKKyAgICAvLyBmaXJzdCBw
YXJ0OiBjb21wdXRlIHRoZSBmaXJzdCBuPWNhcGFjaXR5IGJsb2NrcyBvZiBkYXRhIGlmIGNhcGFj
aXR5IGlzIGluc3VmZmljaWVudC4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICBD
Q0NyeXB0b3JSZWYgY3J5cHRvcjsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NDcnlw
dG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMx
MjgsIGNjTm9QYWRkaW5nLCBjb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwg
MCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOworICAgIGlmIChzdGF0dXMp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGhlYWQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGhlYWRT
aXplLCB0cnVlKSk7CisKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IEND
Q3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLCBoZWFkU2l6ZSwgaGVhZC5kYXRhKCksIGhlYWQu
c2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHVpbnQ4X3QqIHAgPSBoZWFkLmRh
dGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9y
LCBwLCBoZWFkLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7CisgICAgcCArPSBieXRlc1dyaXR0
ZW47CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IGhl
YWQuZW5kKCkpOworICAgIGhlYWQuc2hyaW5rKHAgLSBoZWFkLmJlZ2luKCkpOworCisgICAgQ0ND
cnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKKworICAgIGlmIChjYXBhY2l0eSA+PSBudW1iZXJPZkJs
b2NrcykKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7CisKKyAgICAvLyBzZWNvbmQgcGFy
dDogY29tcHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBoZWFk
LgorICAgIC8vIHJlc2V0IGNvdW50ZXIKKyAgICBWZWN0b3I8dWludDhfdD4gcmVtYWluaW5nQ291
bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygpOwor
ICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNU
Uiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgcmVtYWluaW5nQ291bnRlci5kYXRh
KCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUs
ICZjcnlwdG9yKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
T3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHNpemVfdCB0YWlsU2l6ZSA9IGRhdGFTaXplIC0gaGVh
ZFNpemU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRhaWwoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3Ro
KGNyeXB0b3IsIHRhaWxTaXplLCB0cnVlKSk7CisKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRh
dGUoY3J5cHRvciwgZGF0YSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCksIHRhaWwu
c2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHAgPSB0YWlsLmRhdGEoKSArIGJ5
dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCB0YWls
LmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7CisgICAgcCArPSBieXRlc1dyaXR0ZW47CisgICAg
aWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07
CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwuZW5kKCkp
OworICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJlZ2luKCkpOworCisgICAgQ0NDcnlwdG9yUmVs
ZWFzZShjcnlwdG9yKTsKKworICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOworICAgIHJldHVy
biBXVEZNb3ZlKGhlYWQpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2
ZUhES0ZTSEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3QqIGtleSwgc2l6ZV90IGtleVNpemUsIGNvbnN0
IHVpbnQ4X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6ZSwgY29uc3QgdWludDhfdCogaW5mbywgc2l6
ZV90IGluZm9TaXplLCBzaXplX3QgbGVuZ3RoKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQobGVuZ3RoIC8gOCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGluZm9WZWN0b3I7CisKKyAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS8zMjQzOTQ1NT4gQ3VycmVudGx5LCB3aGVuIGtleSBkYXRhIGlzIGVtcHR5LCBDQ0tleURlcml2
YXRpb25ITWFjIHdpbGwgYmFpbCBvdXQuCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4ODk2MDIx
PiBSZW1pbmRlcjogU3dpdGNoIHRvIENDRGVyaXZlS2V5IG5vdyB0aGF0IENDS2V5RGVyaXZhdGlv
bkhNYWMgaXMgZGVwcmVjYXRlZC4KKyAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZB
bGdvcml0aG1IS0RGLCBrQ0NEaWdlc3RTSEEyNTYsIDAsIGtleSwga2V5U2l6ZSwgMCwgMCwgaW5m
bywgaW5mb1NpemUsIDAsIDAsIHNhbHQsIHNhbHRTaXplLCByZXN1bHQuZGF0YSgpLCByZXN1bHQu
c2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Cisg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgcmV0dXJuIFdURk1vdmUo
cmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxp
dGllc0NvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNlM2E5NjA2ZWQ1ZTIwNWEwZGFiOTAyOTgzMDQ3YjQ1
MmZjY2VkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvVXRpbGl0aWVzQ29jb2EuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRl
ZiB1aW50MzJfdCBDQ09wZXJhdGlvbjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24sIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUp
OworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZXJpdmVIREtGU0hBMjU2Qml0cyhjb25z
dCB1aW50OF90KiBrZXksIHNpemVfdCBrZXlTaXplLCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXpl
X3Qgc2FsdFNpemUsIGNvbnN0IHVpbnQ4X3QqIGluZm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90
IGxlbmd0aCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQ1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCAxNjFhMjhmNDEzZjBlZTEyY2EwZmMyM2I1MDdiZDQ0MTY5MjliMTNlLi4wNmFl
MjQzODcyZjI3MzU5Y2JiZjU2NjM1MzViZDdkMzQwNzkyNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xNTMsNiArMTUzLDcgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRh
LmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5o
IgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlJhbmdlLmgi
CiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9i
amVjdC5oIgpAQCAtMTU4NSw2ICsxNTg2LDExIEBAIFJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBJ
bnRlcm5hbHM6OmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKQogICAgIHJldHVybiBNb2NrUlRD
UnRwVHJhbnNmb3JtOjpjcmVhdGUoKTsKIH0KIAordWludDY0X3QgSW50ZXJuYWxzOjpzZnJhbWVD
b3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIHJl
dHVybiB0cmFuc2Zvcm0uY291bnRlckZvclRlc3RpbmcoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6
OnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24oYm9vbCB2YWx1ZSkKIHsKICNpZiBVU0UoTElCV0VC
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjQ4NWUxM2Q2ZDQ5NTYzNzll
Njg2NjUwOGIwMTZlYjE0MjRmZTY2ZS4uNTJkMDUyZGE2OTNmZWJjZTcxYjNkMjJiNzVlMzMzMjlk
YTNhOWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMjQsNiArMTI0LDEw
IEBAIGNsYXNzIFRleHRUcmFja0N1ZUdlbmVyaWM7CiBjbGFzcyBTZXJ2aWNlV29ya2VyOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQlhSKQogY2xhc3MgV2ViWFJUZXN0OwogI2VuZGlmCkBA
IC02MDgsNiArNjEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChi
b29sKTsKICAgICB2b2lkIHNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCk7CiAgICAgUmVmPE1v
Y2tSVENSdHBUcmFuc2Zvcm0+IGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKKyAgICB1aW50
NjRfdCBzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZv
aWQgc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihib29sKTsKICAgICB2b2lkIHNldFVzZURUTFMx
MChib29sKTsKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JXZWJSVEMoYm9vbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYjAxNTRiMjk4NTgwYmZhZDMzM2ExMTRh
ZjM4NGQxZGE5MDllMTY4Mi4uMTQwYTZhNTA0ZGI1ZDBlNTcwYTZiYTNlNzQ4MWRlZGNmZWE0NDll
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtODAzLDYgKzgwMyw3IEBA
IGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0
V2ViUlRDVlA5U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJf
UlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwog
ICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSBNb2NrUlRDUnRwVHJhbnNmb3JtIGNyZWF0ZU1vY2tS
VENSdHBUcmFuc2Zvcm0oKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5zaWduZWQgbG9u
ZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRyYW5zZm9ybSk7CiAK
ICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0TW9ja0F1ZGlvVHJh
Y2tDaGFubmVsTnVtYmVyKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIHVuc2lnbmVkIHNob3J0IGNv
dW50KTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0U2hvdWxk
SW50ZXJydXB0QXVkaW9PblBhZ2VWaXNpYmlsaXR5Q2hhbmdlKGJvb2xlYW4gc2hvdWxkSW50ZXJy
dXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5z
Zm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRs
CmluZGV4IDA5ZWIwYzNjYTE1YzVmMTk3ZjM2Y2ZiNDc0OWMxMTgwNmU4YWM3NzcuLmRlNjMxODc2
MDU5NGI2OWYyN2EwMWQ2NWUwODg5ODA1ZjMzNzQxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbApAQCAtMjYsNiArMjYsNyBAQAogWwogICAg
IENvbmRpdGlvbmFsPVdFQl9SVEMsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBp
bnRlcmZhY2UgTW9ja1JUQ1J0cFRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNQcm9jZXNzaW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM4NWExYmVhYzFiOGI0NmNmZWI2YzYy
Yjg0MDc2ZWU5NzhkMjdhZGQuLmI0MWZiNzg2ZjAyYjJlODc3YTBmYjg5ZGYwNWVmZTFmYTdmNzEz
ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGEgV2ViUlRDIFNGcmFtZSB0cmFuc2Zvcm0KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc1MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIHRoYXQg
dmFsaWRhdGUgU0ZyYW1lIGdlbmVyYXRpb24gYW5kIHBhcnNpbmcuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJU
ZXN0cy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0UmF3S2V5KToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y2hlY2tWZWN0b3JzQXJlRXF1YWwpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMjAtMTEtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2OTUyNSk6IE1hbnkgbGF5b3V0IHRl
c3RzIGNyYXNoIHdoZW4gcnVuIHVuZGVyIEFTYW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MTJjODAxMGNlZmFjMzVmMDZlOGMzYmNiNDc4M2NkOTM3MTQ5NWY3Mi4uYjVmODJjNzU0NzRiMzIw
YjY4Y2QzNDlhMzliY2MzOTI3YmViOTI5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIz
Niw2ICsyMzYsNyBAQAogCQk0MTM1RkI4NTIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9y
dC5keWxpYiAqLzsgfTsKIAkJNDE0QUQ2ODYyMjg1RDFDMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90
YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEFE
Njg1MjI4NUQxQjAwMDc3N0YyRCAvKiBTdG9yYWdlUXVvdGEubW0gKi87IH07CiAJCTQxNjYxQzY2
MjM1NUU4NUUwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTY2MUM2NTIzNTVE
OThCMDBEMzNDMjcgLyogZ2V0VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgKi87IH07CisJCTQxODFD
NjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjJDMjU1
QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLzsgfTsK
IAkJNDE4NDhGNDQyNDg5MTg3OTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwt
d2l0aC1ob3N0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4NDhGNDMyNDg5MTgxNTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgt
ZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgKi87IH07CiAJCTQxODgyRjAzMjEwMTBDMEQwMDJGRjI4
OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODgyRjAyMjEwMTBBNzAwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2Fy
bWluZy5tbSAqLzsgfTsKIAkJNDQwNzdCQjEyMzE0NEI1MDAwMTc5RTJEIC8qIERhdGFEZXRlY3Rv
cnNUZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDQwNzdCQjAyMzE0NDlEMjAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tICov
OyB9OwpAQCAtMTk1NSw2ICsxOTU2LDcgQEAKIAkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8q
IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJX
ZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTQxNEFENjg1MjI4NUQxQjAwMDc3N0YyRCAvKiBTdG9yYWdlUXVvdGEubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTdG9yYWdlUXVvdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNjYxQzY1MjM1NUQ5OEIwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8u
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJnZXRVc2VyTWVkaWEtd2ViYXVkaW8u
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjJDMjU1QTg5MTEwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyog
b3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8q
IFByb2Nlc3NQcmVXYXJtaW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUHJvY2Vzc1ByZVdhcm1pbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MTksNiArMzUyMSw3IEBACiAJCQkJMDQxQTFFMzMyMTZGRkRC
QzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgKi8sCiAJCQkJNkI0RTg2MUIyMjIwQTU1MjAw
MjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCAqLywKIAkJCQlGNDE4QkUxNDFGNzFCN0RD
MDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAgKi8sCisJCQkJNDE4MUM2MkMyNTVBODkx
MTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovLAogCQkJCUNE
Q0ZBN0E5MUU0NTEyMkYwMEMyNDMzRCAvKiBTYW1wbGVNYXAuY3BwICovLAogCQkJCUNFMDZERjlB
MUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgKi8sCiAJCQkJNDE5NzNCNUMx
QUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8sCkBAIC01NDA1LDYgKzU0MDgs
NyBAQAogCQkJCTVDQ0IxMEUzMjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRl
V2l0aG91dE5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NkU4MTZGODFFNzlFMjlD
MDAzNzVBREMgLyogUmVzdG9yZVN0YXRlQWZ0ZXJUZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUY0MThCRTE1MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQxODFDNjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExODBDMEZBMUVFNjdE
RjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQyOTg2
RTIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0QWZ0ZXJEb2N1bWVudExvYWQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1Q0E5ODU1MzIxMTNDRjc4MDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nLm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDMyMDQwZWEzM2NlODhkZDdiYmM3NjEwYjNhOWU0ZTFhZTQwZjY2YwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lclRlc3RzLmNwcApAQCAtMCwwICsxLDM1MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1ZlY3Rvcjx1aW50OF90
PiBnZXRSYXdLZXkoKQoreworICAgIHJldHVybiBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAg
ICAgIDI0OSwKKyAgICAgICAgMTk1LAorICAgICAgICAyMDIsCisgICAgICAgIDE1OSwKKyAgICAg
ICAgNTYsCisgICAgICAgIDE5MSwKKyAgICAgICAgMTAzLAorICAgICAgICAyNDcsCisgICAgICAg
IDI0NSwKKyAgICAgICAgMjEzLAorICAgICAgICAyMCwKKyAgICAgICAgNjgsCisgICAgICAgIDY3
LAorICAgICAgICAyMCwKKyAgICAgICAgMTUxLAorICAgICAgICAxODUsCisgICAgICAgIDI0MiwK
KyAgICAgICAgNzgsCisgICAgICAgIDE3NiwKKyAgICAgICAgMTU4LAorICAgICAgICA5MSwKKyAg
ICAgICAgMjA1LAorICAgICAgICAxMzgsCisgICAgICAgIDU1LAorICAgICAgICAxNzYsCisgICAg
ICAgIDE0NywKKyAgICAgICAgMTk4LAorICAgICAgICAyNDMsCisgICAgICAgIDE0NiwKKyAgICAg
ICAgMjA0LAorICAgICAgICAyNDMsCisgICAgICAgIDIyMAorICAgICk7Cit9CisKK3N0YXRpYyBS
ZWY8V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IGNyZWF0ZVZpZGVvVHJhbnNmb3Jt
ZXIoYm9vbCBpc1NlbmRpbmcgPSB0cnVlKQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBXZWJD
b3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCk7CisgICAgdHJhbnNmb3JtZXIt
PnNldElzU2VuZGluZyhpc1NlbmRpbmcpOworICAgIHRyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3Np
bmdBdWRpbyhmYWxzZSk7CisKKyAgICBhdXRvIGtleUlkID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9t
KDE5OCwgMzEsIDI1MSwgMTk3LCA0OCwgMTM5LCA5MSwgNTEpOworICAgIHVpbnQ2NF90IGtleUlk
VmFsdWUgPSAwOworICAgIGZvciAoYXV0byB2YWx1ZSA6IGtleUlkKQorICAgICAgICBrZXlJZFZh
bHVlID0gdmFsdWUgKyAoa2V5SWRWYWx1ZSA8PCA4KTsKKworICAgIGF1dG8ga2V5UmVzdWx0ID0g
dHJhbnNmb3JtZXItPnNldEVuY3J5cHRpb25LZXkoZ2V0UmF3S2V5KCksIGtleUlkVmFsdWUpOwor
ICAgIEVYUEVDVF9GQUxTRShrZXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgcmV0dXJu
IHRyYW5zZm9ybWVyOworfQorCitzdGF0aWMgdm9pZCBjaGVja1ZlY3RvcnNBcmVFcXVhbChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNvbXB1dGVkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cGVj
dGVkKQoreworICAgIEVYUEVDVF9FUShjb21wdXRlZC5zaXplKCksIGV4cGVjdGVkLnNpemUoKSk7
CisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBzdGQ6Om1pbihjb21wdXRlZC5zaXpl
KCksIGV4cGVjdGVkLnNpemUoKSk7ICsrY3B0cikKKyAgICAgICAgRVhQRUNUX0VRKGNvbXB1dGVk
W2NwdHJdLCBleHBlY3RlZFtjcHRyXSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIsIEF1dGhlbnRpY2F0aW9uS2V5KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVW
aWRlb1RyYW5zZm9ybWVyKCk7CisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwodHJhbnNmb3JtZXIt
PmF1dGhlbnRpY2F0aW9uS2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgOTIs
CisgICAgICAgIDIyOCwKKyAgICAgICAgMTM5LAorICAgICAgICAxOTUsCisgICAgICAgIDk4LAor
ICAgICAgICAxNiwKKyAgICAgICAgNCwKKyAgICAgICAgMTkzLAorICAgICAgICAyMjEsCisgICAg
ICAgIDI0OCwKKyAgICAgICAgMjMyLAorICAgICAgICAxNzgsCisgICAgICAgIDEzNSwKKyAgICAg
ICAgMjIsCisgICAgICAgIDE0MSwKKyAgICAgICAgMTUwLAorICAgICAgICAxNjUsCisgICAgICAg
IDI0MiwKKyAgICAgICAgNzMsCisgICAgICAgIDcyLAorICAgICAgICAxMCwKKyAgICAgICAgMTk3
LAorICAgICAgICAxNSwKKyAgICAgICAgODcsCisgICAgICAgIDE4MSwKKyAgICAgICAgMzQsCisg
ICAgICAgIDEyMCwKKyAgICAgICAgNzEsCisgICAgICAgIDQyLAorICAgICAgICAxNzQsCisgICAg
ICAgIDEzMSwKKyAgICAgICAgNzIKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lciwgRW5jcnlwdGlvbktleSkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRl
VmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHRyYW5zZm9ybWVy
LT5lbmNyeXB0aW9uS2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjA3LAor
ICAgICAgICAyNTEsCisgICAgICAgIDUyLAorICAgICAgICAyMSwKKyAgICAgICAgMTAxLAorICAg
ICAgICA1MCwKKyAgICAgICAgMjMyLAorICAgICAgICA0OCwKKyAgICAgICAgMjExLAorICAgICAg
ICAxMTUsCisgICAgICAgIDExLAorICAgICAgICAxNTUsCisgICAgICAgIDEwMSwKKyAgICAgICAg
MTE2LAorICAgICAgICAxNTMsCisgICAgICAgIDcxCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXIsIFNhbHRLZXkpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNy
ZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbCh0cmFuc2Zv
cm1lci0+c2FsdEtleSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDIyOSwKKyAg
ICAgICAgMTksCisgICAgICAgIDQyLAorICAgICAgICA5MywKKyAgICAgICAgMTY0LAorICAgICAg
ICAxMDMsCisgICAgICAgIDEyMCwKKyAgICAgICAgNTMsCisgICAgICAgIDI1LAorICAgICAgICAy
NiwKKyAgICAgICAgMjM3LAorICAgICAgICAyMDQsCisgICAgICAgIDc5LAorICAgICAgICAxMzgs
CisgICAgICAgIDEzOCwKKyAgICAgICAgMjMxCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIsIEVuY3J5cHREZWNyeXB0KQoreworICAgIGF1dG8gZW5jcnlwdG9yID0g
Y3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGF1dG8gZGVjcnlwdG9yID0gY3JlYXRlVmlk
ZW9UcmFuc2Zvcm1lcihmYWxzZSk7CisgICAgYXV0byBmcmFtZSA9IFZlY3Rvcjx1aW50OF90Pjo6
ZnJvbSgxMzUsIDg5LCA1MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjAp
OworCisgICAgYXV0byBlbmNyeXB0ZWRSZXN1bHQgPSBlbmNyeXB0b3ItPnRyYW5zZm9ybShmcmFt
ZS5kYXRhKCksIGZyYW1lLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGVuY3J5cHRlZFJlc3Vs
dC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBhdXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRlZFJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5
cHRvci0+dHJhbnNmb3JtKGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOworICAg
IEVYUEVDVF9GQUxTRShkZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hl
Y2tWZWN0b3JzQXJlRXF1YWwoZGVjcnlwdGVkUmVzdWx0LnJldHVyblZhbHVlKCksIGZyYW1lKTsK
K30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlwdERlY3J5cHRLZXlJRDAp
Cit7CisgICAgYXV0byBlbmNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAg
ZW5jcnlwdG9yLT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tleSgpLCAwKTsKKworICAgIGF1dG8g
ZGVjcnlwdG9yID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihmYWxzZSk7CisgICAgZGVjcnlwdG9y
LT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tleSgpLCAwKTsKKworICAgIGF1dG8gZnJhbWUgPSBW
ZWN0b3I8dWludDhfdD46OmZyb20oMTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjksIDE1NywgMTEx
LCAxOTAsIDEzNCwgMjIwKTsKKworICAgIGF1dG8gZW5jcnlwdGVkUmVzdWx0ID0gZW5jcnlwdG9y
LT50cmFuc2Zvcm0oZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOworICAgIEVYUEVDVF9GQUxT
RShlbmNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgYXV0byBlbmNyeXB0ZWQg
PSBlbmNyeXB0ZWRSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBkZWNyeXB0
ZWRSZXN1bHQgPSBkZWNyeXB0b3ItPnRyYW5zZm9ybShlbmNyeXB0ZWQuZGF0YSgpLCBlbmNyeXB0
ZWQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGVjcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKTsKKworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGRlY3J5cHRlZFJlc3VsdC5yZXR1cm5W
YWx1ZSgpLCBmcmFtZSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5z
Zm9ybUNvdW50ZXIwKQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5z
Zm9ybWVyKCk7CisKKyAgICB1aW50OF90IGZyYW1lMVtdID0geyAxMzUsIDg5LCA1MSwgMTY2LCAy
NDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjAgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHRy
YW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVh
bChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAg
ICAgICAgMTUsCisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAg
ICAgMTk3LAorICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAg
NTEsCisgICAgICAgIDAsCisgICAgICAgIDI1NCwKKyAgICAgICAgMTcxLAorICAgICAgICAxNjgs
CisgICAgICAgIDEyNywKKyAgICAgICAgMTU4LAorICAgICAgICA5NywKKyAgICAgICAgNzAsCisg
ICAgICAgIDQsCisgICAgICAgIDIzMywKKyAgICAgICAgMTU2LAorICAgICAgICAxMzQsCisgICAg
ICAgIDIyMCwKKyAgICAgICAgNDQsCisgICAgICAgIDUwLAorICAgICAgICA5MCwKKyAgICAgICAg
MywKKyAgICAgICAgNjgsCisgICAgICAgIDIwMCwKKyAgICAgICAgMTI3LAorICAgICAgICAyMjMs
CisgICAgICAgIDYKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwg
VHJhbnNmb3JtQ291bnRlcjI1NikKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlk
ZW9UcmFuc2Zvcm1lcigpOworCisgICAgdWludDhfdCBmcmFtZTFbXSA9IHsgOCwgMTY0LCAxODks
IDE4LCA2MSwgMTE3LCAxMzIsIDQzLCAxMTcsIDE2OSwgNDIgfTsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IFZlY3Rvcjx1aW50OF90PigpOworICAg
IHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7
CisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCAyNTY7ICsrY3B0cikgeworICAgICAg
ICByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICB9Cisg
ICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0
b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDMxLAorICAgICAgICAxOTgsCisgICAgICAgIDMx
LAorICAgICAgICAyNTEsCisgICAgICAgIDE5NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwK
KyAgICAgICAgOTEsCisgICAgICAgIDUxLAorICAgICAgICAxLAorICAgICAgICAwLAorICAgICAg
ICAxMjQsCisgICAgICAgIDIxOCwKKyAgICAgICAgNjEsCisgICAgICAgIDIzLAorICAgICAgICA3
OCwKKyAgICAgICAgMTUsCisgICAgICAgIDE5MCwKKyAgICAgICAgMzUsCisgICAgICAgIDI1NSwK
KyAgICAgICAgMjUzLAorICAgICAgICAxMjAsCisgICAgICAgIDY0LAorICAgICAgICAyOCwKKyAg
ICAgICAgMTgzLAorICAgICAgICAxNzIsCisgICAgICAgIDE1NCwKKyAgICAgICAgMTQ0LAorICAg
ICAgICAxNiwKKyAgICAgICAgMjI5LAorICAgICAgICA4NywKKyAgICAgICAgNTIKKyAgICApKTsK
K30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjY1NTM2
KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7Cisg
ICAgdHJhbnNmb3JtZXItPnNldENvdW50ZXIoNjU1MzYpOworCisgICAgdWludDhfdCBmcmFtZTFb
XSA9IHsgMCwgMzMsIDI0NCwgMjQsIDIzNiwgMTU2LCAxMjcsIDgsIDQ4LCA4OCwgMjIwIH07Cisg
ICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZy
YW1lMSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAg
Y2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0b3I8
dWludDhfdD46OmZyb20oCisgICAgICAgIDQ3LAorICAgICAgICAxOTgsCisgICAgICAgIDMxLAor
ICAgICAgICAyNTEsCisgICAgICAgIDE5NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwKKyAg
ICAgICAgOTEsCisgICAgICAgIDUxLAorICAgICAgICAxLAorICAgICAgICAwLAorICAgICAgICAw
LAorICAgICAgICA5OCwKKyAgICAgICAgMjEyLAorICAgICAgICAxMzcsCisgICAgICAgIDI0NCwK
KyAgICAgICAgMjA5LAorICAgICAgICAxNiwKKyAgICAgICAgODksCisgICAgICAgIDIzNCwKKyAg
ICAgICAgMjEsCisgICAgICAgIDE3MSwKKyAgICAgICAgMTUsCisgICAgICAgIDEwNywKKyAgICAg
ICAgNTAsCisgICAgICAgIDE0NSwKKyAgICAgICAgNzMsCisgICAgICAgIDEwNywKKyAgICAgICAg
MTY1LAorICAgICAgICA0NSwKKyAgICAgICAgMTkwLAorICAgICAgICAyNSwKKyAgICAgICAgODIK
KyAgICApKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRiMzNmZmVlMzM3NDQ3NTg5ZTNlZDFlYTBiMmI1ZGFl
N2MxNDY2MjcuLmJlMTQwZmZjZmI5MWM4NjA5MDhlOGI1MDJmZWRjNWNhMjI1NGNjNjUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMC0xMS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGEgV2ViUlRDIFNGcmFtZSB0cmFuc2Zvcm0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2VicnRjL2F1ZGlvLXNm
cmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYnJ0Yy9hdWRpby1zZnJhbWUu
aHRtbDogQWRkZWQuCisKIDIwMjAtMTEtMTIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBmb3IgV2ViUlRDIHRyYW5zZm9ybXMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjcwNmI0YzkyNWFlMmE5MjMxNzY0OWUyNzg3MTVhZjZjOTViYmU4OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorCisKK1BBU1MgQXVkaW8gZXhjaGFuZ2Ugd2l0aCBTRnJhbWUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
d2VicnRjL2F1ZGlvLXNmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzNmI3NTBjMGRmNTY3ZGJlNDlj
YWVjMTJhMGE0ZmJmMjljZWQyYzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvYXVkaW8tc2ZyYW1lLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8dmlkZW8gaWQ9ImF1ZGlv
IiBhdXRvcGxheSBwbGF5c0lubGluZT48L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJv
dXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4geworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IGxvY2Fs
U3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
OiB0cnVlfSk7CisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXko
InJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAy
MzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVy
aXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygo
Zmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rp
b24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0p
OworICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm07
CisgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworICAgICAgICAg
ICAgc2VuZGVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5l
Y3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFj
a0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25L
ZXkoa2V5KTsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7
CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgICAg
ICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1l
ZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhdWRpby5zcmNPYmplY3QgPSBzdHJlYW07
CisgICAgYXdhaXQgYXVkaW8ucGxheSgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgY29uc3Qgc2VuZGVyQ291bnRlciA9IGludGVybmFscy5zZnJhbWVDb3VudGVyKHNl
bmRlci50cmFuc2Zvcm0pOworICAgICAgICBjb25zdCByZWNlaXZlckNvdW50ZXIgPSBpbnRlcm5h
bHMuc2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zvcm0pOworCisgICAgICAgIGxldCBjb3Vu
dGVyID0gMDsKKyAgICAgICAgd2hpbGUgKHJlY2VpdmVyQ291bnRlciA9PT0gaW50ZXJuYWxzLnNm
cmFtZUNvdW50ZXIocmVjZWl2ZXIudHJhbnNmb3JtKSAmJiArK2NvdW50ZXIgPCAxMDApCisgICAg
ICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwg
NTApKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaW50ZXJuYWxzLnNmcmFtZUNvdW50ZXIo
cmVjZWl2ZXIudHJhbnNmb3JtKSwgcmVjZWl2ZXJDb3VudGVyLCAicmVjZWl2ZXIiKTsKKyAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoaW50ZXJuYWxzLnNmcmFtZUNvdW50ZXIoc2VuZGVyLnRyYW5z
Zm9ybSksIHNlbmRlckNvdW50ZXIsICJzZW5kZXIiKTsKKyAgICB9Cit9LCAiQXVkaW8gZXhjaGFu
Z2Ugd2l0aCBTRnJhbWUiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1s
Pgo=
</data>
<flag name="commit-queue"
          id="430752"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414019</attachid>
            <date>2020-11-13 02:28:12 -0800</date>
            <delta_ts>2020-11-13 02:47:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218752-20201113112809.patch</filename>
            <type>text/plain</type>
            <size>79189</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uYjc1M2M2N2ExY2UwZTg5NjVkZjJhODQ1ZTkxOWY2
NWE1Y2RlNzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRoYXQgaW1wbGVtZW50cyB0
aGUgU0ZyYW1lIGZvcm1hdC4KKyAgICAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGlzIGEgUlRD
UnRwVHJhbnNmb3JtIHRoYXQgY2FuIGJlIHNldCB0byBSVENSdHAgc2VuZGVyIGFuZCByZWNlaXZl
ciBvYmplY3RzLgorICAgICAgICBBUEkgc3VwcG9ydHMgc2V0dGluZyBlbmNyeXB0aW9uIGtleS4K
KyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gcmV1c2UgV2ViQ3J5cHRvIHJvdXRpbmVzIGZv
ciBlbmNyeXB0aW9uL2RlY3J5cHRpb24uCisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxl
bmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlWKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1
dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5
cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRl
Y3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUpOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcml2
ZUhES0ZTSEEyNTZCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjMjk5ZDgzMGNiNjFlOTQ0NjlkOGU2MmI3MmJkODU3ZTMxNDhjYmIzLi45
NGQwNjJiZjk5M2QxYjRjN2M0NDQyNGZhNGU5MTY1N2Y0MDA3ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNDAyLDYgKzQwMiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitU
cmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
NjliNjg2MWI2YWZhMWQwYWMwOTdiMWJkMzEwNjQ0ODNlZWM3NTE5Li4zOTY1ZTZjZDA1ZDQyZjM2
NTBiMjU3ZTM5Nzc0OTU0ZjIwNWI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIzNiw2ICsyMzYsNyBAQCAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZGI2NzEwMDg4ZWYyNDU0NDgzMDI1ZTAxZTRhYTdjZTVkZmVjMzA0Yy4uMjZkM2Mx
NGEyYTY4Yjg5MTY2OWViMGQ1NjAyN2NlNGY1Y2U3M2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3MDUsNiArMTcwNSw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFJlY2VpdmVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlhZTQwYzE4Nzk2
ODkzODE3Yjg0MTY1MjdjMjQwYWY3MjNlOGYxMTYuLmE1ZmI0NWI4MGZiMDFmZDk5MGI0NWY2NmM3
NWIyZGFjNTc5Zjc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYzLDYg
KzI2Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjMwZWZkZTIyMTkzZDAwMjQyMTM0MWJhZGY1Mzc4OTE1YjY4NDEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSVENSdHBTRnJhbWVUcmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybSgpCisgICAgOiBtX3RyYW5zZm9ybWVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpj
cmVhdGUoKSkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJh
bnNmb3JtKCkKK3sKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRp
b25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5h
bGdvcml0aG0oKTsKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxn
b3JpdGhtPihhbGdvcml0aG0pKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIkludmFsaWQga2V5Il9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdURjo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9
ICJIS0RGIikgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8m
IHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNlLnNldHRs
ZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5SWQpKTsK
K30KKwordWludDY0X3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtZXItPmNvdW50ZXIoKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAgbV90cmFuc2Zvcm1lci0+
c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5zZm9ybWVyLT5z
ZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1h
YmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0g
bWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBm
cmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBhIGZyYW1lIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJl
dHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisKKyAg
ICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZSkpOwor
ICAgIH0pOworfQorCisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAg
aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVy
KGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
Ojp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYx
NGJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENy
eXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CisgICAgflJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSgpOworCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9w
dGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9p
ZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmlu
YWw7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBm
aW5hbDsKKworICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKKyAgICB2
b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7
CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4
N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2lu
ZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CisgICAgY29uc3RydWN0b3IoKTsKKwor
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBtaXNzaW5nIG1ldGhvZHMuCisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHJhdGNo
ZXRFbmNyeXB0aW9uS2V5KCk7CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHNldFNpZ25pbmdL
ZXkoQ3J5cHRvS2V5IGtleSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MGQ4OTFmMzQ2NzY2M2NmYWM4OGJmMjE5ZTA2ZGEyOTc2Y2I0NmNjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1aW50OF90KiBk
YXRhLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMZW5ndGg7ICsraSkKKyAgICAgICAgKmRhdGErKyA9ICh2
YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0gMSAtIGkpICogOCkpICYgMHhmZjsKK30KKworc3RhdGlj
IGlubGluZSB1aW50OF90IGxlbmd0aE9mVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIHVp
bnQ4X3QgbGVuZ3RoID0gMDsKKyAgICBkbyB7CisgICAgICAgICsrbGVuZ3RoOworICAgICAgICB2
YWx1ZSA9IHZhbHVlID4+IDg7CisgICAgfSB3aGlsZSAodmFsdWUpOworICAgIHJldHVybiBsZW5n
dGg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBjb21wdXRlRmlyc3RIZWFkZXJCeXRlKHVp
bnQ2NF90IGtleUlkLCB1aW50NjRfdCBjb3VudGVyKQoreworICAgIHVpbnQ4X3QgdmFsdWUgPSAw
OworICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChjb3VudGVyKSAtIDEpIDw8IDQ7CisgICAg
aWYgKGtleUlkIDwgOCkKKyAgICAgICAgdmFsdWUgfD0ga2V5SWQ7CisgICAgZWxzZSB7CisgICAg
ICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChrZXlJZCkgLSAxKTsKKyAgICAgICAgdmFsdWUg
fD0gMSA8PCAzOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVJVih1aW50NjRfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNhbHRLZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGl2KDE2KTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSAo
Y291bnRlciA+PiAoKDcgLSBpKSAqIDgpKSAmIDB4ZmY7CisgICAgICAgIGl2W2ldID0gdmFsdWUg
XiBzYWx0S2V5W2ldOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA4OyBpIDwgMTY7ICsr
aSkKKyAgICAgICAgaXZbaV0gPSBzYWx0S2V5W2ldOworICAgIHJldHVybiBpdjsKK30KKworc3Ry
dWN0IFNGcmFtZUhlYWRlckluZm8geworICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBr
ZXlJZDsKKyAgICB1aW50NjRfdCBjb3VudGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXV0byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qg
a2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5
dGUgPSAqZGF0YSsrOworCisgICAgLy8gU2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoZmlyc3RCeXRl
ICYgMHg4MCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVpbnQ4X3QgY291bnRlckxlbmd0
aCA9ICgoZmlyc3RCeXRlID4+IDQpICYgMHgwNykgKyAxOworCisgICAgaWYgKHNpemUgPCBjb3Vu
dGVyTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChmaXJzdEJ5dGUg
JiAweDA4KSB7CisgICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoID0gKGZpcnN0Qnl0ZSAmIDB4MDcp
ICsgMTsKKyAgICAgICAgaWYgKHNpemUgPCBjb3VudGVyTGVuZ3RoICsga2V5TGVuZ3RoICsgMSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgd2hpbGUgKGtleUxlbmd0aC0tKQor
ICAgICAgICAgICAga2V5SWQgPSAoa2V5SWQgPDwgOCkgfCAqZGF0YSsrOworICAgICAgICB3aGls
ZSAoY291bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9IChjb3VudGVyIDw8IDgp
IHwgKmRhdGErKzsKKyAgICB9IGVsc2UgeworICAgICAgICBrZXlJZCA9IGZpcnN0Qnl0ZSAmIDB4
MDc7CisgICAgICAgIHdoaWxlIChjb3VudGVyTGVuZ3RoLS0pCisgICAgICAgICAgICBjb3VudGVy
ID0gKGNvdW50ZXIgPDwgOCkgfCAqZGF0YSsrOworICAgIH0KKyAgICB1aW50OF90IGhlYWRlclNp
emUgPSBkYXRhIC0gc3RhcnQ7CisgICAgcmV0dXJuIFNGcmFtZUhlYWRlckluZm8geyBoZWFkZXJT
aXplLCBrZXlJZCwgY291bnRlciB9OworfQorCitSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkpOworfQorCitSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKQoreworfQorCitSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCkKK3sKKyAg
ICBhdXRvIHNhbHRLZXlSZXN1bHQgPSBjb21wdXRlU2FsdEtleShyYXdLZXkpOworICAgIGlmIChz
YWx0S2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2FsdEtleVJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0
ID0gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGF1dGhlbnRpY2F0
aW9uS2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXV0aGVudGljYXRp
b25LZXlSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBlbmNyeXB0aW9uS2V5
UmVzdWx0ID0gY29tcHV0ZUVuY3J5cHRpb25LZXkocmF3S2V5KTsKKyAgICBpZiAoZW5jcnlwdGlv
bktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY3J5cHRpb25LZXlS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2tleUxvY2spOworCisgICAgbV9zYWx0S2V5ID0gc2FsdEtleVJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICBtX2F1dGhlbnRpY2F0aW9uS2V5ID0gYXV0aGVudGljYXRpb25LZXlSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgbV9lbmNyeXB0aW9uS2V5ID0gZW5jcnlwdGlv
bktleVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIGlmIChrZXlJZCkKKyAgICAg
ICAgbV9rZXlJZCA9ICprZXlJZDsKKworICAgIG1faGFzS2V5ID0gdHJ1ZTsKKyAgICByZXR1cm4g
eyB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKKworICAgIGF1dG8gaGVhZGVyID0gcGFyc2VT
RnJhbWVIZWFkZXIoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworCisgICAgaWYgKCFoZWFkZXIpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgaWYg
KGhlYWRlci0+Y291bnRlciA8PSBtX2NvdW50ZXIgJiYgbV9jb3VudGVyKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICBtX2NvdW50ZXIgPSBoZWFk
ZXItPmNvdW50ZXI7CisKKyAgICBpZiAoaGVhZGVyLT5rZXlJZCAhPSBtX2tleUlkKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2VhcmNoIGZvciBrZXlzLgorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBDb21wdXRl
IHNpZ25hdHVyZQorICAgIGF1dG8qIHRyYW5zbWl0dGVkU2lnbmF0dXJlID0gZnJhbWVEYXRhICsg
ZnJhbWVTaXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byBzaWduYXR1cmUgPSBj
b21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShmcmFtZURhdGEsIGZyYW1lU2l6ZSAgLSBtX2F1
dGhlbnRpY2F0aW9uU2l6ZSwgbV9hdXRoZW50aWNhdGlvbktleSk7CisgICAgZm9yIChzaXplX3Qg
Y3B0ciA9IDA7IGNwdHIgPCBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsgKytjcHRyKSB7CisgICAgICAg
IGlmIChzaWduYXR1cmVbY3B0cl0gIT0gdHJhbnNtaXR0ZWRTaWduYXR1cmVbY3B0cl0pIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHJhdGNoZXRpbmcuCisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIERlY3J5cHQgZGF0YQorICAgIGF1dG8gaXYgPSBjb21wdXRlSVYobV9jb3Vu
dGVyLCBtX3NhbHRLZXkpOworICAgIGF1dG8gZGF0YVNpemUgPSBmcmFtZVNpemUgLSBoZWFkZXIt
PnNpemUgLSBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRE
YXRhKGZyYW1lRGF0YSArIGhlYWRlci0+c2l6ZSwgZGF0YVNpemUsIGl2LCBtX2VuY3J5cHRpb25L
ZXkpOworCisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXpl
X3QgZnJhbWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1f
Y291bnRlciwgbV9zYWx0S2V5KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2Zvcm1lZERh
dGE7CisgICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBNYXhIZWFkZXJTaXpl
ICsgbV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBoZWFkZXIuCisgICAgc2l6
ZV90IGhlYWRlclNpemUgPSAxOworICAgIHRyYW5zZm9ybWVkRGF0YVswXSA9IGNvbXB1dGVGaXJz
dEhlYWRlckJ5dGUobV9rZXlJZCwgbV9jb3VudGVyKTsKKyAgICBpZiAobV9rZXlJZCA+PSA4KSB7
CisgICAgICAgIGF1dG8ga2V5SWRMZW5ndGggPSBsZW5ndGhPZlVJbnQ2NChtX2tleUlkKTsKKyAg
ICAgICAgd3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1f
a2V5SWQsIGtleUlkTGVuZ3RoKTsKKyAgICAgICAgaGVhZGVyU2l6ZSArPSBrZXlJZExlbmd0aDsK
KyAgICB9CisgICAgYXV0byBjb3VudGVyTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9jb3VudGVy
KTsKKyAgICB3cml0ZVVJbnQ2NCh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwg
bV9jb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKKyAgICBoZWFkZXJTaXplICs9IGNvdW50ZXJMZW5n
dGg7CisKKyAgICB0cmFuc2Zvcm1lZERhdGEucmVzaXplKGZyYW1lU2l6ZSArIGhlYWRlclNpemUg
KyBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7CisKKyAgICAvLyBGaWxsIGVuY3J5cHRlZCBkYXRhCisg
ICAgYXV0byBlbmNyeXB0ZWREYXRhID0gZW5jcnlwdERhdGEoZnJhbWVEYXRhLCBmcmFtZVNpemUs
IGl2LCBtX2VuY3J5cHRpb25LZXkpOworICAgIEFTU0VSVCghZW5jcnlwdGVkRGF0YS5oYXNFeGNl
cHRpb24oKSk7CisgICAgaWYgKGVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBlbmNyeXB0ZWREYXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHN0ZDo6bWVt
Y3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBlbmNyeXB0ZWREYXRhLnJl
dHVyblZhbHVlKCkuZGF0YSgpLCBmcmFtZVNpemUpOworCisgICAgLy8gRmlsbCBzaWduYXR1cmUK
KyAgICBhdXRvIHNpZ25hdHVyZSA9IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKHRyYW5z
Zm9ybWVkRGF0YS5kYXRhKCksIGZyYW1lU2l6ZSArIGhlYWRlclNpemUsIG1fYXV0aGVudGljYXRp
b25LZXkpOworICAgIHN0ZDo6bWVtY3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBmcmFtZVNp
emUgKyBoZWFkZXJTaXplLCBzaWduYXR1cmUuZGF0YSgpLCBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7
CisKKyAgICArK21fY291bnRlcjsKKworICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7Cit9CisK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnRy
YW5zZm9ybShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoIW1f
aGFzS2V5KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIHJldHVybiBtX2lzU2VuZGluZyA/IGVuY3J5cHRGcmFtZShkYXRhLCBzaXplKSA6IGRl
Y3J5cHRGcmFtZShkYXRhLCBzaXplKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVT
YWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIE5vdFN1cHBvcnRl
ZEVycm9yOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JikKK3sKKyAgICByZXR1cm4gTm90U3VwcG9ydGVkRXJyb3I7Cit9CisKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0aW9u
S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIE5vdFN1cHBvcnRlZEVy
cm9yOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpkZWNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBOb3RTdXBw
b3J0ZWRFcnJvcjsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4g
Tm90U3VwcG9ydGVkRXJyb3I7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoY29uc3QgdWludDhfdCosIHNp
emVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4geyB9OworfQorI2Vu
ZGlmIC8vICFQTEFURk9STShDT0NPQSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzQ1ODBlZTg2OTUwNjY2Zjg4MTY5Yjk5ODk0M2MzMTYyZDU4MWRjNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXIuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDcnlwdG9LZXk7CisKK2NsYXNzIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CitwdWJsaWM6CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcj4gY3JlYXRl
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgflJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCk7CisKKyAg
ICB2b2lkIHNldElzU2VuZGluZyhib29sKTsKKyAgICB2b2lkIHNldElzUHJvY2Vzc2luZ0F1ZGlv
KGJvb2wpOworCisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RW5jcnlw
dGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSwgT3B0aW9uYWw8dWludDY0X3Q+
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5z
Zm9ybShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKworICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgYXV0aGVudGljYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX2F1dGhlbnRpY2F0aW9uS2V5
OyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBlbmNyeXB0aW9uS2V5KCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNyeXB0aW9uS2V5OyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0
S2V5KCkgY29uc3QgeyByZXR1cm4gbV9zYWx0S2V5OyB9CisKKyAgICB1aW50NjRfdCBjb3VudGVy
KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9CisgICAgdm9pZCBzZXRDb3VudGVyKHVpbnQ2
NF90IGNvdW50ZXIpIHsgbV9jb3VudGVyID0gY291bnRlcjsgfQorCitwcml2YXRlOgorICAgIFdF
QkNPUkVfRVhQT1JUIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCk7CisKKyAgICBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHRGcmFtZShjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsK
KyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGVuY3J5cHRGcmFtZShjb25zdCB1aW50
OF90Kiwgc2l6ZV90KTsKKworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0
ZVNhbHRLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
Jik7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlRW5jcnlwdGlvbktl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gZW5jcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpOworICAgIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpOworICAg
IFZlY3Rvcjx1aW50OF90PiBjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShjb25zdCB1aW50
OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7CisKKyAgICBMb2NrIG1f
a2V5TG9jazsKKyAgICBib29sIG1faGFzS2V5IHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8dWludDhf
dD4gbV9hdXRoZW50aWNhdGlvbktleTsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9lbmNyeXB0aW9u
S2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBtX3NhbHRLZXk7CisKKyAgICBib29sIG1faXNTZW5k
aW5nIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX2F1dGhlbnRpY2F0aW9uU2l6ZSB7IDEwIH07
CisgICAgdWludDY0X3QgbV9rZXlJZCB7IDAgfTsKKyAgICB1aW50NjRfdCBtX2NvdW50ZXIgeyAw
IH07Cit9OworCitpbmxpbmUgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNTZW5k
aW5nKGJvb2wgaXNTZW5kaW5nKQoreworICAgIG1faXNTZW5kaW5nID0gaXNTZW5kaW5nOworfQor
CitpbmxpbmUgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVk
aW8oYm9vbCBpc1Byb2Nlc3NpbmdBdWRpbykKK3sKKyAgICBtX2F1dGhlbnRpY2F0aW9uU2l6ZSA9
IGlzUHJvY2Vzc2luZ0F1ZGlvID8gNCA6IDEwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Q29jb2EuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjM2Q0MjQ4MDJlMTkzY2FkNzBkMjFiYzIxMzc5Zjg1MGZi
MzU3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCkBAIC0wLDAgKzEsNzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJM
RShXRUJfUlRDKQorCisjaW5jbHVkZSAiQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCIKKyNpbmNsdWRl
IDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29t
cHV0ZVNhbHRLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCit7CisgICAgdWludDhf
dCB1c2FnZVtdID0gIlNGcmFtZVNhbHRLZXkiOworICAgIHJldHVybiBkZXJpdmVIREtGU0hBMjU2
Qml0cyhyYXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEoKSArIDE2LCByYXdLZXkuc2l6ZSgp
IC0gMTYsIHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMTI4KTsKK30KKworRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUF1dGhlbnRp
Y2F0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQoreworICAgIHVpbnQ4X3Qg
dXNhZ2VbXSA9ICJTRnJhbWVBdXRoZW50aWNhdGlvbktleSI7CisgICAgcmV0dXJuIGRlcml2ZUhE
S0ZTSEEyNTZCaXRzKHJhd0tleS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJhd0tl
eS5zaXplKCkgLSAxNiwgdXNhZ2UsIHNpemVvZih1c2FnZSkgLSAxLCAyNTYpOworfQorCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRl
RW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sKKyAgICB1aW50
OF90IHVzYWdlW10gPSAiU0ZyYW1lRW5jcnlwdGlvbktleSI7CisgICAgcmV0dXJuIGRlcml2ZUhE
S0ZTSEEyNTZCaXRzKHJhd0tleS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJhd0tl
eS5zaXplKCkgLSAxNiwgdXNhZ2UsIHNpemVvZih1c2FnZSkgLSAxLCAxMjgpOworfQorCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCit7CisgICAgcmV0dXJuIHRyYW5z
Zm9ybUFFU19DVFIoa0NDRGVjcnlwdCwgaXYsIGl2LnNpemUoKSwga2V5LCBkYXRhLCBzaXplKTsK
K30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
cjo6ZW5jcnlwdERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KQoreworICAgIHJl
dHVybiB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0VuY3J5cHQsIGl2LCBpdi5zaXplKCksIGtleSwgZGF0
YSwgc2l6ZSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KQoreworICAgIFZlY3Rvcjx1aW50OF90
PiByZXN1bHQoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAgIENDSG1hYyhrQ0NIbWFjQWxn
U0hBMjU2LCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpLCBkYXRhLCBzaXplLCByZXN1bHQuZGF0YSgp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNjRhNWQ1ZDRkNDcwNjQ2
OTNjMDVmZjg3MjFlYzVlMzdiMDUzOTU2NS4uMTBkMDlmMjc0YWY1OWFlMThiMGI4MTUwMDc4MWU1
ZmM0MDQ1YThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE2Myw2ICsxNjMsOCBAQCBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZVRyYW5zcG9ydC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNl
RXZlbnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAorTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCitNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCkBAIC0zMzE5LDYgKzMzMjEs
NyBAQCBKU1JUQ1J0cEhlYWRlckV4dGVuc2lvblBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFBhcmFt
ZXRlcnMuY3BwCiBKU1JUQ1J0cFJlY2VpdmVyLmNwcAogSlNSVENSdHBSdHhQYXJhbWV0ZXJzLmNw
cAorSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiBKU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNw
cAogSlNSVENSdHBTZW5kZXIuY3BwCiBKU1JUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJjZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJhZDMzYTk1NTE5MmQ5MDc2ZWIzZDhjMTYyY2Zl
Mzg2MjJkZmIxOGMuLmY1MDJlNzFjNGY4MWUzZmU2NWQ0MGExMDE5ODIyZjNiYmQ1MzFjNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtODksNiArODksNyBAQCBNb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbQogTW9kdWxlcy9hcHBsZXBheS9wYXlt
ZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAogTW9kdWxlcy9hc3luYy1jbGlw
Ym9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tCiBNb2R1bGVzL2FzeW5jLWNsaXBi
b2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0KK01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKIE1vZHVsZXMvcGx1Z2lucy9RdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5tbQogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBs
YWNlbWVudC5jcHAKIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29j
b2EubW0KQEAgLTEyOCw2ICsxMjksNyBAQCBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJlZ2lz
dHJ5TWFjLmNwcAogY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAKIGNyeXB0by9tYWMvQ3J5
cHRvS2V5TWFjLmNwcAogY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwCitjcnlwdG8vbWFj
L0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcAogY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5
V3JhcE1hYy5tbQogZG9tL0RhdGFUcmFuc2Zlck1hYy5tbQogZG9tL2lvcy9Nb3VzZUV2ZW50SU9T
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGM5OGQxNmE5MWI4YzFjZDA0ZjcwYWRjZWU2ZmRkZmVhNGQ5MTRkMDMuLmZkNGJi
NWE1ZmU5ZjRhZWVjOTYxZTE0ZmUxNWYxMGIxN2E1Njg1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDksNiArMTEwOSw4
IEBACiAJCTQxODFDNUQ2MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVENTI1
NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovOyB9OwogCQk0MTgxQzVE
NzI1NTVDNDlBMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVEMzI1NTVDMUIxMDBBRUIw
RkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87IH07CiAJCTQxODFDNjM5MjU1QUU5MEYw
MEFFQjBGRiAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOTIxQzFGODU1NTAwNjFEQkU0IC8qIEpT
TW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87IH07CisJCTQxODFDNjQ4MjU1QjRDMjgwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNDE4MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4
MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovOyB9Owog
CQk0MTgyMDU0NzFFNTNFOThDMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYy
MjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0MTgyNkJGMjIzRkI1OTc3MDBCOTIyQjEgLyogRG9jdW1lbnRJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTgyNkJGMTIzRkI1OTcwMDBCOTIyQjEgLyogRG9jdW1lbnRJZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4NEY1MTYxRUFGMDVB
ODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODRGNTE1MUVBRjA1OTgwMEYxOEJGMCAvKiBPcmll
bnRhdGlvbk5vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTc3MDIsNiArNzcwNCwxMiBAQAogCQk0MTgxQzVEMzI1NTVDMUIxMDBBRUIw
RkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzYzNjI1NUFFMjYxMDBBRUIwRkYg
LyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAv
KiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTgxQzY0MTI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTgxQzY0MjI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDMyNTVCNEMyNzAwQUVC
MEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTgyMDU0NTFFNTNDOENEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODIwNTQ4MUU1M0VBQUQwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0NvbnRyb2xsZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgyNkJGMTIzRkI1OTcwMDBCOTIy
QjEgLyogRG9jdW1lbnRJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERvY3VtZW50SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzczNSw2ICs3NzQzLDggQEAKIAkJNDE5QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRM
aW5rU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlzaXRl
ZExpbmtTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJDMkREMTY4
NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5QkU3NTIxQkM3RjNEQjAwRTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTlEOTMwNTI1NUU4NDI3MDBEQTE5ODQgLyog
Q3J5cHRvVXRpbGl0aWVzQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvVXRpbGl0aWVzQ29j
b2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE5RDkzMDcyNTVFODQyODAwREEx
OTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0
b1V0aWxpdGllc0NvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5RkFG
QUQxQUJBQkNENTAwNUIzNTcyIC8qIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxl
U3RyZWFtRGVmYXVsdFJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFB
MDIzRUQxQTM5REI3OTAwRjcyMkNGIC8qIFJlYWRhYmxlU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNzA4OSw2ICsxNzA5OSwxMiBAQAogCQkJCTQxM0M4QjJFMjU1MkYyN0IwMEU2NTA1NSAv
KiBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmggKi8sCiAJCQkJNDE0QUQzRkMyMTQ5ODQyMDAw
NTIxNjc2IC8qIFJUQ1J0cFNlbmRQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDE0QUQzRkUyMTQ5ODQy
MDAwNTIxNjc2IC8qIFJUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbCAqLywKKwkJCQk0MTgxQzY0NTI1
NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCAqLywKKwkJCQk0MTgx
QzY0NDI1NUI0QzI3MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggKi8sCisJCQkJ
NDE4MUM2NDMyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgKi8s
CisJCQkJNDE4MUM2NDEyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
LmNwcCAqLywKKwkJCQk0MTgxQzY0MjI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCAqLywKKwkJCQk0MTgxQzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAgKi8sCiAJCQkJNDE1RTFCQjYyMTUwMTUyQTAwMjJEQTk2
IC8qIFJUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJjZS5oICovLAogCQkJCTQxNUUxQkI3MjE1MDE1
MzAwMDIyREE5NiAvKiBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsICovLAogCQkJCTVF
NUUyQjEwMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5jcHAgKi8sCkBAIC0y
ODI1NSw2ICsyODI3MSw4IEBACiAJCQkJNTc1MEE5N0ExRTY5MTYxNjAwNzA1QzRBIC8qIENyeXB0
b0tleUVDTWFjLmNwcCAqLywKIAkJCQlFMTlBQzNGODE4MjU2NkY3MDAzNDk0MjYgLyogQ3J5cHRv
S2V5TWFjLmNwcCAqLywKIAkJCQlFMTY0RkFBNDE4MzE1RTFBMDBEQjRFNjEgLyogQ3J5cHRvS2V5
UlNBTWFjLmNwcCAqLywKKwkJCQk0MTlEOTMwNzI1NUU4NDI4MDBEQTE5ODQgLyogQ3J5cHRvVXRp
bGl0aWVzQ29jb2EuY3BwICovLAorCQkJCTQxOUQ5MzA1MjU1RTg0MjcwMERBMTk4NCAvKiBDcnlw
dG9VdGlsaXRpZXNDb2NvYS5oICovLAogCQkJCUUxOERGMzM2MThBQUYxNEQwMDc3M0U1OSAvKiBT
ZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpA
QCAtMzQwOTMsNiArMzQxMTEsOCBAQAogCQkJCTQxM0M4QjM1MjU1MkYyN0QwMEU2NTA1NSAvKiBS
VENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVFMkM0MzYx
MUJDRUUzMjMwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
M0M4QjMzMjU1MkYyN0QwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmggaW4g
SGVhZGVycyAqLywKKwkJCQk0MTgxQzY0QTI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYg
LyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFNUUyQjE0
MUNGQzNFNzUwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzFFQjU0REYxRTdEQzc0NDAwQzE2MjNCIC8qIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDOEIzNDI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRw
VHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCA1YWU3MzRkOTA5MGMwZDBmNzU0NGQxNGY2
Y2JiZDMxMzEzNGYxMmI4Li4xNGQ2ZGY0NzIxODIxY2U1OTEyZjE1OGVjNDEwMDMyOWYzNmJlMDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCkBAIC0yMTksNiArMjE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKFJU
Q1BlZXJDb25uZWN0aW9uKSBcCiAgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkg
XAogICAgIG1hY3JvKFJUQ1J0cFJlY2VpdmVyKSBcCisgICAgbWFjcm8oUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtKSBcCiAgICAgbWFjcm8oUlRDUnRwU2VuZGVyKSBcCiAgICAgbWFjcm8oUlRDUnRwVHJh
bnNjZWl2ZXIpIFwKICAgICBtYWNybyhSVENSdHBUcmFuc2Zvcm0pIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCmlu
ZGV4IGNjNDFkYTY1YjBkYWM5YzhiNWRiMWEwZTQyZmUwMjAwYjUyOGVhMzguLjc1NzllNDBhZTM3
Y2FjZTQyMmEwNmUzZmVjNWVlZTY0ZjAyZjFhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcApAQCAtMzEsMTAw
ICszMSwyMyBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmgiCiAj
aW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgiCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNy
eXB0by5oPgorI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3Jt
QUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291
bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBy
ZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNrIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBp
cyBmaXhlZC4KLSAgICAvLyBjb3VudGVyID0gbm9uY2UgKyBjb3VudGVyCi0gICAgLy8gQ29tbW9u
Q3J5cHRvIGN1cnJlbnRseSBjYW4gbmVpdGhlciByZXNldCB0aGUgY291bnRlciBub3IgZGV0ZWN0
IG92ZXJmbG93IG9uY2UgdGhlIGNvdW50ZXIgcmVhY2hlcyBpdHMgbWF4IHZhbHVlIHJlc3RyaWN0
ZWQKLSAgICAvLyBieSB0aGUgY291bnRlckxlbmd0aC4gSXQgdGhlbiBpbmNyZW1lbnRzIHRoZSBu
b25jZSB3aGljaCBzaG91bGQgc3RheSBzYW1lIGZvciB0aGUgd2hvbGUgb3BlcmF0aW9uLiBUbyBy
ZW1lZHkgdGhpcyBpc3N1ZSwKLSAgICAvLyB3ZSBkZXRlY3QgdGhlIG92ZXJmbG93IGFoZWFkIGFu
ZCBkaXZpZGUgdGhlIG9wZXJhdGlvbiBpbnRvIHR3byBwYXJ0cy4KLSAgICBzaXplX3QgbnVtYmVy
T2ZCbG9ja3MgPSBkYXRhLnNpemUoKSAlIGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGEuc2l6ZSgp
IC8ga0NDQmxvY2tTaXplQUVTMTI4ICsgMSA6IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVT
MTI4OwotCi0gICAgLy8gRGV0ZWN0IGxvb3AKLSAgICBpZiAoY291bnRlckxlbmd0aCA8IHNpemVv
ZihzaXplX3QpICogOCAmJiBudW1iZXJPZkJsb2NrcyA+IChzdGF0aWNfY2FzdDxzaXplX3Q+KDEp
IDw8IGNvdW50ZXJMZW5ndGgpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKLQotICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKLSAg
ICBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXIgY291bnRlckJsb2Nr
SGVscGVyKGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOwotICAgIHNpemVfdCBjYXBhY2l0eSA9IGNv
dW50ZXJCbG9ja0hlbHBlci5jb3VudFRvT3ZlcmZsb3dTYXR1cmF0aW5nKCk7Ci0KLSAgICAvLyBE
aXZpZGUgZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3NhcnkuCi0gICAgc2l6ZV90IGhlYWRT
aXplID0gZGF0YS5zaXplKCk7Ci0gICAgaWYgKGNhcGFjaXR5IDwgbnVtYmVyT2ZCbG9ja3MpCi0g
ICAgICAgIGhlYWRTaXplID0gY2FwYWNpdHkgKiBrQ0NCbG9ja1NpemVBRVMxMjg7Ci0KLSAgICAv
LyBmaXJzdCBwYXJ0OiBjb21wdXRlIHRoZSBmaXJzdCBuPWNhcGFjaXR5IGJsb2NrcyBvZiBkYXRh
IGlmIGNhcGFjaXR5IGlzIGluc3VmZmljaWVudC4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3Vs
dC4KLSAgICBDQ0NyeXB0b3JSZWYgY3J5cHRvcjsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVz
ID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdv
cml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCBjb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5
LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOwotICAgIGlm
IChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9Owot
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGhlYWQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0
b3IsIGhlYWRTaXplLCB0cnVlKSk7Ci0KLSAgICBzaXplX3QgYnl0ZXNXcml0dGVuOwotICAgIHN0
YXR1cyA9IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLmRhdGEoKSwgaGVhZFNpemUsIGhl
YWQuZGF0YSgpLCBoZWFkLnNpemUoKSwgJmJ5dGVzV3JpdHRlbik7Ci0gICAgaWYgKHN0YXR1cykK
LSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICB1aW50
OF90KiBwID0gaGVhZC5kYXRhKCkgKyBieXRlc1dyaXR0ZW47Ci0gICAgc3RhdHVzID0gQ0NDcnlw
dG9yRmluYWwoY3J5cHRvciwgcCwgaGVhZC5lbmQoKSAtIHAsICZieXRlc1dyaXR0ZW4pOwotICAg
IHAgKz0gYnl0ZXNXcml0dGVuOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ocCA8PSBoZWFkLmVuZCgpKTsKLSAgICBoZWFkLnNocmluayhwIC0gaGVhZC5iZWdp
bigpKTsKLQotICAgIENDQ3J5cHRvclJlbGVhc2UoY3J5cHRvcik7Ci0KLSAgICBpZiAoY2FwYWNp
dHkgPj0gbnVtYmVyT2ZCbG9ja3MpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOwotCi0g
ICAgLy8gc2Vjb25kIHBhcnQ6IGNvbXB1dGUgdGhlIHJlbWFpbmluZyBkYXRhIGFuZCBhcHBlbmQg
dGhlbSB0byB0aGUgaGVhZC4KLSAgICAvLyByZXNldCBjb3VudGVyCi0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlbWFpbmluZ0NvdW50ZXIgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291bnRlclZlY3RvckFm
dGVyT3ZlcmZsb3coKTsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JDcmVhdGVXaXRoTW9kZShvcGVy
YXRpb24sIGtDQ01vZGVDVFIsIGtDQ0FsZ29yaXRobUFFUzEyOCwgY2NOb1BhZGRpbmcsIHJlbWFp
bmluZ0NvdW50ZXIuZGF0YSgpLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpLCAwLCAwLCAwLCBrQ0NN
b2RlT3B0aW9uQ1RSX0JFLCAmY3J5cHRvcik7Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICBzaXplX3QgdGFpbFNpemUg
PSBkYXRhLnNpemUoKSAtIGhlYWRTaXplOwotICAgIFZlY3Rvcjx1aW50OF90PiB0YWlsKENDQ3J5
cHRvckdldE91dHB1dExlbmd0aChjcnlwdG9yLCB0YWlsU2l6ZSwgdHJ1ZSkpOwotCi0gICAgc3Rh
dHVzID0gQ0NDcnlwdG9yVXBkYXRlKGNyeXB0b3IsIGRhdGEuZGF0YSgpICsgaGVhZFNpemUsIHRh
aWxTaXplLCB0YWlsLmRhdGEoKSwgdGFpbC5zaXplKCksICZieXRlc1dyaXR0ZW4pOwotICAgIGlm
IChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9Owot
Ci0gICAgcCA9IHRhaWwuZGF0YSgpICsgYnl0ZXNXcml0dGVuOwotICAgIHN0YXR1cyA9IENDQ3J5
cHRvckZpbmFsKGNyeXB0b3IsIHAsIHRhaWwuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKLSAg
ICBwICs9IGJ5dGVzV3JpdHRlbjsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKHAgPD0gdGFpbC5lbmQoKSk7Ci0gICAgdGFpbC5zaHJpbmsocCAtIHRhaWwuYmVn
aW4oKSk7Ci0KLSAgICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOwotCi0gICAgaGVhZC5hcHBl
bmRWZWN0b3IodGFpbCk7Ci0gICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7Ci19Ci0KIEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcyYgcGFyYW1ldGVycywgY29uc3Qg
Q3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewog
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tT
aXplQUVTMTI4KTsKLSAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NFbmNyeXB0LCBwYXJh
bWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgcGxh
aW5UZXh0KTsKKyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NFbmNyeXB0LCBwYXJhbWV0
ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgcGxhaW5U
ZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNpemUoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVT
JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICAgIEFTU0VS
VChwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4
KTsKLSAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNv
dW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgY2lwaGVyVGV4dCk7
CisgICAgQVNTRVJUKHBhcmFtZXRlcnMuY291bnRlclZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9j
a1NpemVBRVMxMjgpOworICAgIHJldHVybiB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0RlY3J5cHQsIHBh
cmFtZXRlcnMuY291bnRlclZlY3RvcigpLCBwYXJhbWV0ZXJzLmxlbmd0aCwga2V5LmtleSgpLCBj
aXBoZXJUZXh0LmRhdGEoKSwgY2lwaGVyVGV4dC5zaXplKCkpOwogfQogCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAKaW5kZXgg
NmNhYTVmM2NiZTUzOWZlNjU0Y2I3YTlmZWZlZDk0YjlhNzJkNTczMS4uYjQxN2I3MWM1YzZhZmU0
ZTI4OTQ0ODQ1NjQxMWU5ZTk1YTM1ZTM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwCkBAIC0yOCwyNSArMjgsMTUgQEAK
IAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcy5oIgogI2luY2x1ZGUg
IkNyeXB0b0tleVJhdy5oIgorI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSGtk
ZlBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5UmF3JiBrZXksIHNpemVfdCBsZW5n
dGgpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKLSAgICBDQ0Rp
Z2VzdEFsZ29yaXRobSBkaWdlc3RBbGdvcml0aG07Ci0gICAgZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0
QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGRpZ2VzdEFsZ29yaXRobSk7Ci0K
LSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS8zMjQzOTQ1NT4gQ3VycmVudGx5LCB3aGVuIGtleSBkYXRhIGlzIGVtcHR5LCBDQ0tl
eURlcml2YXRpb25ITWFjIHdpbGwgYmFpbCBvdXQuCi0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4
ODk2MDIxPiBSZW1pbmRlcjogU3dpdGNoIHRvIENDRGVyaXZlS2V5IG5vdyB0aGF0IENDS2V5RGVy
aXZhdGlvbkhNYWMgaXMgZGVwcmVjYXRlZC4KLSAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1hYyhr
Q0NLREZBbGdvcml0aG1IS0RGLCBkaWdlc3RBbGdvcml0aG0sIDAsIGtleS5rZXkoKS5kYXRhKCks
IGtleS5rZXkoKS5zaXplKCksIDAsIDAsIHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLmRhdGEoKSwg
cGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuc2l6ZSgpLCAwLCAwLCBwYXJhbWV0ZXJzLnNhbHRWZWN0
b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcmVzdWx0LmRhdGEo
KSwgcmVzdWx0LnNpemUoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIHJldHVy
biBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKGtleS5r
ZXkoKS5kYXRhKCksIGtleS5rZXkoKS5zaXplKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRh
dGEoKSwgcGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLmluZm9WZWN0
b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgbGVuZ3RoKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRp
ZXNDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MGZkNWYzY2JmNzEyODE2ZDUxOWZmODUxN2ZlNWJlOWQ5NWFh
MGU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9V
dGlsaXRpZXNDb2NvYS5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCIKKworI2lmIEVO
QUJMRShXRUJfQ1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUFFU19DVFIuaCIKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0
cmFuc2Zvcm1BRVNfQ1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBrZXksIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKK3sKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGhhY2sgb25jZSA8cmRhcjovL3By
b2JsZW0vMzEzNjEwNTA+IGlzIGZpeGVkLgorICAgIC8vIGNvdW50ZXIgPSBub25jZSArIGNvdW50
ZXIKKyAgICAvLyBDb21tb25DcnlwdG8gY3VycmVudGx5IGNhbiBuZWl0aGVyIHJlc2V0IHRoZSBj
b3VudGVyIG5vciBkZXRlY3Qgb3ZlcmZsb3cgb25jZSB0aGUgY291bnRlciByZWFjaGVzIGl0cyBt
YXggdmFsdWUgcmVzdHJpY3RlZAorICAgIC8vIGJ5IHRoZSBjb3VudGVyTGVuZ3RoLiBJdCB0aGVu
IGluY3JlbWVudHMgdGhlIG5vbmNlIHdoaWNoIHNob3VsZCBzdGF5IHNhbWUgZm9yIHRoZSB3aG9s
ZSBvcGVyYXRpb24uIFRvIHJlbWVkeSB0aGlzIGlzc3VlLAorICAgIC8vIHdlIGRldGVjdCB0aGUg
b3ZlcmZsb3cgYWhlYWQgYW5kIGRpdmlkZSB0aGUgb3BlcmF0aW9uIGludG8gdHdvIHBhcnRzLgor
ICAgIHNpemVfdCBudW1iZXJPZkJsb2NrcyA9IGRhdGFTaXplICUga0NDQmxvY2tTaXplQUVTMTI4
ID8gZGF0YVNpemUgLyBrQ0NCbG9ja1NpemVBRVMxMjggKyAxIDogZGF0YVNpemUgLyBrQ0NCbG9j
a1NpemVBRVMxMjg7CisKKyAgICAvLyBEZXRlY3QgbG9vcAorICAgIGlmIChjb3VudGVyTGVuZ3Ro
IDwgc2l6ZW9mKHNpemVfdCkgKiA4ICYmIG51bWJlck9mQmxvY2tzID4gKHN0YXRpY19jYXN0PHNp
emVfdD4oMSkgPDwgY291bnRlckxlbmd0aCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciB9OworCisgICAgLy8gQ2FsY3VsYXRlIGNhcGFjaXR5IGJlZm9yZSBvdmVy
ZmxvdworICAgIENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlciBjb3Vu
dGVyQmxvY2tIZWxwZXIoY291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgc2l6ZV90IGNhcGFj
aXR5ID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50VG9PdmVyZmxvd1NhdHVyYXRpbmcoKTsKKwor
ICAgIC8vIERpdmlkZSBkYXRhIGludG8gdHdvIHBhcnRzIGlmIG5lY2Vzc2FyeS4KKyAgICBzaXpl
X3QgaGVhZFNpemUgPSBkYXRhU2l6ZTsKKyAgICBpZiAoY2FwYWNpdHkgPCBudW1iZXJPZkJsb2Nr
cykKKyAgICAgICAgaGVhZFNpemUgPSBjYXBhY2l0eSAqIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKKwor
ICAgIC8vIGZpcnN0IHBhcnQ6IGNvbXB1dGUgdGhlIGZpcnN0IG49Y2FwYWNpdHkgYmxvY2tzIG9m
IGRhdGEgaWYgY2FwYWNpdHkgaXMgaW5zdWZmaWNpZW50LiBPdGhlcndpc2UsIHJldHVybiB0aGUg
cmVzdWx0LgorICAgIENDQ3J5cHRvclJlZiBjcnlwdG9yOworICAgIENDQ3J5cHRvclN0YXR1cyBz
dGF0dXMgPSBDQ0NyeXB0b3JDcmVhdGVXaXRoTW9kZShvcGVyYXRpb24sIGtDQ01vZGVDVFIsIGtD
Q0FsZ29yaXRobUFFUzEyOCwgY2NOb1BhZGRpbmcsIGNvdW50ZXIuZGF0YSgpLCBrZXkuZGF0YSgp
LCBrZXkuc2l6ZSgpLCAwLCAwLCAwLCBrQ0NNb2RlT3B0aW9uQ1RSX0JFLCAmY3J5cHRvcik7Cisg
ICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4gaGVhZChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgo
Y3J5cHRvciwgaGVhZFNpemUsIHRydWUpKTsKKworICAgIHNpemVfdCBieXRlc1dyaXR0ZW47Cisg
ICAgc3RhdHVzID0gQ0NDcnlwdG9yVXBkYXRlKGNyeXB0b3IsIGRhdGEsIGhlYWRTaXplLCBoZWFk
LmRhdGEoKSwgaGVhZC5zaXplKCksICZieXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgdWludDhf
dCogcCA9IGhlYWQuZGF0YSgpICsgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRv
ckZpbmFsKGNyeXB0b3IsIHAsIGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBw
ICs9IGJ5dGVzV3JpdHRlbjsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKHAgPD0gaGVhZC5lbmQoKSk7CisgICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4o
KSk7CisKKyAgICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOworCisgICAgaWYgKGNhcGFjaXR5
ID49IG51bWJlck9mQmxvY2tzKQorICAgICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKKworICAg
IC8vIHNlY29uZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRo
ZW0gdG8gdGhlIGhlYWQuCisgICAgLy8gcmVzZXQgY291bnRlcgorICAgIFZlY3Rvcjx1aW50OF90
PiByZW1haW5pbmdDb3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRl
ck92ZXJmbG93KCk7CisgICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0
aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5p
bmdDb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9k
ZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgc2l6ZV90IHRhaWxTaXplID0g
ZGF0YVNpemUgLSBoZWFkU2l6ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JH
ZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwgdGFpbFNpemUsIHRydWUpKTsKKworICAgIHN0YXR1cyA9
IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhICsgaGVhZFNpemUsIHRhaWxTaXplLCB0YWls
LmRhdGEoKSwgdGFpbC5zaXplKCksICZieXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcCA9IHRh
aWwuZGF0YSgpICsgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNy
eXB0b3IsIHAsIHRhaWwuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVz
V3JpdHRlbjsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKKworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAg
PD0gdGFpbC5lbmQoKSk7CisgICAgdGFpbC5zaHJpbmsocCAtIHRhaWwuYmVnaW4oKSk7CisKKyAg
ICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOworCisgICAgaGVhZC5hcHBlbmRWZWN0b3IodGFp
bCk7CisgICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gZGVyaXZlSERLRlNIQTI1NkJpdHMoY29uc3QgdWludDhfdCoga2V5LCBzaXplX3Qg
a2V5U2l6ZSwgY29uc3QgdWludDhfdCogc2FsdCwgc2l6ZV90IHNhbHRTaXplLCBjb25zdCB1aW50
OF90KiBpbmZvLCBzaXplX3QgaW5mb1NpemUsIHNpemVfdCBsZW5ndGgpCit7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKKyAgICBWZWN0b3I8dWludDhfdD4gaW5mb1Zl
Y3RvcjsKKworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzMyNDM5NDU1PiBDdXJyZW50bHksIHdoZW4ga2V5IGRhdGEgaXMgZW1w
dHksIENDS2V5RGVyaXZhdGlvbkhNYWMgd2lsbCBiYWlsIG91dC4KKyAgICAvLyA8cmRhcjovL3By
b2JsZW0vNDg4OTYwMjE+IFJlbWluZGVyOiBTd2l0Y2ggdG8gQ0NEZXJpdmVLZXkgbm93IHRoYXQg
Q0NLZXlEZXJpdmF0aW9uSE1hYyBpcyBkZXByZWNhdGVkLgorICAgIGlmIChDQ0tleURlcml2YXRp
b25ITWFjKGtDQ0tERkFsZ29yaXRobUhLREYsIGtDQ0RpZ2VzdFNIQTI1NiwgMCwga2V5LCBrZXlT
aXplLCAwLCAwLCBpbmZvLCBpbmZvU2l6ZSwgMCwgMCwgc2FsdCwgc2FsdFNpemUsIHJlc3VsdC5k
YXRhKCksIHJlc3VsdC5zaXplKCkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2UzYTk2MDZlZDVlMjA1YTBk
YWI5MDI5ODMwNDdiNDUyZmNjZWRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKSB8fCBFTkFCTEUo
V0VCX1JUQykKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCit0eXBlZGVmIHVpbnQzMl90IENDT3BlcmF0aW9uOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09w
ZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxl
bmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhU2l6ZSk7CitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZT
SEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3QqIGtleSwgc2l6ZV90IGtleVNpemUsIGNvbnN0IHVpbnQ4
X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6ZSwgY29uc3QgdWludDhfdCogaW5mbywgc2l6ZV90IGlu
Zm9TaXplLCBzaXplX3QgbGVuZ3RoKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pIHx8IEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDE2MWEyOGY0MTNmMGVlMTJjYTBmYzIzYjUwN2JkNDQx
NjkyOWIxM2UuLjA2YWUyNDM4NzJmMjczNTljYmJmNTY2MzUzNWJkN2QzNDA3OTI0ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE1Myw2ICsxNTMsNyBAQAogI2luY2x1
ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQ
c2V1ZG9FbGVtZW50LmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlJl
bmRlckVtYmVkZGVkT2JqZWN0LmgiCkBAIC0xNTg1LDYgKzE1ODYsMTEgQEAgUmVmPE1vY2tSVENS
dHBUcmFuc2Zvcm0+IEludGVybmFsczo6Y3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpCiAgICAg
cmV0dXJuIE1vY2tSVENSdHBUcmFuc2Zvcm06OmNyZWF0ZSgpOwogfQogCit1aW50NjRfdCBJbnRl
cm5hbHM6OnNmcmFtZUNvdW50ZXIoY29uc3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCit7CisgICAgcmV0dXJuIHRyYW5zZm9ybS5jb3VudGVyRm9yVGVzdGluZygpOworfQorCiB2
b2lkIEludGVybmFsczo6c2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihib29sIHZhbHVlKQogewog
I2lmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyNDg1
ZTEzZDZkNDk1NjM3OWU2ODY2NTA4YjAxNmViMTQyNGZlNjZlLi41MmQwNTJkYTY5M2ZlYmNlNzFi
M2QyMmI3NWUzMzMyOWRhM2E5ZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTEyNCw2ICsxMjQsMTAgQEAgY2xhc3MgVGV4dFRyYWNrQ3VlR2VuZXJpYzsKIGNsYXNzIFNlcnZp
Y2VXb3JrZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorY2xhc3MgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCWFIpCiBjbGFzcyBXZWJYUlRl
c3Q7CiAjZW5kaWYKQEAgLTYwOCw2ICs2MTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJS
VENWUDlTdXBwb3J0KGJvb2wpOwogICAgIHZvaWQgc2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29s
KTsKICAgICBSZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4gY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9y
bSgpOworICAgIHVpbnQ2NF90IHNmcmFtZUNvdW50ZXIoY29uc3QgUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtJik7CiAgICAgdm9pZCBzZXRFbmFibGVXZWJSVENFbmNyeXB0aW9uKGJvb2wpOwogICAgIHZv
aWQgc2V0VXNlRFRMUzEwKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYlJU
Qyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiMDE1NGIyOTg1
ODBiZmFkMzMzYTExNGFmMzg0ZDFkYTkwOWUxNjgyLi4xNDBhNmE1MDRkYjVkMGU1NzBhNmJhM2U3
NDgxZGVkY2ZlYTQ0OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04
MDMsNiArODAzLDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENd
IHVuZGVmaW5lZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0Nv
bmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2xl
YW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIE1vY2tSVENSdHBUcmFuc2Zv
cm0gY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOworICAgIFtDb25kaXRpb25hbD1XRUJfUlRD
XSB1bnNpZ25lZCBsb25nIGxvbmcgc2ZyYW1lQ291bnRlcihSVENSdHBTRnJhbWVUcmFuc2Zvcm0g
dHJhbnNmb3JtKTsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBz
ZXRNb2NrQXVkaW9UcmFja0NoYW5uZWxOdW1iZXIoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgdW5z
aWduZWQgc2hvcnQgY291bnQpOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHVuZGVm
aW5lZCBzZXRTaG91bGRJbnRlcnJ1cHRBdWRpb09uUGFnZVZpc2liaWxpdHlDaGFuZ2UoYm9vbGVh
biBzaG91bGRJbnRlcnJ1cHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0
cFRyYW5zZm9ybS5pZGwKaW5kZXggMDllYjBjM2NhMTVjNWYxOTdmMzZjZmI0NzQ5YzExODA2ZThh
Yzc3Ny4uZGU2MzE4NzYwNTk0YjY5ZjI3YTAxZDY1ZTA4ODk4MDVmMzM3NDFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsCkBAIC0yNiw2ICsy
Niw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKICAgICBKU0dlbmVyYXRlVG9KU09i
amVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCiBdIGludGVyZmFjZSBNb2NrUlRDUnRwVHJhbnNmb3JtIDogUlRDUnRwVHJhbnNm
b3JtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1Byb2Nlc3Npbmc7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzg1YTFiZWFj
MWI4YjQ2Y2ZlYjZjNjJiODQwNzZlZTk3OGQyN2FkZC4uN2FkYjU2MWZkOTIwMWMzMTI4NjAxYTM0
MDk2ZWE4MGMzZDIzOGY2MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTExLTEzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0ZyYW1lIHRyYW5zZm9y
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NzUy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHVu
aXQgdGVzdHMgdGhhdCB2YWxpZGF0ZSBTRnJhbWUgZ2VuZXJhdGlvbiBhbmQgcGFyc2luZy4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm1lclRlc3RzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpn
ZXRSYXdLZXkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlVmlkZW9UcmFuc2Zvcm1l
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1ZlY3RvcnNBcmVFcXVhbCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0xMS0xMCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY5NTI1KTog
TWFueSBsYXlvdXQgdGVzdHMgY3Jhc2ggd2hlbiBydW4gdW5kZXIgQVNhbgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAxMmM4MDEwY2VmYWMzNWYwNmU4YzNiY2I0NzgzY2Q5MzcxNDk1ZjcyLi5i
NWY4MmM3NTQ3NGIzMjBiNjhjZDM0OWEzOWJjYzM5MjdiZWI5Mjk3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjM2LDYgKzIzNiw3IEBACiAJCTQxMzVGQjg1MjAxMUZBQkYwMDMzMjEzOSAv
KiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2Vi
Q29yZVRlc3RTdXBwb3J0LmR5bGliICovOyB9OwogCQk0MTRBRDY4NjIyODVEMUMwMDA3NzdGMkQg
LyogU3RvcmFnZVF1b3RhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLzsg
fTsKIAkJNDE2NjFDNjYyMzU1RTg1RTAwRDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJhdWRpby5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNjYxQzY1MjM1NUQ5OEIwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAq
LzsgfTsKKwkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVz
dHMuY3BwICovOyB9OwogCQk0MTg0OEY0NDI0ODkxODc5MDAwRTI1ODggLyogb3Blbi13aW5kb3ct
d2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Bl
bi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCAqLzsgfTsKIAkJNDE4ODJGMDMy
MTAxMEMwRDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8q
IFByb2Nlc3NQcmVXYXJtaW5nLm1tICovOyB9OwogCQk0NDA3N0JCMTIzMTQ0QjUwMDAxNzlFMkQg
LyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDA3N0JCMDIzMTQ0OUQyMDAxNzlFMkQgLyogRGF0YURldGVjdG9y
c1Rlc3RJT1MubW0gKi87IH07CkBAIC0xOTU1LDYgKzE5NTYsNyBAQAogCQk0MTM1RkI4NjIwMTFG
QUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VR
dW90YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3JhZ2VRdW90YS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2NjFDNjUyMzU1RDk4QjAwRDMzQzI3IC8qIGdldFVzZXJN
ZWRpYS13ZWJhdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImdldFVzZXJN
ZWRpYS13ZWJhdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2
MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXJUZXN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODQ4RjQzMjQ4OTE4
MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0
aC1ob3N0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MkYwMjIxMDEw
QTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUxOSw2ICszNTIxLDcgQEAKIAkJCQkw
NDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCAqLywKIAkJCQk2QjRF
ODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwICovLAogCQkJCUY0
MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCAqLywKKwkJCQk0
MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5j
cHAgKi8sCiAJCQkJQ0RDRkE3QTkxRTQ1MTIyRjAwQzI0MzNEIC8qIFNhbXBsZU1hcC5jcHAgKi8s
CiAJCQkJQ0UwNkRGOUExRTE4NTFGMjAwRTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCAqLywK
IAkJCQk0MTk3M0I1QzFBRjIyODc1MDA2QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKQEAg
LTU0MDUsNiArNTQwOCw3IEBACiAJCQkJNUNDQjEwRTMyMTM0NTdEODAwQUM1QUYwIC8qIFJlc3Rv
cmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2
RTgxNkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBSZXN0b3JlU3RhdGVBZnRlclRlcm1pbmF0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJFMTUxRjcxQjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRS
ZWN0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUY0RDI5ODZFMjBGRUU3MzcwMDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRvY3VtZW50
TG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQTk4NTUzMjExM0NGNzgwMDU3RUI2QiAvKiBT
YWZlQnJvd3NpbmcubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRl
c3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MzIwNDBlYTMzY2U4OGRkN2JiYzc2MTBiM2E5ZTRlMWFlNDBm
NjZjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwCkBAIC0wLDAgKzEsMzUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VmVjdG9yPHVpbnQ4X3Q+IGdldFJhd0tleSgpCit7CisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90
Pjo6ZnJvbSgKKyAgICAgICAgMjQ5LAorICAgICAgICAxOTUsCisgICAgICAgIDIwMiwKKyAgICAg
ICAgMTU5LAorICAgICAgICA1NiwKKyAgICAgICAgMTkxLAorICAgICAgICAxMDMsCisgICAgICAg
IDI0NywKKyAgICAgICAgMjQ1LAorICAgICAgICAyMTMsCisgICAgICAgIDIwLAorICAgICAgICA2
OCwKKyAgICAgICAgNjcsCisgICAgICAgIDIwLAorICAgICAgICAxNTEsCisgICAgICAgIDE4NSwK
KyAgICAgICAgMjQyLAorICAgICAgICA3OCwKKyAgICAgICAgMTc2LAorICAgICAgICAxNTgsCisg
ICAgICAgIDkxLAorICAgICAgICAyMDUsCisgICAgICAgIDEzOCwKKyAgICAgICAgNTUsCisgICAg
ICAgIDE3NiwKKyAgICAgICAgMTQ3LAorICAgICAgICAxOTgsCisgICAgICAgIDI0MywKKyAgICAg
ICAgMTQ2LAorICAgICAgICAyMDQsCisgICAgICAgIDI0MywKKyAgICAgICAgMjIwCisgICAgKTsK
K30KKworc3RhdGljIFJlZjxXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcj4gY3JlYXRl
VmlkZW9UcmFuc2Zvcm1lcihib29sIGlzU2VuZGluZyA9IHRydWUpCit7CisgICAgYXV0byB0cmFu
c2Zvcm1lciA9IFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjcmVhdGUoKTsKKyAg
ICB0cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKGlzU2VuZGluZyk7CisgICAgdHJhbnNmb3JtZXIt
PnNldElzUHJvY2Vzc2luZ0F1ZGlvKGZhbHNlKTsKKworICAgIGF1dG8ga2V5SWQgPSBWZWN0b3I8
dWludDhfdD46OmZyb20oMTk4LCAzMSwgMjUxLCAxOTcsIDQ4LCAxMzksIDkxLCA1MSk7CisgICAg
dWludDY0X3Qga2V5SWRWYWx1ZSA9IDA7CisgICAgZm9yIChhdXRvIHZhbHVlIDoga2V5SWQpCisg
ICAgICAgIGtleUlkVmFsdWUgPSB2YWx1ZSArIChrZXlJZFZhbHVlIDw8IDgpOworCisgICAgYXV0
byBrZXlSZXN1bHQgPSB0cmFuc2Zvcm1lci0+c2V0RW5jcnlwdGlvbktleShnZXRSYXdLZXkoKSwg
a2V5SWRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGtleVJlc3VsdC5oYXNFeGNlcHRpb24oKSk7
CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZXI7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrVmVjdG9y
c0FyZUVxdWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY29tcHV0ZWQsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgZXhwZWN0ZWQpCit7CisgICAgRVhQRUNUX0VRKGNvbXB1dGVkLnNpemUoKSwgZXhw
ZWN0ZWQuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHN0ZDo6bWlu
KGNvbXB1dGVkLnNpemUoKSwgZXhwZWN0ZWQuc2l6ZSgpKTsgKytjcHRyKQorICAgICAgICBFWFBF
Q1RfRVEoY29tcHV0ZWRbY3B0cl0sIGV4cGVjdGVkW2NwdHJdKTsKK30KKworVEVTVChSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lciwgQXV0aGVudGljYXRpb25LZXkpCit7CisgICAgYXV0byB0cmFuc2Zv
cm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVh
bCh0cmFuc2Zvcm1lci0+YXV0aGVudGljYXRpb25LZXkoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9t
KAorICAgICAgICA5MiwKKyAgICAgICAgMjI4LAorICAgICAgICAxMzksCisgICAgICAgIDE5NSwK
KyAgICAgICAgOTgsCisgICAgICAgIDE2LAorICAgICAgICA0LAorICAgICAgICAxOTMsCisgICAg
ICAgIDIyMSwKKyAgICAgICAgMjQ4LAorICAgICAgICAyMzIsCisgICAgICAgIDE3OCwKKyAgICAg
ICAgMTM1LAorICAgICAgICAyMiwKKyAgICAgICAgMTQxLAorICAgICAgICAxNTAsCisgICAgICAg
IDE2NSwKKyAgICAgICAgMjQyLAorICAgICAgICA3MywKKyAgICAgICAgNzIsCisgICAgICAgIDEw
LAorICAgICAgICAxOTcsCisgICAgICAgIDE1LAorICAgICAgICA4NywKKyAgICAgICAgMTgxLAor
ICAgICAgICAzNCwKKyAgICAgICAgMTIwLAorICAgICAgICA3MSwKKyAgICAgICAgNDIsCisgICAg
ICAgIDE3NCwKKyAgICAgICAgMTMxLAorICAgICAgICA3MgorICAgICkpOworfQorCitURVNUKFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0aW9uS2V5KQoreworICAgIGF1dG8gdHJhbnNm
b3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAgY2hlY2tWZWN0b3JzQXJlRXF1
YWwodHJhbnNmb3JtZXItPmVuY3J5cHRpb25LZXkoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAor
ICAgICAgICAyMDcsCisgICAgICAgIDI1MSwKKyAgICAgICAgNTIsCisgICAgICAgIDIxLAorICAg
ICAgICAxMDEsCisgICAgICAgIDUwLAorICAgICAgICAyMzIsCisgICAgICAgIDQ4LAorICAgICAg
ICAyMTEsCisgICAgICAgIDExNSwKKyAgICAgICAgMTEsCisgICAgICAgIDE1NSwKKyAgICAgICAg
MTAxLAorICAgICAgICAxMTYsCisgICAgICAgIDE1MywKKyAgICAgICAgNzEKKyAgICApKTsKK30K
KworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgU2FsdEtleSkKK3sKKyAgICBhdXRvIHRy
YW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGNoZWNrVmVjdG9yc0Fy
ZUVxdWFsKHRyYW5zZm9ybWVyLT5zYWx0S2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAg
ICAgICAgMjI5LAorICAgICAgICAxOSwKKyAgICAgICAgNDIsCisgICAgICAgIDkzLAorICAgICAg
ICAxNjQsCisgICAgICAgIDEwMywKKyAgICAgICAgMTIwLAorICAgICAgICA1MywKKyAgICAgICAg
MjUsCisgICAgICAgIDI2LAorICAgICAgICAyMzcsCisgICAgICAgIDIwNCwKKyAgICAgICAgNzks
CisgICAgICAgIDEzOCwKKyAgICAgICAgMTM4LAorICAgICAgICAyMzEKKyAgICApKTsKK30KKwor
VEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlwdERlY3J5cHQpCit7CisgICAgYXV0
byBlbmNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAgYXV0byBkZWNyeXB0
b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKGZhbHNlKTsKKyAgICBhdXRvIGZyYW1lID0gVmVj
dG9yPHVpbnQ4X3Q+Ojpmcm9tKDEzNSwgODksIDUxLCAxNjYsIDI0OCwgMTI5LCAxNTcsIDExMSwg
MTkwLCAxMzQsIDIyMCk7CisKKyAgICBhdXRvIGVuY3J5cHRlZFJlc3VsdCA9IGVuY3J5cHRvci0+
dHJhbnNmb3JtKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
ZW5jcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGF1dG8gZW5jcnlwdGVkID0g
ZW5jcnlwdGVkUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGF1dG8gZGVjcnlwdGVk
UmVzdWx0ID0gZGVjcnlwdG9yLT50cmFuc2Zvcm0oZW5jcnlwdGVkLmRhdGEoKSwgZW5jcnlwdGVk
LnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGRlY3J5cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24o
KSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChkZWNyeXB0ZWRSZXN1bHQucmV0dXJuVmFs
dWUoKSwgZnJhbWUpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0
RGVjcnlwdEtleUlEMCkKK3sKKyAgICBhdXRvIGVuY3J5cHRvciA9IGNyZWF0ZVZpZGVvVHJhbnNm
b3JtZXIoKTsKKyAgICBlbmNyeXB0b3ItPnNldEVuY3J5cHRpb25LZXkoZ2V0UmF3S2V5KCksIDAp
OworCisgICAgYXV0byBkZWNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKGZhbHNlKTsK
KyAgICBkZWNyeXB0b3ItPnNldEVuY3J5cHRpb25LZXkoZ2V0UmF3S2V5KCksIDApOworCisgICAg
YXV0byBmcmFtZSA9IFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgxMzUsIDg5LCA1MSwgMTY2LCAyNDgs
IDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjApOworCisgICAgYXV0byBlbmNyeXB0ZWRSZXN1
bHQgPSBlbmNyeXB0b3ItPnRyYW5zZm9ybShmcmFtZS5kYXRhKCksIGZyYW1lLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGVuY3J5cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBh
dXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRlZFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5cHRvci0+dHJhbnNmb3JtKGVuY3J5cHRlZC5k
YXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRShkZWNyeXB0ZWRSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwoZGVjcnlwdGVk
UmVzdWx0LnJldHVyblZhbHVlKCksIGZyYW1lKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjApCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNy
ZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKworICAgIHVpbnQ4X3QgZnJhbWUxW10gPSB7IDEzNSwg
ODksIDUxLCAxNjYsIDI0OCwgMTI5LCAxNTcsIDExMSwgMTkwLCAxMzQsIDIyMCB9OworICAgIGF1
dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShmcmFtZTEsIHNpemVvZihmcmFtZTEp
KTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGNoZWNr
VmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgVmVjdG9yPHVpbnQ4
X3Q+Ojpmcm9tKAorICAgICAgICAxNSwKKyAgICAgICAgMTk4LAorICAgICAgICAzMSwKKyAgICAg
ICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAgIDQ4LAorICAgICAgICAxMzksCisgICAgICAg
IDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMCwKKyAgICAgICAgMjU0LAorICAgICAgICAxNzEs
CisgICAgICAgIDE2OCwKKyAgICAgICAgMTI3LAorICAgICAgICAxNTgsCisgICAgICAgIDk3LAor
ICAgICAgICA3MCwKKyAgICAgICAgNCwKKyAgICAgICAgMjMzLAorICAgICAgICAxNTYsCisgICAg
ICAgIDEzNCwKKyAgICAgICAgMjIwLAorICAgICAgICA0NCwKKyAgICAgICAgNTAsCisgICAgICAg
IDkwLAorICAgICAgICAzLAorICAgICAgICA2OCwKKyAgICAgICAgMjAwLAorICAgICAgICAxMjcs
CisgICAgICAgIDIyMywKKyAgICAgICAgNgorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1Db3VudGVyMjU2KQoreworICAgIGF1dG8gdHJhbnNmb3Jt
ZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisKKyAgICB1aW50OF90IGZyYW1lMVtdID0g
eyA4LCAxNjQsIDE4OSwgMTgsIDYxLCAxMTcsIDEzMiwgNDMsIDExNywgMTY5LCA0MiB9OworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcmVzdWx0ID0gVmVjdG9yPHVp
bnQ4X3Q+KCk7CisgICAgcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShmcmFtZTEsIHNp
emVvZihmcmFtZTEpKTsKKyAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IDI1NjsgKytj
cHRyKSB7CisgICAgICAgIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBz
aXplb2YoZnJhbWUxKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpOworICAgIH0KKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMzEsCisgICAgICAgIDE5
OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAgICAgMTk3LAorICAgICAgICA0OCwK
KyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAgNTEsCisgICAgICAgIDEsCisgICAg
ICAgIDAsCisgICAgICAgIDEyNCwKKyAgICAgICAgMjE4LAorICAgICAgICA2MSwKKyAgICAgICAg
MjMsCisgICAgICAgIDc4LAorICAgICAgICAxNSwKKyAgICAgICAgMTkwLAorICAgICAgICAzNSwK
KyAgICAgICAgMjU1LAorICAgICAgICAyNTMsCisgICAgICAgIDEyMCwKKyAgICAgICAgNjQsCisg
ICAgICAgIDI4LAorICAgICAgICAxODMsCisgICAgICAgIDE3MiwKKyAgICAgICAgMTU0LAorICAg
ICAgICAxNDQsCisgICAgICAgIDE2LAorICAgICAgICAyMjksCisgICAgICAgIDg3LAorICAgICAg
ICA1MgorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBUcmFuc2Zv
cm1Db3VudGVyNjU1MzYpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJh
bnNmb3JtZXIoKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0Q291bnRlcig2NTUzNik7CisKKyAgICB1
aW50OF90IGZyYW1lMVtdID0geyAwLCAzMywgMjQ0LCAyNCwgMjM2LCAxNTYsIDEyNywgOCwgNDgs
IDg4LCAyMjAgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJh
bWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgNDcsCisgICAgICAgIDE5OCwK
KyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAgICAgMTk3LAorICAgICAgICA0OCwKKyAg
ICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAgNTEsCisgICAgICAgIDEsCisgICAgICAg
IDAsCisgICAgICAgIDAsCisgICAgICAgIDk4LAorICAgICAgICAyMTIsCisgICAgICAgIDEzNywK
KyAgICAgICAgMjQ0LAorICAgICAgICAyMDksCisgICAgICAgIDE2LAorICAgICAgICA4OSwKKyAg
ICAgICAgMjM0LAorICAgICAgICAyMSwKKyAgICAgICAgMTcxLAorICAgICAgICAxNSwKKyAgICAg
ICAgMTA3LAorICAgICAgICA1MCwKKyAgICAgICAgMTQ1LAorICAgICAgICA3MywKKyAgICAgICAg
MTA3LAorICAgICAgICAxNjUsCisgICAgICAgIDQ1LAorICAgICAgICAxOTAsCisgICAgICAgIDI1
LAorICAgICAgICA4MgorICAgICkpOworfQorCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGIzM2ZmZWUzMzc0NDc1ODll
M2VkMWVhMGIyYjVkYWU3YzE0NjYyNy4uOWEzNjI1YmYyYWQ3MWZjNzcyZTNlOWVmYmZlNzFlMmE3
ODZkMmU5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTExLTEzICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0ZyYW1lIHRyYW5z
Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRj
L2F1ZGlvLXNmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0xMS0xMiAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJS
VEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFt
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NzA2YjRjOTI1YWUyYTkyMzE3NjQ5ZTI3ODcxNWFmNmM5NWJiZTg4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBBdWRpbyBleGNoYW5nZSB3aXRoIFNG
cmFtZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2Yjc1
MGMwZGY1NjdkYmU0OWNhZWMxMmEwYTRmYmYyOWNlZDJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2
aWRlbyBpZD0iYXVkaW8iIGF1dG9wbGF5IHBsYXlzSW5saW5lPjwvdmlkZW8+CisgICAgICAgIDxz
Y3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Cisg
ICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3Vi
dGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIs
IDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYi
LCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKyAgICBjb25zdCBzdHJlYW0g
PSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0
ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlbmRlciA9
IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
LCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybTsKKyAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtl
eSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgICAgICB9
LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5v
bnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdHJhbnNmb3Jt
ID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0u
c2V0RW5jcnlwdGlvbktleShrZXkpOworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tF
dmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSB0cmFu
c2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGF1ZGlvLnNyY09i
amVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCBhdWRpby5wbGF5KCk7CisKKyAgICBpZiAod2luZG93
LmludGVybmFscykgeworICAgICAgICBjb25zdCBzZW5kZXJDb3VudGVyID0gaW50ZXJuYWxzLnNm
cmFtZUNvdW50ZXIoc2VuZGVyLnRyYW5zZm9ybSk7CisgICAgICAgIGNvbnN0IHJlY2VpdmVyQ291
bnRlciA9IGludGVybmFscy5zZnJhbWVDb3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSk7CisKKyAg
ICAgICAgbGV0IGNvdW50ZXIgPSAwOworICAgICAgICB3aGlsZSAocmVjZWl2ZXJDb3VudGVyID09
PSBpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zvcm0pICYmICsrY291bnRl
ciA8IDEwMCkKKyAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGlt
ZW91dChyZXNvbHZlLCA1MCkpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnRlcm5hbHMu
c2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zvcm0pLCByZWNlaXZlckNvdW50ZXIsICJyZWNl
aXZlciIpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnRlcm5hbHMuc2ZyYW1lQ291bnRl
cihzZW5kZXIudHJhbnNmb3JtKSwgc2VuZGVyQ291bnRlciwgInNlbmRlciIpOworICAgIH0KK30s
ICJBdWRpbyBleGNoYW5nZSB3aXRoIFNGcmFtZSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="430759"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414023</attachid>
            <date>2020-11-13 02:42:29 -0800</date>
            <delta_ts>2020-11-13 02:43:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218752-20201113114227.patch</filename>
            <type>text/plain</type>
            <size>79284</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uYjc1M2M2N2ExY2UwZTg5NjVkZjJhODQ1ZTkxOWY2
NWE1Y2RlNzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRoYXQgaW1wbGVtZW50cyB0
aGUgU0ZyYW1lIGZvcm1hdC4KKyAgICAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGlzIGEgUlRD
UnRwVHJhbnNmb3JtIHRoYXQgY2FuIGJlIHNldCB0byBSVENSdHAgc2VuZGVyIGFuZCByZWNlaXZl
ciBvYmplY3RzLgorICAgICAgICBBUEkgc3VwcG9ydHMgc2V0dGluZyBlbmNyeXB0aW9uIGtleS4K
KyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gcmV1c2UgV2ViQ3J5cHRvIHJvdXRpbmVzIGZv
ciBlbmNyeXB0aW9uL2RlY3J5cHRpb24uCisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxl
bmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlWKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1
dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5
cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRl
Y3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUpOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcml2
ZUhES0ZTSEEyNTZCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjMjk5ZDgzMGNiNjFlOTQ0NjlkOGU2MmI3MmJkODU3ZTMxNDhjYmIzLi45
NGQwNjJiZjk5M2QxYjRjN2M0NDQyNGZhNGU5MTY1N2Y0MDA3ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNDAyLDYgKzQwMiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitU
cmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
NjliNjg2MWI2YWZhMWQwYWMwOTdiMWJkMzEwNjQ0ODNlZWM3NTE5Li4zOTY1ZTZjZDA1ZDQyZjM2
NTBiMjU3ZTM5Nzc0OTU0ZjIwNWI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIzNiw2ICsyMzYsNyBAQCAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZGI2NzEwMDg4ZWYyNDU0NDgzMDI1ZTAxZTRhYTdjZTVkZmVjMzA0Yy4uMjZkM2Mx
NGEyYTY4Yjg5MTY2OWViMGQ1NjAyN2NlNGY1Y2U3M2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3MDUsNiArMTcwNSw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFJlY2VpdmVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlhZTQwYzE4Nzk2
ODkzODE3Yjg0MTY1MjdjMjQwYWY3MjNlOGYxMTYuLmE1ZmI0NWI4MGZiMDFmZDk5MGI0NWY2NmM3
NWIyZGFjNTc5Zjc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYzLDYg
KzI2Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjMwZWZkZTIyMTkzZDAwMjQyMTM0MWJhZGY1Mzc4OTE1YjY4NDEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSVENSdHBTRnJhbWVUcmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybSgpCisgICAgOiBtX3RyYW5zZm9ybWVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpj
cmVhdGUoKSkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJh
bnNmb3JtKCkKK3sKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRp
b25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5h
bGdvcml0aG0oKTsKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxn
b3JpdGhtPihhbGdvcml0aG0pKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIkludmFsaWQga2V5Il9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdURjo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9
ICJIS0RGIikgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8m
IHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNlLnNldHRs
ZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5SWQpKTsK
K30KKwordWludDY0X3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtZXItPmNvdW50ZXIoKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAgbV90cmFuc2Zvcm1lci0+
c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5zZm9ybWVyLT5z
ZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1h
YmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0g
bWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBm
cmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBhIGZyYW1lIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJl
dHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisKKyAg
ICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZSkpOwor
ICAgIH0pOworfQorCisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAg
aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVy
KGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
Ojp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYx
NGJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENy
eXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CisgICAgflJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSgpOworCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9w
dGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9p
ZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmlu
YWw7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBm
aW5hbDsKKworICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKKyAgICB2
b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7
CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4
N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2lu
ZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CisgICAgY29uc3RydWN0b3IoKTsKKwor
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBtaXNzaW5nIG1ldGhvZHMuCisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHJhdGNo
ZXRFbmNyeXB0aW9uS2V5KCk7CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHNldFNpZ25pbmdL
ZXkoQ3J5cHRvS2V5IGtleSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNmY0YmRkNDA2NGNjMzMwOGYzZDA5NTJhYzc3ZTE2NzRiOWQ4YTg2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1aW50OF90KiBk
YXRhLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMZW5ndGg7ICsraSkKKyAgICAgICAgKmRhdGErKyA9ICh2
YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0gMSAtIGkpICogOCkpICYgMHhmZjsKK30KKworc3RhdGlj
IGlubGluZSB1aW50OF90IGxlbmd0aE9mVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIHVp
bnQ4X3QgbGVuZ3RoID0gMDsKKyAgICBkbyB7CisgICAgICAgICsrbGVuZ3RoOworICAgICAgICB2
YWx1ZSA9IHZhbHVlID4+IDg7CisgICAgfSB3aGlsZSAodmFsdWUpOworICAgIHJldHVybiBsZW5n
dGg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBjb21wdXRlRmlyc3RIZWFkZXJCeXRlKHVp
bnQ2NF90IGtleUlkLCB1aW50NjRfdCBjb3VudGVyKQoreworICAgIHVpbnQ4X3QgdmFsdWUgPSAw
OworICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChjb3VudGVyKSAtIDEpIDw8IDQ7CisgICAg
aWYgKGtleUlkIDwgOCkKKyAgICAgICAgdmFsdWUgfD0ga2V5SWQ7CisgICAgZWxzZSB7CisgICAg
ICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChrZXlJZCkgLSAxKTsKKyAgICAgICAgdmFsdWUg
fD0gMSA8PCAzOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVJVih1aW50NjRfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNhbHRLZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGl2KDE2KTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSAo
Y291bnRlciA+PiAoKDcgLSBpKSAqIDgpKSAmIDB4ZmY7CisgICAgICAgIGl2W2ldID0gdmFsdWUg
XiBzYWx0S2V5W2ldOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA4OyBpIDwgMTY7ICsr
aSkKKyAgICAgICAgaXZbaV0gPSBzYWx0S2V5W2ldOworICAgIHJldHVybiBpdjsKK30KKworc3Ry
dWN0IFNGcmFtZUhlYWRlckluZm8geworICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBr
ZXlJZDsKKyAgICB1aW50NjRfdCBjb3VudGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXV0byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qg
a2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5
dGUgPSAqZGF0YSsrOworCisgICAgLy8gU2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoZmlyc3RCeXRl
ICYgMHg4MCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVpbnQ4X3QgY291bnRlckxlbmd0
aCA9ICgoZmlyc3RCeXRlID4+IDQpICYgMHgwNykgKyAxOworCisgICAgaWYgKHNpemUgPCBjb3Vu
dGVyTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChmaXJzdEJ5dGUg
JiAweDA4KSB7CisgICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoID0gKGZpcnN0Qnl0ZSAmIDB4MDcp
ICsgMTsKKyAgICAgICAgaWYgKHNpemUgPCBjb3VudGVyTGVuZ3RoICsga2V5TGVuZ3RoICsgMSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgd2hpbGUgKGtleUxlbmd0aC0tKQor
ICAgICAgICAgICAga2V5SWQgPSAoa2V5SWQgPDwgOCkgfCAqZGF0YSsrOworICAgICAgICB3aGls
ZSAoY291bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9IChjb3VudGVyIDw8IDgp
IHwgKmRhdGErKzsKKyAgICB9IGVsc2UgeworICAgICAgICBrZXlJZCA9IGZpcnN0Qnl0ZSAmIDB4
MDc7CisgICAgICAgIHdoaWxlIChjb3VudGVyTGVuZ3RoLS0pCisgICAgICAgICAgICBjb3VudGVy
ID0gKGNvdW50ZXIgPDwgOCkgfCAqZGF0YSsrOworICAgIH0KKyAgICB1aW50OF90IGhlYWRlclNp
emUgPSBkYXRhIC0gc3RhcnQ7CisgICAgcmV0dXJuIFNGcmFtZUhlYWRlckluZm8geyBoZWFkZXJT
aXplLCBrZXlJZCwgY291bnRlciB9OworfQorCitSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkpOworfQorCitSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKQoreworfQorCitSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCkKK3sKKyAg
ICBhdXRvIHNhbHRLZXlSZXN1bHQgPSBjb21wdXRlU2FsdEtleShyYXdLZXkpOworICAgIGlmIChz
YWx0S2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2FsdEtleVJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0
ID0gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGF1dGhlbnRpY2F0
aW9uS2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXV0aGVudGljYXRp
b25LZXlSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBlbmNyeXB0aW9uS2V5
UmVzdWx0ID0gY29tcHV0ZUVuY3J5cHRpb25LZXkocmF3S2V5KTsKKyAgICBpZiAoZW5jcnlwdGlv
bktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY3J5cHRpb25LZXlS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2tleUxvY2spOworCisgICAgbV9zYWx0S2V5ID0gc2FsdEtleVJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICBtX2F1dGhlbnRpY2F0aW9uS2V5ID0gYXV0aGVudGljYXRpb25LZXlSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgbV9lbmNyeXB0aW9uS2V5ID0gZW5jcnlwdGlv
bktleVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIGlmIChrZXlJZCkKKyAgICAg
ICAgbV9rZXlJZCA9ICprZXlJZDsKKworICAgIG1faGFzS2V5ID0gdHJ1ZTsKKyAgICByZXR1cm4g
eyB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKKworICAgIGF1dG8gaGVhZGVyID0gcGFyc2VT
RnJhbWVIZWFkZXIoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworCisgICAgaWYgKCFoZWFkZXIpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgaWYg
KGhlYWRlci0+Y291bnRlciA8PSBtX2NvdW50ZXIgJiYgbV9jb3VudGVyKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICBtX2NvdW50ZXIgPSBoZWFk
ZXItPmNvdW50ZXI7CisKKyAgICBpZiAoaGVhZGVyLT5rZXlJZCAhPSBtX2tleUlkKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2VhcmNoIGZvciBrZXlzLgorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBDb21wdXRl
IHNpZ25hdHVyZQorICAgIGF1dG8qIHRyYW5zbWl0dGVkU2lnbmF0dXJlID0gZnJhbWVEYXRhICsg
ZnJhbWVTaXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byBzaWduYXR1cmUgPSBj
b21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShmcmFtZURhdGEsIGZyYW1lU2l6ZSAgLSBtX2F1
dGhlbnRpY2F0aW9uU2l6ZSwgbV9hdXRoZW50aWNhdGlvbktleSk7CisgICAgZm9yIChzaXplX3Qg
Y3B0ciA9IDA7IGNwdHIgPCBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsgKytjcHRyKSB7CisgICAgICAg
IGlmIChzaWduYXR1cmVbY3B0cl0gIT0gdHJhbnNtaXR0ZWRTaWduYXR1cmVbY3B0cl0pIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHJhdGNoZXRpbmcuCisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIERlY3J5cHQgZGF0YQorICAgIGF1dG8gaXYgPSBjb21wdXRlSVYobV9jb3Vu
dGVyLCBtX3NhbHRLZXkpOworICAgIGF1dG8gZGF0YVNpemUgPSBmcmFtZVNpemUgLSBoZWFkZXIt
PnNpemUgLSBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRE
YXRhKGZyYW1lRGF0YSArIGhlYWRlci0+c2l6ZSwgZGF0YVNpemUsIGl2LCBtX2VuY3J5cHRpb25L
ZXkpOworCisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXpl
X3QgZnJhbWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1f
Y291bnRlciwgbV9zYWx0S2V5KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2Zvcm1lZERh
dGE7CisgICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBNYXhIZWFkZXJTaXpl
ICsgbV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBoZWFkZXIuCisgICAgc2l6
ZV90IGhlYWRlclNpemUgPSAxOworICAgIHRyYW5zZm9ybWVkRGF0YVswXSA9IGNvbXB1dGVGaXJz
dEhlYWRlckJ5dGUobV9rZXlJZCwgbV9jb3VudGVyKTsKKyAgICBpZiAobV9rZXlJZCA+PSA4KSB7
CisgICAgICAgIGF1dG8ga2V5SWRMZW5ndGggPSBsZW5ndGhPZlVJbnQ2NChtX2tleUlkKTsKKyAg
ICAgICAgd3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1f
a2V5SWQsIGtleUlkTGVuZ3RoKTsKKyAgICAgICAgaGVhZGVyU2l6ZSArPSBrZXlJZExlbmd0aDsK
KyAgICB9CisgICAgYXV0byBjb3VudGVyTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9jb3VudGVy
KTsKKyAgICB3cml0ZVVJbnQ2NCh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwg
bV9jb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKKyAgICBoZWFkZXJTaXplICs9IGNvdW50ZXJMZW5n
dGg7CisKKyAgICB0cmFuc2Zvcm1lZERhdGEucmVzaXplKGZyYW1lU2l6ZSArIGhlYWRlclNpemUg
KyBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7CisKKyAgICAvLyBGaWxsIGVuY3J5cHRlZCBkYXRhCisg
ICAgYXV0byBlbmNyeXB0ZWREYXRhID0gZW5jcnlwdERhdGEoZnJhbWVEYXRhLCBmcmFtZVNpemUs
IGl2LCBtX2VuY3J5cHRpb25LZXkpOworICAgIEFTU0VSVCghZW5jcnlwdGVkRGF0YS5oYXNFeGNl
cHRpb24oKSk7CisgICAgaWYgKGVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBlbmNyeXB0ZWREYXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHN0ZDo6bWVt
Y3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBlbmNyeXB0ZWREYXRhLnJl
dHVyblZhbHVlKCkuZGF0YSgpLCBmcmFtZVNpemUpOworCisgICAgLy8gRmlsbCBzaWduYXR1cmUK
KyAgICBhdXRvIHNpZ25hdHVyZSA9IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKHRyYW5z
Zm9ybWVkRGF0YS5kYXRhKCksIGZyYW1lU2l6ZSArIGhlYWRlclNpemUsIG1fYXV0aGVudGljYXRp
b25LZXkpOworICAgIHN0ZDo6bWVtY3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBmcmFtZVNp
emUgKyBoZWFkZXJTaXplLCBzaWduYXR1cmUuZGF0YSgpLCBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7
CisKKyAgICArK21fY291bnRlcjsKKworICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7Cit9CisK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnRy
YW5zZm9ybShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoIW1f
aGFzS2V5KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIHJldHVybiBtX2lzU2VuZGluZyA/IGVuY3J5cHRGcmFtZShkYXRhLCBzaXplKSA6IGRl
Y3J5cHRGcmFtZShkYXRhLCBzaXplKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVT
YWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQor
eworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0
RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitWZWN0b3I8dWludDhfdD4gUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJu
IHsgfTsKK30KKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM0NTgwZWU4Njk1MDY2NmY4ODE2OWI5OTg5NDNjMzE2MmQ1ODFkYzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3J5cHRvS2V5OworCitjbGFz
cyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5SVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcigpOworCisgICAgdm9pZCBzZXRJc1NlbmRpbmcoYm9vbCk7CisgICAgdm9pZCBzZXRJc1By
b2Nlc3NpbmdBdWRpbyhib29sKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlv
bmFsPHVpbnQ2NF90Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiB0cmFuc2Zvcm0oY29uc3QgdWludDhfdCosIHNpemVfdCk7CisKKyAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9hdXRo
ZW50aWNhdGlvbktleTsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZW5jcnlwdGlvbktl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jcnlwdGlvbktleTsgfQorICAgIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgc2FsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdEtleTsgfQorCisgICAgdWlu
dDY0X3QgY291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY291bnRlcjsgfQorICAgIHZvaWQgc2V0
Q291bnRlcih1aW50NjRfdCBjb3VudGVyKSB7IG1fY291bnRlciA9IGNvdW50ZXI7IH0KKworcHJp
dmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOworCisg
ICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0RnJhbWUoY29uc3QgdWludDhf
dCosIHNpemVfdCk7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RnJh
bWUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IGNvbXB1dGVTYWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0
ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisKKyAgICBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IGVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKyAg
ICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYga2V5KTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1
cmUoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpOwor
CisgICAgTG9jayBtX2tleUxvY2s7CisgICAgYm9vbCBtX2hhc0tleSB7IGZhbHNlIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fYXV0aGVudGljYXRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1fZW5jcnlwdGlvbktleTsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zYWx0S2V5OworCisgICAg
Ym9vbCBtX2lzU2VuZGluZyB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9hdXRoZW50aWNhdGlv
blNpemUgeyAxMCB9OworICAgIHVpbnQ2NF90IG1fa2V5SWQgeyAwIH07CisgICAgdWludDY0X3Qg
bV9jb3VudGVyIHsgMCB9OworfTsKKworaW5saW5lIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OnNldElzU2VuZGluZyhib29sIGlzU2VuZGluZykKK3sKKyAgICBtX2lzU2VuZGluZyA9IGlz
U2VuZGluZzsKK30KKworaW5saW5lIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElz
UHJvY2Vzc2luZ0F1ZGlvKGJvb2wgaXNQcm9jZXNzaW5nQXVkaW8pCit7CisgICAgbV9hdXRoZW50
aWNhdGlvblNpemUgPSBpc1Byb2Nlc3NpbmdBdWRpbyA/IDQgOiAxMDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm1lckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzNkNDI0ODAyZTE5M2NhZDcwZDIx
YmMyMTM3OWY4NTBmYjM1NzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgi
CisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29h
LmgiCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQor
eworICAgIHVpbnQ4X3QgdXNhZ2VbXSA9ICJTRnJhbWVTYWx0S2V5IjsKKyAgICByZXR1cm4gZGVy
aXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkgKyAxNiwg
cmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDEyOCk7Cit9CisK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNv
bXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sK
KyAgICB1aW50OF90IHVzYWdlW10gPSAiU0ZyYW1lQXV0aGVudGljYXRpb25LZXkiOworICAgIHJl
dHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEo
KSArIDE2LCByYXdLZXkuc2l6ZSgpIC0gMTYsIHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMjU2
KTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkp
Cit7CisgICAgdWludDhfdCB1c2FnZVtdID0gIlNGcmFtZUVuY3J5cHRpb25LZXkiOworICAgIHJl
dHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEo
KSArIDE2LCByYXdLZXkuc2l6ZSgpIC0gMTYsIHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMTI4
KTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KQoreworICAg
IHJldHVybiB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0RlY3J5cHQsIGl2LCBpdi5zaXplKCksIGtleSwg
ZGF0YSwgc2l6ZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6OmVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSkKK3sKKyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NFbmNyeXB0LCBpdiwgaXYuc2l6
ZSgpLCBrZXksIGRhdGEsIHNpemUpOworfQorCitWZWN0b3I8dWludDhfdD4gUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICBW
ZWN0b3I8dWludDhfdD4gcmVzdWx0KENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICBDQ0ht
YWMoa0NDSG1hY0FsZ1NIQTI1Niwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgZGF0YSwgc2l6ZSwg
cmVzdWx0LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDY0
YTVkNWQ0ZDQ3MDY0NjkzYzA1ZmY4NzIxZWM1ZTM3YjA1Mzk1NjUuLjEwZDA5ZjI3NGFmNTlhZTE4
YjBiODE1MDA3ODFlNWZjNDA0NWE4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNjMsNiArMTYzLDgg
QEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VUcmFuc3BvcnQuY3BwCiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbkljZUV2ZW50LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFu
c2Zvcm0uY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcApAQCAt
MzMxOSw2ICszMzIxLDcgQEAgSlNSVENSdHBIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzLmNwcAog
SlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBSZWNlaXZlci5jcHAKIEpTUlRDUnRwUnR4
UGFyYW1ldGVycy5jcHAKK0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAogSlNSVENSdHBTZW5k
UGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNwcAogSlNSVENSdHBTeW5jaHJvbml6YXRp
b25Tb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAyYWQzM2E5NTUxOTJkOTA3
NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi5mNTAyZTcxYzRmODFlM2ZlNjVkNDBhMTAxOTgyMmYz
YmJkNTMxYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTg5LDYgKzg5LDcgQEAgTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KIE1vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCitNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFi
YXNlTWFuYWdlckNvY29hLm1tCkBAIC0xMjgsNiArMTI5LDcgQEAgY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SZWdpc3RyeU1hYy5jcHAKIGNyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCiBj
cnlwdG8vbWFjL0NyeXB0b0tleU1hYy5jcHAKIGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNw
cAorY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAKIGNyeXB0by9tYWMvU2VyaWFs
aXplZENyeXB0b0tleVdyYXBNYWMubW0KIGRvbS9EYXRhVHJhbnNmZXJNYWMubW0KIGRvbS9pb3Mv
TW91c2VFdmVudElPUy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjOThkMTZhOTFiOGMxY2QwNGY3MGFkY2VlNmZkZGZlYTRk
OTE0ZDAzLi5mZDRiYjVhNWZlOWY0YWVlYzk2MWUxNGZlMTVmMTBiMTdhNTY4NWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MTA5LDYgKzExMDksOCBAQAogCQk0MTgxQzVENjI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0
cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLzsg
fTsKIAkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1RDMy
NTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9OwogCQk0MTgx
QzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkYzRTkyMUMxRjg1NTUw
MDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9OworCQk0MTgxQzY0ODI1
NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQyMjU1QjRDMjYwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxODFDNjRBMjU1QjRDMjgwMEFFQjBGRiAvKiBSVENS
dHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODIwNTQ1
MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4MjZCRjIyM0ZCNTk3NzAwQjkyMkIxIC8q
IERvY3VtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MjZCRjEyM0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
ODRGNTE2MUVBRjA1QTgwMEYxOEJGMCAvKiBPcmllbnRhdGlvbk5vdGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBG
MThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzAyLDYgKzc3MDQsMTIgQEAKIAkJNDE4MUM1RDMy
NTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUQ1MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRD
UnRwVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSVENS
dHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM2MzYyNTVB
RTI2MTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tSVENSdHBU
cmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTgxQzYzRjI1NUI0
QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29h
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDEyNTVCNEMyNjAwQUVC
MEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQz
MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQ1MjU1QjRDMjgw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgyMDU0ODFFNTNFQUFEMDBENjIyMDcgLyog
UlRDQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
VENDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjZCRjEy
M0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEb2N1bWVudElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc3MzUsNiArNzc0Myw4IEBACiAJCTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2
RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlQnVp
bHRpbk5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVCdWls
dGluTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE5RDkzMDUyNTVFODQy
NzAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0
b1V0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOUQ5MzA3
MjU1RTg0MjgwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCMzU3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4
QiAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTcwODksNiArMTcwOTksMTIgQEAKIAkJCQk0MTNDOEIyRTI1NTJG
MjdCMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oICovLAogCQkJCTQxNEFE
M0ZDMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBTZW5kUGFyYW1ldGVycy5oICovLAogCQkJCTQx
NEFEM0ZFMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBTZW5kUGFyYW1ldGVycy5pZGwgKi8sCisJ
CQkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAg
Ki8sCisJCQkJNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5oICovLAorCQkJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaWRsICovLAorCQkJCTQxODFDNjQxMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lci5jcHAgKi8sCisJCQkJNDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8sCisJCQkJNDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwICovLAogCQkJCTQxNUUxQkI2MjE1
MDE1MkEwMDIyREE5NiAvKiBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaCAqLywKIAkJCQk0
MTVFMUJCNzIxNTAxNTMwMDAyMkRBOTYgLyogUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmlk
bCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIu
Y3BwICovLApAQCAtMjgyNTUsNiArMjgyNzEsOCBAQAogCQkJCTU3NTBBOTdBMUU2OTE2MTYwMDcw
NUM0QSAvKiBDcnlwdG9LZXlFQ01hYy5jcHAgKi8sCiAJCQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5
NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi8sCiAJCQkJRTE2NEZBQTQxODMxNUUxQTAwREI0RTYx
IC8qIENyeXB0b0tleVJTQU1hYy5jcHAgKi8sCisJCQkJNDE5RDkzMDcyNTVFODQyODAwREExOTg0
IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmNwcCAqLywKKwkJCQk0MTlEOTMwNTI1NUU4NDI3MDBE
QTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlFMThERjMzNjE4QUFGMTRE
MDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0gKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IG1hYzsKQEAgLTM0MDkzLDYgKzM0MTExLDggQEAKIAkJCQk0MTNDOEIzNTI1NTJGMjdE
MDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RTJDNDM2MTFCQ0VFMzIzMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNDOEIzMzI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8q
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4MUM2NDgyNTVC
NEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxRUI1NERGMUU3REM3NDQwMEMxNjIzQiAvKiBSVENSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzQyNTUyRjI3RDAwRTY1
MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNWFlNzM0ZDkwOTBj
MGQwZjc1NDRkMTRmNmNiYmQzMTMxMzRmMTJiOC4uMTRkNmRmNDcyMTgyMWNlNTkxMmYxNThlYzQx
MDAzMjlmMzZiZTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaApAQCAtMjE5LDYgKzIxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbikgXAogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0
aW9uSWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAorICAgIG1hY3JvKFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybSkgXAogICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAogICAgIG1h
Y3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCiAgICAgbWFjcm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19D
VFJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNf
Q1RSTWFjLmNwcAppbmRleCBjYzQxZGE2NWIwZGFjOWM4YjVkYjFhMGU0MmZlMDIwMGI1MjhlYTM4
Li43NTc5ZTQwYWUzN2NhY2U0MjJhMDZlM2ZlYzVlZWU2NGYwMmYxYWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5j
cHAKQEAgLTMxLDEwMCArMzEsMjMgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0N0
clBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgotI2luY2x1ZGUgPENvbW1vbkNy
eXB0by9Db21tb25DcnlwdG8uaD4KKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQotewotICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBmb2xsb3dpbmcgaGFjayBvbmNlIDxyZGFyOi8vcHJvYmxl
bS8zMTM2MTA1MD4gaXMgZml4ZWQuCi0gICAgLy8gY291bnRlciA9IG5vbmNlICsgY291bnRlcgot
ICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50bHkgY2FuIG5laXRoZXIgcmVzZXQgdGhlIGNvdW50
ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNlIHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIG1heCB2
YWx1ZSByZXN0cmljdGVkCi0gICAgLy8gYnkgdGhlIGNvdW50ZXJMZW5ndGguIEl0IHRoZW4gaW5j
cmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hvdWxkIHN0YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9w
ZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNzdWUsCi0gICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVy
ZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBvcGVyYXRpb24gaW50byB0d28gcGFydHMuCi0gICAg
c2l6ZV90IG51bWJlck9mQmxvY2tzID0gZGF0YS5zaXplKCkgJSBrQ0NCbG9ja1NpemVBRVMxMjgg
PyBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyOCArIDEgOiBkYXRhLnNpemUoKSAvIGtD
Q0Jsb2NrU2l6ZUFFUzEyODsKLQotICAgIC8vIERldGVjdCBsb29wCi0gICAgaWYgKGNvdW50ZXJM
ZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgbnVtYmVyT2ZCbG9ja3MgPiAoc3RhdGljX2Nh
c3Q8c2l6ZV90PigxKSA8PCBjb3VudGVyTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICAvLyBDYWxjdWxhdGUgY2FwYWNpdHkgYmVmb3Jl
IG92ZXJmbG93Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVy
IGNvdW50ZXJCbG9ja0hlbHBlcihjb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKLSAgICBzaXplX3Qg
Y2FwYWNpdHkgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291bnRUb092ZXJmbG93U2F0dXJhdGluZygp
OwotCi0gICAgLy8gRGl2aWRlIGRhdGEgaW50byB0d28gcGFydHMgaWYgbmVjZXNzYXJ5LgotICAg
IHNpemVfdCBoZWFkU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIGlmIChjYXBhY2l0eSA8IG51bWJl
ck9mQmxvY2tzKQotICAgICAgICBoZWFkU2l6ZSA9IGNhcGFjaXR5ICoga0NDQmxvY2tTaXplQUVT
MTI4OwotCi0gICAgLy8gZmlyc3QgcGFydDogY29tcHV0ZSB0aGUgZmlyc3Qgbj1jYXBhY2l0eSBi
bG9ja3Mgb2YgZGF0YSBpZiBjYXBhY2l0eSBpcyBpbnN1ZmZpY2llbnQuIE90aGVyd2lzZSwgcmV0
dXJuIHRoZSByZXN1bHQuCi0gICAgQ0NDcnlwdG9yUmVmIGNyeXB0b3I7Ci0gICAgQ0NDcnlwdG9y
U3RhdHVzIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9k
ZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgY291bnRlci5kYXRhKCksIGtl
eS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlw
dG9yKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBoZWFkKENDQ3J5cHRvckdldE91dHB1
dExlbmd0aChjcnlwdG9yLCBoZWFkU2l6ZSwgdHJ1ZSkpOwotCi0gICAgc2l6ZV90IGJ5dGVzV3Jp
dHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YS5kYXRhKCks
IGhlYWRTaXplLCBoZWFkLmRhdGEoKSwgaGVhZC5zaXplKCksICZieXRlc1dyaXR0ZW4pOwotICAg
IGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OwotCi0gICAgdWludDhfdCogcCA9IGhlYWQuZGF0YSgpICsgYnl0ZXNXcml0dGVuOwotICAgIHN0
YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAsIGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNX
cml0dGVuKTsKLSAgICBwICs9IGJ5dGVzV3JpdHRlbjsKLSAgICBpZiAoc3RhdHVzKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gaGVhZC5lbmQoKSk7Ci0gICAgaGVhZC5zaHJpbmso
cCAtIGhlYWQuYmVnaW4oKSk7Ci0KLSAgICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOwotCi0g
ICAgaWYgKGNhcGFjaXR5ID49IG51bWJlck9mQmxvY2tzKQotICAgICAgICByZXR1cm4gV1RGTW92
ZShoZWFkKTsKLQotICAgIC8vIHNlY29uZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0
YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCi0gICAgLy8gcmVzZXQgY291bnRlcgotICAg
IFZlY3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNv
dW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCk7Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRl
V2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9Q
YWRkaW5nLCByZW1haW5pbmdDb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwg
MCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOwotICAgIGlmIChzdGF0dXMp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgc2l6
ZV90IHRhaWxTaXplID0gZGF0YS5zaXplKCkgLSBoZWFkU2l6ZTsKLSAgICBWZWN0b3I8dWludDhf
dD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwgdGFpbFNpemUsIHRydWUp
KTsKLQotICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLmRhdGEoKSAr
IGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCksIHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0
dGVuKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKLQotICAgIHAgPSB0YWlsLmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKLSAgICBz
dGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVz
V3JpdHRlbik7Ci0gICAgcCArPSBieXRlc1dyaXR0ZW47Ci0gICAgaWYgKHN0YXR1cykKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwuZW5kKCkpOwotICAgIHRhaWwuc2hyaW5r
KHAgLSB0YWlsLmJlZ2luKCkpOwotCi0gICAgQ0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKLQot
ICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOwotICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOwot
fQotCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6
OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmIHBhcmFt
ZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBs
YWluVGV4dCkKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgp
ID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0ND
RW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBr
ZXkua2V5KCksIHBsYWluVGV4dCk7CisgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5j
cnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXku
a2V5KCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOwogfQogCiBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7
Ci0gICAgICBBU1NFUlQocGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Js
b2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRGVjcnlwdCwg
cGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCks
IGNpcGhlclRleHQpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXpl
KCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihr
Q0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgs
IGtleS5rZXkoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlclRleHQuc2l6ZSgpKTsKIH0KIAor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtE
Rk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZN
YWMuY3BwCmluZGV4IDZjYWE1ZjNjYmU1MzlmZTY1NGNiN2E5ZmVmZWQ5NGI5YTcyZDU3MzEuLmI0
MTdiNzFjNWM2YWZlNGUyODk0NDg0NTY0MTFlOWU5NWEzNWUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcApAQCAtMjgs
MjUgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKIAotI2luY2x1ZGUgIkNvbW1v
bkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXND
b2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0
b0FsZ29yaXRobUhrZGZQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJhdyYga2V5
LCBzaXplX3QgbGVuZ3RoKQogewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8g
OCk7Ci0gICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwotICAgIGdldENvbW1v
bkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBkaWdlc3RB
bGdvcml0aG0pOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwgd2hlbiBrZXkgZGF0YSBp
cyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0LgotICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5kZXI6IFN3aXRjaCB0byBDQ0Rlcml2ZUtleSBub3cg
dGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlzIGRlcHJlY2F0ZWQuCi0gICAgaWYgKENDS2V5RGVy
aXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwgZGlnZXN0QWxnb3JpdGhtLCAwLCBrZXku
a2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCAwLCAwLCBwYXJhbWV0ZXJzLmluZm9WZWN0
b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgMCwgMCwgcGFyYW1l
dGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCks
IHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIHJldHVybiBkZXJpdmVIREtGU0hB
MjU2Qml0cyhrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLnNh
bHRWZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcGFyYW1l
dGVycy5pbmZvVmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5zaXplKCks
IGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9VdGlsaXRpZXNDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmZDVmM2NiZjcxMjgxNmQ1MTlmZjg1
MTdmZTViZTlkOTVhYTBlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29h
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmgiCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0Nv
bW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUp
Cit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNrIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBpcyBmaXhlZC4KKyAgICAvLyBjb3VudGVyID0g
bm9uY2UgKyBjb3VudGVyCisgICAgLy8gQ29tbW9uQ3J5cHRvIGN1cnJlbnRseSBjYW4gbmVpdGhl
ciByZXNldCB0aGUgY291bnRlciBub3IgZGV0ZWN0IG92ZXJmbG93IG9uY2UgdGhlIGNvdW50ZXIg
cmVhY2hlcyBpdHMgbWF4IHZhbHVlIHJlc3RyaWN0ZWQKKyAgICAvLyBieSB0aGUgY291bnRlckxl
bmd0aC4gSXQgdGhlbiBpbmNyZW1lbnRzIHRoZSBub25jZSB3aGljaCBzaG91bGQgc3RheSBzYW1l
IGZvciB0aGUgd2hvbGUgb3BlcmF0aW9uLiBUbyByZW1lZHkgdGhpcyBpc3N1ZSwKKyAgICAvLyB3
ZSBkZXRlY3QgdGhlIG92ZXJmbG93IGFoZWFkIGFuZCBkaXZpZGUgdGhlIG9wZXJhdGlvbiBpbnRv
IHR3byBwYXJ0cy4KKyAgICBzaXplX3QgbnVtYmVyT2ZCbG9ja3MgPSBkYXRhU2l6ZSAlIGtDQ0Js
b2NrU2l6ZUFFUzEyOCA/IGRhdGFTaXplIC8ga0NDQmxvY2tTaXplQUVTMTI4ICsgMSA6IGRhdGFT
aXplIC8ga0NDQmxvY2tTaXplQUVTMTI4OworCisgICAgLy8gRGV0ZWN0IGxvb3AKKyAgICBpZiAo
Y291bnRlckxlbmd0aCA8IHNpemVvZihzaXplX3QpICogOCAmJiBudW1iZXJPZkJsb2NrcyA+IChz
dGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IGNvdW50ZXJMZW5ndGgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0
eSBiZWZvcmUgb3ZlcmZsb3cKKyAgICBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxv
Y2tIZWxwZXIgY291bnRlckJsb2NrSGVscGVyKGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOworICAg
IHNpemVfdCBjYXBhY2l0eSA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudFRvT3ZlcmZsb3dTYXR1
cmF0aW5nKCk7CisKKyAgICAvLyBEaXZpZGUgZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3Nh
cnkuCisgICAgc2l6ZV90IGhlYWRTaXplID0gZGF0YVNpemU7CisgICAgaWYgKGNhcGFjaXR5IDwg
bnVtYmVyT2ZCbG9ja3MpCisgICAgICAgIGhlYWRTaXplID0gY2FwYWNpdHkgKiBrQ0NCbG9ja1Np
emVBRVMxMjg7CisKKyAgICAvLyBmaXJzdCBwYXJ0OiBjb21wdXRlIHRoZSBmaXJzdCBuPWNhcGFj
aXR5IGJsb2NrcyBvZiBkYXRhIGlmIGNhcGFjaXR5IGlzIGluc3VmZmljaWVudC4gT3RoZXJ3aXNl
LCByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICBDQ0NyeXB0b3JSZWYgY3J5cHRvcjsKKyAgICBDQ0Ny
eXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBr
Q0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCBjb3VudGVyLmRhdGEo
KSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwg
JmNyeXB0b3IpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciB9OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGhlYWQoQ0NDcnlwdG9yR2V0
T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGhlYWRTaXplLCB0cnVlKSk7CisKKyAgICBzaXplX3QgYnl0
ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLCBo
ZWFkU2l6ZSwgaGVhZC5kYXRhKCksIGhlYWQuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBp
ZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
KworICAgIHVpbnQ4X3QqIHAgPSBoZWFkLmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0
dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCBoZWFkLmVuZCgpIC0gcCwgJmJ5dGVzV3Jp
dHRlbik7CisgICAgcCArPSBieXRlc1dyaXR0ZW47CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihwIDw9IGhlYWQuZW5kKCkpOworICAgIGhlYWQuc2hyaW5rKHAg
LSBoZWFkLmJlZ2luKCkpOworCisgICAgQ0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKKworICAg
IGlmIChjYXBhY2l0eSA+PSBudW1iZXJPZkJsb2NrcykKKyAgICAgICAgcmV0dXJuIFdURk1vdmUo
aGVhZCk7CisKKyAgICAvLyBzZWNvbmQgcGFydDogY29tcHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEg
YW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBoZWFkLgorICAgIC8vIHJlc2V0IGNvdW50ZXIKKyAgICBW
ZWN0b3I8dWludDhfdD4gcmVtYWluaW5nQ291bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3Vu
dGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygpOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdp
dGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFk
ZGluZywgcmVtYWluaW5nQ291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAs
IDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKKyAgICBpZiAoc3RhdHVzKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHNpemVf
dCB0YWlsU2l6ZSA9IGRhdGFTaXplIC0gaGVhZFNpemU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRh
aWwoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIHRhaWxTaXplLCB0cnVlKSk7CisK
KyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YSArIGhlYWRTaXplLCB0
YWlsU2l6ZSwgdGFpbC5kYXRhKCksIHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBp
ZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
KworICAgIHAgPSB0YWlsLmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0Ny
eXB0b3JGaW5hbChjcnlwdG9yLCBwLCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7Cisg
ICAgcCArPSBieXRlc1dyaXR0ZW47CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihwIDw9IHRhaWwuZW5kKCkpOworICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJl
Z2luKCkpOworCisgICAgQ0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKKworICAgIGhlYWQuYXBw
ZW5kVmVjdG9yKHRhaWwpOworICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOworfQorCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZTSEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3Qq
IGtleSwgc2l6ZV90IGtleVNpemUsIGNvbnN0IHVpbnQ4X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6
ZSwgY29uc3QgdWludDhfdCogaW5mbywgc2l6ZV90IGluZm9TaXplLCBzaXplX3QgbGVuZ3RoKQor
eworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGluZm9WZWN0b3I7CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTQ1NT4gQ3VycmVudGx5LCB3aGVuIGtl
eSBkYXRhIGlzIGVtcHR5LCBDQ0tleURlcml2YXRpb25ITWFjIHdpbGwgYmFpbCBvdXQuCisgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzQ4ODk2MDIxPiBSZW1pbmRlcjogU3dpdGNoIHRvIENDRGVyaXZl
S2V5IG5vdyB0aGF0IENDS2V5RGVyaXZhdGlvbkhNYWMgaXMgZGVwcmVjYXRlZC4KKyAgICBpZiAo
Q0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZBbGdvcml0aG1IS0RGLCBrQ0NEaWdlc3RTSEEyNTYs
IDAsIGtleSwga2V5U2l6ZSwgMCwgMCwgaW5mbywgaW5mb1NpemUsIDAsIDAsIHNhbHQsIHNhbHRT
aXplLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNlM2E5
NjA2ZWQ1ZTIwNWEwZGFiOTAyOTgzMDQ3YjQ1MmZjY2VkYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBU
TykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRlZiB1aW50MzJfdCBDQ09wZXJhdGlvbjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9y
bUFFU19DVFIoQ0NPcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6
ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBkZXJpdmVIREtGU0hBMjU2Qml0cyhjb25zdCB1aW50OF90KiBrZXksIHNpemVfdCBrZXlTaXpl
LCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qgc2FsdFNpemUsIGNvbnN0IHVpbnQ4X3QqIGlu
Zm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxlbmd0aCk7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxNjFhMjhmNDEzZjBlZTEyY2Ew
ZmMyM2I1MDdiZDQ0MTY5MjliMTNlLi4wNmFlMjQzODcyZjI3MzU5Y2JiZjU2NjM1MzViZDdkMzQw
NzkyNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNTMsNiArMTUz
LDcgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIK
ICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgpAQCAtMTU4NSw2ICsxNTg2LDExIEBA
IFJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBJbnRlcm5hbHM6OmNyZWF0ZU1vY2tSVENSdHBUcmFu
c2Zvcm0oKQogICAgIHJldHVybiBNb2NrUlRDUnRwVHJhbnNmb3JtOjpjcmVhdGUoKTsKIH0KIAor
dWludDY0X3QgSW50ZXJuYWxzOjpzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtKQoreworICAgIHJldHVybiB0cmFuc2Zvcm0uY291bnRlckZvclRlc3Rp
bmcoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24oYm9v
bCB2YWx1ZSkKIHsKICNpZiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggMjQ4NWUxM2Q2ZDQ5NTYzNzllNjg2NjUwOGIwMTZlYjE0MjRmZTY2ZS4uNTJkMDUy
ZGE2OTNmZWJjZTcxYjNkMjJiNzVlMzMzMjlkYTNhOWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC0xMjQsNiArMTI0LDEwIEBAIGNsYXNzIFRleHRUcmFja0N1ZUdlbmVyaWM7
CiBjbGFzcyBTZXJ2aWNlV29ya2VyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKK2Ns
YXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQlhSKQog
Y2xhc3MgV2ViWFJUZXN0OwogI2VuZGlmCkBAIC02MDgsNiArNjEyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sKTsKICAgICB2b2lkIHNldFdlYlJUQ1ZQOVZU
QlN1cHBvcnQoYm9vbCk7CiAgICAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IGNyZWF0ZU1vY2tS
VENSdHBUcmFuc2Zvcm0oKTsKKyAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihi
b29sKTsKICAgICB2b2lkIHNldFVzZURUTFMxMChib29sKTsKICAgICB2b2lkIHNldFVzZUdQVVBy
b2Nlc3NGb3JXZWJSVEMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5k
ZXggYjAxNTRiMjk4NTgwYmZhZDMzM2ExMTRhZjM4NGQxZGE5MDllMTY4Mi4uMTQwYTZhNTA0ZGI1
ZDBlNTcwYTZiYTNlNzQ4MWRlZGNmZWE0NDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtODAzLDYgKzgwMyw3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRp
b25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sZWFuIGFsbG93
ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5VlRC
U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSBNb2Nr
UlRDUnRwVHJhbnNmb3JtIGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKKyAgICBbQ29uZGl0
aW9uYWw9V0VCX1JUQ10gdW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtIHRyYW5zZm9ybSk7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
XSB1bmRlZmluZWQgc2V0TW9ja0F1ZGlvVHJhY2tDaGFubmVsTnVtYmVyKE1lZGlhU3RyZWFtVHJh
Y2sgdHJhY2ssIHVuc2lnbmVkIHNob3J0IGNvdW50KTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNXSB1bmRlZmluZWQgc2V0U2hvdWxkSW50ZXJydXB0QXVkaW9PblBhZ2VWaXNpYmlsaXR5
Q2hhbmdlKGJvb2xlYW4gc2hvdWxkSW50ZXJydXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsCmluZGV4IDA5ZWIwYzNjYTE1YzVmMTk3ZjM2Y2Zi
NDc0OWMxMTgwNmU4YWM3NzcuLmRlNjMxODc2MDU5NGI2OWYyN2EwMWQ2NWUwODg5ODA1ZjMzNzQx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9y
bS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlk
bApAQCAtMjYsNiArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCiAgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTW9ja1JUQ1J0cFRyYW5zZm9ybSA6
IFJUQ1J0cFRyYW5zZm9ybSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNQcm9j
ZXNzaW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDM4NWExYmVhYzFiOGI0NmNmZWI2YzYyYjg0MDc2ZWU5NzhkMjdhZGQuLjdhZGI1NjFmZDky
MDFjMzEyODYwMWEzNDA5NmVhODBjM2QyMzhmNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0xMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgV2ViUlRDIFNG
cmFtZSB0cmFuc2Zvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB1bml0IHRlc3RzIHRoYXQgdmFsaWRhdGUgU0ZyYW1lIGdlbmVyYXRpb24gYW5k
IHBhcnNpbmcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Z2V0UmF3S2V5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVZp
ZGVvVHJhbnNmb3JtZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tWZWN0b3JzQXJl
RXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTEtMTAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjI2OTUyNSk6IE1hbnkgbGF5b3V0IHRlc3RzIGNyYXNoIHdoZW4gcnVuIHVuZGVyIEFTYW4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTJjODAxMGNlZmFjMzVmMDZlOGMzYmNiNDc4M2Nk
OTM3MTQ5NWY3Mi4uYjVmODJjNzU0NzRiMzIwYjY4Y2QzNDlhMzliY2MzOTI3YmViOTI5NyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNiw2ICsyMzYsNyBAQAogCQk0MTM1RkI4NTIwMTFG
QUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNUZCODYyMDExRkFCRjAwMzMy
MTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLzsgfTsKIAkJNDE0QUQ2ODYyMjg1
RDFDMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEFENjg1MjI4NUQxQjAwMDc3N0YyRCAvKiBTdG9yYWdl
UXVvdGEubW0gKi87IH07CiAJCTQxNjYxQzY2MjM1NUU4NUUwMEQzM0MyNyAvKiBnZXRVc2VyTWVk
aWEtd2ViYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTY2MUM2NTIzNTVEOThCMDBEMzNDMjcgLyogZ2V0VXNlck1lZGlhLXdl
YmF1ZGlvLmh0bWwgKi87IH07CisJCTQxODFDNjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lclRlc3RzLmNwcCAqLzsgfTsKIAkJNDE4NDhGNDQyNDg5MTg3OTAwMEUyNTg4IC8q
IG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4NDhGNDMyNDg5MTgxNTAw
MEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgKi87IH07
CiAJCTQxODgyRjAzMjEwMTBDMEQwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODgyRjAyMjEwMTBB
NzAwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSAqLzsgfTsKIAkJNDQwNzdCQjEyMzE0
NEI1MDAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwNzdCQjAyMzE0NDlEMjAwMTc5RTJEIC8q
IERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tICovOyB9OwpAQCAtMTk1NSw2ICsxOTU2LDcgQEAKIAkJ
NDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxNEFENjg1MjI4NUQxQjAwMDc3N0Yy
RCAvKiBTdG9yYWdlUXVvdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9yYWdlUXVvdGEu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjYxQzY1MjM1NUQ5OEIwMEQzM0My
NyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
clRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRo
LWhvc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLXdpbmRvdy13aXRo
LWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1ByZVdhcm1pbmcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBT
aGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hh
cmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MTksNiArMzUy
MSw3IEBACiAJCQkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAg
Ki8sCiAJCQkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNw
cCAqLywKIAkJCQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5j
cHAgKi8sCisJCQkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyVGVzdHMuY3BwICovLAogCQkJCUNEQ0ZBN0E5MUU0NTEyMkYwMEMyNDMzRCAvKiBTYW1w
bGVNYXAuY3BwICovLAogCQkJCUNFMDZERjlBMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0eU9y
aWdpbi5jcHAgKi8sCiAJCQkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZl
ci5jcHAgKi8sCkBAIC01NDA1LDYgKzU0MDgsNyBAQAogCQkJCTVDQ0IxMEUzMjEzNDU3RDgwMEFD
NUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0NkU4MTZGODFFNzlFMjlDMDAzNzVBREMgLyogUmVzdG9yZVN0YXRlQWZ0ZXJU
ZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0MThCRTE1MUY3MUI3REMwMDE5NzBF
NiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxODFDNjJEMjU1
QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExODBDMEZBMUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNEQyOTg2RTIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0
QWZ0ZXJEb2N1bWVudExvYWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0E5ODU1MzIxMTNDRjc4
MDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJU
ZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXJUZXN0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzgwZjY5MDRhMGZiNWUzYTI0MDQxNTJm
Mjc3MGM5ZTUxNTNhMzNlZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcApAQCAtMCwwICsx
LDM1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSA8V2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitWZWN0b3I8dWludDhfdD4gZ2V0
UmF3S2V5KCkKK3sKKyAgICByZXR1cm4gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAy
NDksCisgICAgICAgIDE5NSwKKyAgICAgICAgMjAyLAorICAgICAgICAxNTksCisgICAgICAgIDU2
LAorICAgICAgICAxOTEsCisgICAgICAgIDEwMywKKyAgICAgICAgMjQ3LAorICAgICAgICAyNDUs
CisgICAgICAgIDIxMywKKyAgICAgICAgMjAsCisgICAgICAgIDY4LAorICAgICAgICA2NywKKyAg
ICAgICAgMjAsCisgICAgICAgIDE1MSwKKyAgICAgICAgMTg1LAorICAgICAgICAyNDIsCisgICAg
ICAgIDc4LAorICAgICAgICAxNzYsCisgICAgICAgIDE1OCwKKyAgICAgICAgOTEsCisgICAgICAg
IDIwNSwKKyAgICAgICAgMTM4LAorICAgICAgICA1NSwKKyAgICAgICAgMTc2LAorICAgICAgICAx
NDcsCisgICAgICAgIDE5OCwKKyAgICAgICAgMjQzLAorICAgICAgICAxNDYsCisgICAgICAgIDIw
NCwKKyAgICAgICAgMjQzLAorICAgICAgICAyMjAKKyAgICApOworfQorCitzdGF0aWMgUmVmPFdl
YkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKGJv
b2wgaXNTZW5kaW5nID0gdHJ1ZSkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNyZWF0ZSgpOworICAgIHRyYW5zZm9ybWVyLT5zZXRJ
c1NlbmRpbmcoaXNTZW5kaW5nKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0SXNQcm9jZXNzaW5nQXVk
aW8oZmFsc2UpOworCisgICAgYXV0byBrZXlJZCA9IFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgxOTgs
IDMxLCAyNTEsIDE5NywgNDgsIDEzOSwgOTEsIDUxKTsKKyAgICB1aW50NjRfdCBrZXlJZFZhbHVl
ID0gMDsKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBrZXlJZCkKKyAgICAgICAga2V5SWRWYWx1ZSA9
IHZhbHVlICsgKGtleUlkVmFsdWUgPDwgOCk7CisKKyAgICBhdXRvIGtleVJlc3VsdCA9IHRyYW5z
Zm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tleSgpLCBrZXlJZFZhbHVlKTsKKyAgICBF
WFBFQ1RfRkFMU0Uoa2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIHJldHVybiB0cmFu
c2Zvcm1lcjsKK30KKworc3RhdGljIHZvaWQgY2hlY2tWZWN0b3JzQXJlRXF1YWwoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBjb21wdXRlZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBleHBlY3RlZCkK
K3sKKyAgICBFWFBFQ1RfRVEoY29tcHV0ZWQuc2l6ZSgpLCBleHBlY3RlZC5zaXplKCkpOworICAg
IGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgc3RkOjptaW4oY29tcHV0ZWQuc2l6ZSgpLCBl
eHBlY3RlZC5zaXplKCkpOyArK2NwdHIpCisgICAgICAgIEVYUEVDVF9FUShjb21wdXRlZFtjcHRy
XSwgZXhwZWN0ZWRbY3B0cl0pOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBB
dXRoZW50aWNhdGlvbktleSkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9U
cmFuc2Zvcm1lcigpOworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHRyYW5zZm9ybWVyLT5hdXRo
ZW50aWNhdGlvbktleSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDkyLAorICAg
ICAgICAyMjgsCisgICAgICAgIDEzOSwKKyAgICAgICAgMTk1LAorICAgICAgICA5OCwKKyAgICAg
ICAgMTYsCisgICAgICAgIDQsCisgICAgICAgIDE5MywKKyAgICAgICAgMjIxLAorICAgICAgICAy
NDgsCisgICAgICAgIDIzMiwKKyAgICAgICAgMTc4LAorICAgICAgICAxMzUsCisgICAgICAgIDIy
LAorICAgICAgICAxNDEsCisgICAgICAgIDE1MCwKKyAgICAgICAgMTY1LAorICAgICAgICAyNDIs
CisgICAgICAgIDczLAorICAgICAgICA3MiwKKyAgICAgICAgMTAsCisgICAgICAgIDE5NywKKyAg
ICAgICAgMTUsCisgICAgICAgIDg3LAorICAgICAgICAxODEsCisgICAgICAgIDM0LAorICAgICAg
ICAxMjAsCisgICAgICAgIDcxLAorICAgICAgICA0MiwKKyAgICAgICAgMTc0LAorICAgICAgICAx
MzEsCisgICAgICAgIDcyCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIsIEVuY3J5cHRpb25LZXkpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVv
VHJhbnNmb3JtZXIoKTsKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbCh0cmFuc2Zvcm1lci0+ZW5j
cnlwdGlvbktleSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDIwNywKKyAgICAg
ICAgMjUxLAorICAgICAgICA1MiwKKyAgICAgICAgMjEsCisgICAgICAgIDEwMSwKKyAgICAgICAg
NTAsCisgICAgICAgIDIzMiwKKyAgICAgICAgNDgsCisgICAgICAgIDIxMSwKKyAgICAgICAgMTE1
LAorICAgICAgICAxMSwKKyAgICAgICAgMTU1LAorICAgICAgICAxMDEsCisgICAgICAgIDExNiwK
KyAgICAgICAgMTUzLAorICAgICAgICA3MQorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLCBTYWx0S2V5KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVW
aWRlb1RyYW5zZm9ybWVyKCk7CisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwodHJhbnNmb3JtZXIt
PnNhbHRLZXkoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAyMjksCisgICAgICAg
IDE5LAorICAgICAgICA0MiwKKyAgICAgICAgOTMsCisgICAgICAgIDE2NCwKKyAgICAgICAgMTAz
LAorICAgICAgICAxMjAsCisgICAgICAgIDUzLAorICAgICAgICAyNSwKKyAgICAgICAgMjYsCisg
ICAgICAgIDIzNywKKyAgICAgICAgMjA0LAorICAgICAgICA3OSwKKyAgICAgICAgMTM4LAorICAg
ICAgICAxMzgsCisgICAgICAgIDIzMQorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyLCBFbmNyeXB0RGVjcnlwdCkKK3sKKyAgICBhdXRvIGVuY3J5cHRvciA9IGNyZWF0
ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBhdXRvIGRlY3J5cHRvciA9IGNyZWF0ZVZpZGVvVHJh
bnNmb3JtZXIoZmFsc2UpOworICAgIGF1dG8gZnJhbWUgPSBWZWN0b3I8dWludDhfdD46OmZyb20o
MTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjksIDE1NywgMTExLCAxOTAsIDEzNCwgMjIwKTsKKwor
ICAgIGF1dG8gZW5jcnlwdGVkUmVzdWx0ID0gZW5jcnlwdG9yLT50cmFuc2Zvcm0oZnJhbWUuZGF0
YSgpLCBmcmFtZS5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRShlbmNyeXB0ZWRSZXN1bHQuaGFz
RXhjZXB0aW9uKCkpOworCisgICAgYXV0byBlbmNyeXB0ZWQgPSBlbmNyeXB0ZWRSZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBkZWNyeXB0ZWRSZXN1bHQgPSBkZWNyeXB0b3It
PnRyYW5zZm9ybShlbmNyeXB0ZWQuZGF0YSgpLCBlbmNyeXB0ZWQuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoZGVjcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGNoZWNrVmVj
dG9yc0FyZUVxdWFsKGRlY3J5cHRlZFJlc3VsdC5yZXR1cm5WYWx1ZSgpLCBmcmFtZSk7Cit9CisK
K1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIEVuY3J5cHREZWNyeXB0S2V5SUQwKQorewor
ICAgIGF1dG8gZW5jcnlwdG9yID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGVuY3J5
cHRvci0+c2V0RW5jcnlwdGlvbktleShnZXRSYXdLZXkoKSwgMCk7CisKKyAgICBhdXRvIGRlY3J5
cHRvciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoZmFsc2UpOworICAgIGRlY3J5cHRvci0+c2V0
RW5jcnlwdGlvbktleShnZXRSYXdLZXkoKSwgMCk7CisKKyAgICBhdXRvIGZyYW1lID0gVmVjdG9y
PHVpbnQ4X3Q+Ojpmcm9tKDEzNSwgODksIDUxLCAxNjYsIDI0OCwgMTI5LCAxNTcsIDExMSwgMTkw
LCAxMzQsIDIyMCk7CisKKyAgICBhdXRvIGVuY3J5cHRlZFJlc3VsdCA9IGVuY3J5cHRvci0+dHJh
bnNmb3JtKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZW5j
cnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGF1dG8gZW5jcnlwdGVkID0gZW5j
cnlwdGVkUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGF1dG8gZGVjcnlwdGVkUmVz
dWx0ID0gZGVjcnlwdG9yLT50cmFuc2Zvcm0oZW5jcnlwdGVkLmRhdGEoKSwgZW5jcnlwdGVkLnNp
emUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGRlY3J5cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24oKSk7
CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChkZWNyeXB0ZWRSZXN1bHQucmV0dXJuVmFsdWUo
KSwgZnJhbWUpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1D
b3VudGVyMCkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1l
cigpOworCisgICAgdWludDhfdCBmcmFtZTFbXSA9IHsgMTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAx
MjksIDE1NywgMTExLCAxOTAsIDEzNCwgMjIwIH07CisgICAgYXV0byByZXN1bHQgPSB0cmFuc2Zv
cm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkpOworICAgIEVYUEVDVF9GQUxT
RShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwocmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAg
IDE1LAorICAgICAgICAxOTgsCisgICAgICAgIDMxLAorICAgICAgICAyNTEsCisgICAgICAgIDE5
NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwKKyAgICAgICAgOTEsCisgICAgICAgIDUxLAor
ICAgICAgICAwLAorICAgICAgICAyNTQsCisgICAgICAgIDE3MSwKKyAgICAgICAgMTY4LAorICAg
ICAgICAxMjcsCisgICAgICAgIDE1OCwKKyAgICAgICAgOTcsCisgICAgICAgIDcwLAorICAgICAg
ICA0LAorICAgICAgICAyMzMsCisgICAgICAgIDE1NiwKKyAgICAgICAgMTM0LAorICAgICAgICAy
MjAsCisgICAgICAgIDQ0LAorICAgICAgICA1MCwKKyAgICAgICAgOTAsCisgICAgICAgIDMsCisg
ICAgICAgIDY4LAorICAgICAgICAyMDAsCisgICAgICAgIDEyNywKKyAgICAgICAgMjIzLAorICAg
ICAgICA2CisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5z
Zm9ybUNvdW50ZXIyNTYpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJh
bnNmb3JtZXIoKTsKKworICAgIHVpbnQ4X3QgZnJhbWUxW10gPSB7IDgsIDE2NCwgMTg5LCAxOCwg
NjEsIDExNywgMTMyLCA0MywgMTE3LCAxNjksIDQyIH07CisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQgPSBWZWN0b3I8dWludDhfdD4oKTsKKyAgICByZXN1
bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkpOworICAg
IGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgMjU2OyArK2NwdHIpIHsKKyAgICAgICAgcmVz
dWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShmcmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisgICAgfQorICAgIGNo
ZWNrVmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgVmVjdG9yPHVp
bnQ4X3Q+Ojpmcm9tKAorICAgICAgICAzMSwKKyAgICAgICAgMTk4LAorICAgICAgICAzMSwKKyAg
ICAgICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAgIDQ4LAorICAgICAgICAxMzksCisgICAg
ICAgIDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMSwKKyAgICAgICAgMCwKKyAgICAgICAgMTI0
LAorICAgICAgICAyMTgsCisgICAgICAgIDYxLAorICAgICAgICAyMywKKyAgICAgICAgNzgsCisg
ICAgICAgIDE1LAorICAgICAgICAxOTAsCisgICAgICAgIDM1LAorICAgICAgICAyNTUsCisgICAg
ICAgIDI1MywKKyAgICAgICAgMTIwLAorICAgICAgICA2NCwKKyAgICAgICAgMjgsCisgICAgICAg
IDE4MywKKyAgICAgICAgMTcyLAorICAgICAgICAxNTQsCisgICAgICAgIDE0NCwKKyAgICAgICAg
MTYsCisgICAgICAgIDIyOSwKKyAgICAgICAgODcsCisgICAgICAgIDUyCisgICAgKSk7Cit9CisK
K1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5zZm9ybUNvdW50ZXI2NTUzNikKK3sK
KyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIHRy
YW5zZm9ybWVyLT5zZXRDb3VudGVyKDY1NTM2KTsKKworICAgIHVpbnQ4X3QgZnJhbWUxW10gPSB7
IDAsIDMzLCAyNDQsIDI0LCAyMzYsIDE1NiwgMTI3LCA4LCA0OCwgODgsIDIyMCB9OworICAgIGF1
dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShmcmFtZTEsIHNpemVvZihmcmFtZTEp
KTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGNoZWNr
VmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgVmVjdG9yPHVpbnQ4
X3Q+Ojpmcm9tKAorICAgICAgICA0NywKKyAgICAgICAgMTk4LAorICAgICAgICAzMSwKKyAgICAg
ICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAgIDQ4LAorICAgICAgICAxMzksCisgICAgICAg
IDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMSwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAg
ICAgICAgOTgsCisgICAgICAgIDIxMiwKKyAgICAgICAgMTM3LAorICAgICAgICAyNDQsCisgICAg
ICAgIDIwOSwKKyAgICAgICAgMTYsCisgICAgICAgIDg5LAorICAgICAgICAyMzQsCisgICAgICAg
IDIxLAorICAgICAgICAxNzEsCisgICAgICAgIDE1LAorICAgICAgICAxMDcsCisgICAgICAgIDUw
LAorICAgICAgICAxNDUsCisgICAgICAgIDczLAorICAgICAgICAxMDcsCisgICAgICAgIDE2NSwK
KyAgICAgICAgNDUsCisgICAgICAgIDE5MCwKKyAgICAgICAgMjUsCisgICAgICAgIDgyCisgICAg
KSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA0YjMzZmZlZTMzNzQ0NzU4OWUzZWQxZWEwYjJiNWRhZTdjMTQ2
NjI3Li45YTM2MjViZjJhZDcxZmM3NzJlM2U5ZWZiZmU3MWUyYTc4NmQyZTlkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjAtMTEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBhIFdlYlJUQyBTRnJhbWUgdHJhbnNmb3JtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYnJ0Yy9hdWRpby1zZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWw6
IEFkZGVkLgorCiAyMDIwLTExLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIFdlYlJUQyB0cmFuc2Zvcm1zCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3
MDZiNGM5MjVhZTJhOTIzMTc2NDllMjc4NzE1YWY2Yzk1YmJlODgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKKworCitQQVNTIEF1ZGlvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0
Yy9hdWRpby1zZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzZiNzUwYzBkZjU2N2RiZTQ5Y2FlYzEy
YTBhNGZiZjI5Y2VkMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1
ZGlvLXNmcmFtZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJhdWRpbyIgYXV0
b3BsYXkgcGxheXNJbmxpbmU+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5l
cy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25zdCBsb2NhbFN0cmVh
bSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1
ZX0pOworICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXci
LCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAy
MTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJp
dHMiLCAiZGVyaXZlS2V5Il0pOworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0
Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFk
ZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAg
ICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOworICAg
ICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKyAgICAgICAgICAgIHNl
bmRlci50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9u
KSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVu
dCkgPT4geworICAgICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtl
eSk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAg
ICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0
IiksIDUwMDApOworICAgIH0pOworCisgICAgYXVkaW8uc3JjT2JqZWN0ID0gc3RyZWFtOworICAg
IGF3YWl0IGF1ZGlvLnBsYXkoKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
ICAgIGNvbnN0IHNlbmRlckNvdW50ZXIgPSBpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihzZW5kZXIu
dHJhbnNmb3JtKTsKKyAgICAgICAgY29uc3QgcmVjZWl2ZXJDb3VudGVyID0gaW50ZXJuYWxzLnNm
cmFtZUNvdW50ZXIocmVjZWl2ZXIudHJhbnNmb3JtKTsKKworICAgICAgICBsZXQgY291bnRlciA9
IDA7CisgICAgICAgIHdoaWxlIChyZWNlaXZlckNvdW50ZXIgPT09IGludGVybmFscy5zZnJhbWVD
b3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSkgJiYgKytjb3VudGVyIDwgMTAwKQorICAgICAgICAg
ICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7
CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHJlY2Vp
dmVyLnRyYW5zZm9ybSksIHJlY2VpdmVyQ291bnRlciwgInJlY2VpdmVyIik7CisgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHNlbmRlci50cmFuc2Zvcm0p
LCBzZW5kZXJDb3VudGVyLCAic2VuZGVyIik7CisgICAgfQorfSwgIkF1ZGlvIGV4Y2hhbmdlIHdp
dGggU0ZyYW1lIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414024</attachid>
            <date>2020-11-13 02:43:40 -0800</date>
            <delta_ts>2020-11-13 02:51:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218752-20201113114336.patch</filename>
            <type>text/plain</type>
            <size>79336</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uYjc1M2M2N2ExY2UwZTg5NjVkZjJhODQ1ZTkxOWY2
NWE1Y2RlNzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRoYXQgaW1wbGVtZW50cyB0
aGUgU0ZyYW1lIGZvcm1hdC4KKyAgICAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGlzIGEgUlRD
UnRwVHJhbnNmb3JtIHRoYXQgY2FuIGJlIHNldCB0byBSVENSdHAgc2VuZGVyIGFuZCByZWNlaXZl
ciBvYmplY3RzLgorICAgICAgICBBUEkgc3VwcG9ydHMgc2V0dGluZyBlbmNyeXB0aW9uIGtleS4K
KyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gcmV1c2UgV2ViQ3J5cHRvIHJvdXRpbmVzIGZv
ciBlbmNyeXB0aW9uL2RlY3J5cHRpb24uCisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxl
bmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlWKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1
dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5
cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRl
Y3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUpOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcml2
ZUhES0ZTSEEyNTZCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjMjk5ZDgzMGNiNjFlOTQ0NjlkOGU2MmI3MmJkODU3ZTMxNDhjYmIzLi45
NGQwNjJiZjk5M2QxYjRjN2M0NDQyNGZhNGU5MTY1N2Y0MDA3ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNDAyLDYgKzQwMiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitU
cmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
NjliNjg2MWI2YWZhMWQwYWMwOTdiMWJkMzEwNjQ0ODNlZWM3NTE5Li4zOTY1ZTZjZDA1ZDQyZjM2
NTBiMjU3ZTM5Nzc0OTU0ZjIwNWI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIzNiw2ICsyMzYsNyBAQCAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZGI2NzEwMDg4ZWYyNDU0NDgzMDI1ZTAxZTRhYTdjZTVkZmVjMzA0Yy4uMjZkM2Mx
NGEyYTY4Yjg5MTY2OWViMGQ1NjAyN2NlNGY1Y2U3M2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3MDUsNiArMTcwNSw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFJlY2VpdmVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlhZTQwYzE4Nzk2
ODkzODE3Yjg0MTY1MjdjMjQwYWY3MjNlOGYxMTYuLmE1ZmI0NWI4MGZiMDFmZDk5MGI0NWY2NmM3
NWIyZGFjNTc5Zjc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYzLDYg
KzI2Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjMwZWZkZTIyMTkzZDAwMjQyMTM0MWJhZGY1Mzc4OTE1YjY4NDEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSVENSdHBTRnJhbWVUcmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybSgpCisgICAgOiBtX3RyYW5zZm9ybWVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpj
cmVhdGUoKSkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJh
bnNmb3JtKCkKK3sKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRp
b25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5h
bGdvcml0aG0oKTsKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxn
b3JpdGhtPihhbGdvcml0aG0pKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIkludmFsaWQga2V5Il9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdURjo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9
ICJIS0RGIikgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8m
IHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNlLnNldHRs
ZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5SWQpKTsK
K30KKwordWludDY0X3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtZXItPmNvdW50ZXIoKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAgbV90cmFuc2Zvcm1lci0+
c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5zZm9ybWVyLT5z
ZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1h
YmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0g
bWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBm
cmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBhIGZyYW1lIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJl
dHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisKKyAg
ICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZSkpOwor
ICAgIH0pOworfQorCisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAg
aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVy
KGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
Ojp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYx
NGJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENy
eXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CisgICAgflJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSgpOworCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9w
dGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9p
ZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmlu
YWw7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBm
aW5hbDsKKworICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKKyAgICB2
b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7
CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4
N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2lu
ZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CisgICAgY29uc3RydWN0b3IoKTsKKwor
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBtaXNzaW5nIG1ldGhvZHMuCisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHJhdGNo
ZXRFbmNyeXB0aW9uS2V5KCk7CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHNldFNpZ25pbmdL
ZXkoQ3J5cHRvS2V5IGtleSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNmY0YmRkNDA2NGNjMzMwOGYzZDA5NTJhYzc3ZTE2NzRiOWQ4YTg2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1aW50OF90KiBk
YXRhLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMZW5ndGg7ICsraSkKKyAgICAgICAgKmRhdGErKyA9ICh2
YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0gMSAtIGkpICogOCkpICYgMHhmZjsKK30KKworc3RhdGlj
IGlubGluZSB1aW50OF90IGxlbmd0aE9mVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIHVp
bnQ4X3QgbGVuZ3RoID0gMDsKKyAgICBkbyB7CisgICAgICAgICsrbGVuZ3RoOworICAgICAgICB2
YWx1ZSA9IHZhbHVlID4+IDg7CisgICAgfSB3aGlsZSAodmFsdWUpOworICAgIHJldHVybiBsZW5n
dGg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBjb21wdXRlRmlyc3RIZWFkZXJCeXRlKHVp
bnQ2NF90IGtleUlkLCB1aW50NjRfdCBjb3VudGVyKQoreworICAgIHVpbnQ4X3QgdmFsdWUgPSAw
OworICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChjb3VudGVyKSAtIDEpIDw8IDQ7CisgICAg
aWYgKGtleUlkIDwgOCkKKyAgICAgICAgdmFsdWUgfD0ga2V5SWQ7CisgICAgZWxzZSB7CisgICAg
ICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChrZXlJZCkgLSAxKTsKKyAgICAgICAgdmFsdWUg
fD0gMSA8PCAzOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVJVih1aW50NjRfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNhbHRLZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGl2KDE2KTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSAo
Y291bnRlciA+PiAoKDcgLSBpKSAqIDgpKSAmIDB4ZmY7CisgICAgICAgIGl2W2ldID0gdmFsdWUg
XiBzYWx0S2V5W2ldOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA4OyBpIDwgMTY7ICsr
aSkKKyAgICAgICAgaXZbaV0gPSBzYWx0S2V5W2ldOworICAgIHJldHVybiBpdjsKK30KKworc3Ry
dWN0IFNGcmFtZUhlYWRlckluZm8geworICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBr
ZXlJZDsKKyAgICB1aW50NjRfdCBjb3VudGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXV0byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qg
a2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5
dGUgPSAqZGF0YSsrOworCisgICAgLy8gU2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoZmlyc3RCeXRl
ICYgMHg4MCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHVpbnQ4X3QgY291bnRlckxlbmd0
aCA9ICgoZmlyc3RCeXRlID4+IDQpICYgMHgwNykgKyAxOworCisgICAgaWYgKHNpemUgPCBjb3Vu
dGVyTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChmaXJzdEJ5dGUg
JiAweDA4KSB7CisgICAgICAgIHVpbnQ4X3Qga2V5TGVuZ3RoID0gKGZpcnN0Qnl0ZSAmIDB4MDcp
ICsgMTsKKyAgICAgICAgaWYgKHNpemUgPCBjb3VudGVyTGVuZ3RoICsga2V5TGVuZ3RoICsgMSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgd2hpbGUgKGtleUxlbmd0aC0tKQor
ICAgICAgICAgICAga2V5SWQgPSAoa2V5SWQgPDwgOCkgfCAqZGF0YSsrOworICAgICAgICB3aGls
ZSAoY291bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9IChjb3VudGVyIDw8IDgp
IHwgKmRhdGErKzsKKyAgICB9IGVsc2UgeworICAgICAgICBrZXlJZCA9IGZpcnN0Qnl0ZSAmIDB4
MDc7CisgICAgICAgIHdoaWxlIChjb3VudGVyTGVuZ3RoLS0pCisgICAgICAgICAgICBjb3VudGVy
ID0gKGNvdW50ZXIgPDwgOCkgfCAqZGF0YSsrOworICAgIH0KKyAgICB1aW50OF90IGhlYWRlclNp
emUgPSBkYXRhIC0gc3RhcnQ7CisgICAgcmV0dXJuIFNGcmFtZUhlYWRlckluZm8geyBoZWFkZXJT
aXplLCBrZXlJZCwgY291bnRlciB9OworfQorCitSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkpOworfQorCitSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKQoreworfQorCitSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCkKK3sKKyAg
ICBhdXRvIHNhbHRLZXlSZXN1bHQgPSBjb21wdXRlU2FsdEtleShyYXdLZXkpOworICAgIGlmIChz
YWx0S2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2FsdEtleVJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0
ID0gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGF1dGhlbnRpY2F0
aW9uS2V5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXV0aGVudGljYXRp
b25LZXlSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBlbmNyeXB0aW9uS2V5
UmVzdWx0ID0gY29tcHV0ZUVuY3J5cHRpb25LZXkocmF3S2V5KTsKKyAgICBpZiAoZW5jcnlwdGlv
bktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY3J5cHRpb25LZXlS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2tleUxvY2spOworCisgICAgbV9zYWx0S2V5ID0gc2FsdEtleVJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICBtX2F1dGhlbnRpY2F0aW9uS2V5ID0gYXV0aGVudGljYXRpb25LZXlSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgbV9lbmNyeXB0aW9uS2V5ID0gZW5jcnlwdGlv
bktleVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIGlmIChrZXlJZCkKKyAgICAg
ICAgbV9rZXlJZCA9ICprZXlJZDsKKworICAgIG1faGFzS2V5ID0gdHJ1ZTsKKyAgICByZXR1cm4g
eyB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKKworICAgIGF1dG8gaGVhZGVyID0gcGFyc2VT
RnJhbWVIZWFkZXIoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworCisgICAgaWYgKCFoZWFkZXIpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgaWYg
KGhlYWRlci0+Y291bnRlciA8PSBtX2NvdW50ZXIgJiYgbV9jb3VudGVyKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICBtX2NvdW50ZXIgPSBoZWFk
ZXItPmNvdW50ZXI7CisKKyAgICBpZiAoaGVhZGVyLT5rZXlJZCAhPSBtX2tleUlkKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2VhcmNoIGZvciBrZXlzLgorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBDb21wdXRl
IHNpZ25hdHVyZQorICAgIGF1dG8qIHRyYW5zbWl0dGVkU2lnbmF0dXJlID0gZnJhbWVEYXRhICsg
ZnJhbWVTaXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byBzaWduYXR1cmUgPSBj
b21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShmcmFtZURhdGEsIGZyYW1lU2l6ZSAgLSBtX2F1
dGhlbnRpY2F0aW9uU2l6ZSwgbV9hdXRoZW50aWNhdGlvbktleSk7CisgICAgZm9yIChzaXplX3Qg
Y3B0ciA9IDA7IGNwdHIgPCBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsgKytjcHRyKSB7CisgICAgICAg
IGlmIChzaWduYXR1cmVbY3B0cl0gIT0gdHJhbnNtaXR0ZWRTaWduYXR1cmVbY3B0cl0pIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHJhdGNoZXRpbmcuCisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIERlY3J5cHQgZGF0YQorICAgIGF1dG8gaXYgPSBjb21wdXRlSVYobV9jb3Vu
dGVyLCBtX3NhbHRLZXkpOworICAgIGF1dG8gZGF0YVNpemUgPSBmcmFtZVNpemUgLSBoZWFkZXIt
PnNpemUgLSBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHRE
YXRhKGZyYW1lRGF0YSArIGhlYWRlci0+c2l6ZSwgZGF0YVNpemUsIGl2LCBtX2VuY3J5cHRpb25L
ZXkpOworCisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXpl
X3QgZnJhbWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1f
Y291bnRlciwgbV9zYWx0S2V5KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2Zvcm1lZERh
dGE7CisgICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBNYXhIZWFkZXJTaXpl
ICsgbV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBoZWFkZXIuCisgICAgc2l6
ZV90IGhlYWRlclNpemUgPSAxOworICAgIHRyYW5zZm9ybWVkRGF0YVswXSA9IGNvbXB1dGVGaXJz
dEhlYWRlckJ5dGUobV9rZXlJZCwgbV9jb3VudGVyKTsKKyAgICBpZiAobV9rZXlJZCA+PSA4KSB7
CisgICAgICAgIGF1dG8ga2V5SWRMZW5ndGggPSBsZW5ndGhPZlVJbnQ2NChtX2tleUlkKTsKKyAg
ICAgICAgd3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1f
a2V5SWQsIGtleUlkTGVuZ3RoKTsKKyAgICAgICAgaGVhZGVyU2l6ZSArPSBrZXlJZExlbmd0aDsK
KyAgICB9CisgICAgYXV0byBjb3VudGVyTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9jb3VudGVy
KTsKKyAgICB3cml0ZVVJbnQ2NCh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwg
bV9jb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKKyAgICBoZWFkZXJTaXplICs9IGNvdW50ZXJMZW5n
dGg7CisKKyAgICB0cmFuc2Zvcm1lZERhdGEucmVzaXplKGZyYW1lU2l6ZSArIGhlYWRlclNpemUg
KyBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7CisKKyAgICAvLyBGaWxsIGVuY3J5cHRlZCBkYXRhCisg
ICAgYXV0byBlbmNyeXB0ZWREYXRhID0gZW5jcnlwdERhdGEoZnJhbWVEYXRhLCBmcmFtZVNpemUs
IGl2LCBtX2VuY3J5cHRpb25LZXkpOworICAgIEFTU0VSVCghZW5jcnlwdGVkRGF0YS5oYXNFeGNl
cHRpb24oKSk7CisgICAgaWYgKGVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBlbmNyeXB0ZWREYXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHN0ZDo6bWVt
Y3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBlbmNyeXB0ZWREYXRhLnJl
dHVyblZhbHVlKCkuZGF0YSgpLCBmcmFtZVNpemUpOworCisgICAgLy8gRmlsbCBzaWduYXR1cmUK
KyAgICBhdXRvIHNpZ25hdHVyZSA9IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKHRyYW5z
Zm9ybWVkRGF0YS5kYXRhKCksIGZyYW1lU2l6ZSArIGhlYWRlclNpemUsIG1fYXV0aGVudGljYXRp
b25LZXkpOworICAgIHN0ZDo6bWVtY3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBmcmFtZVNp
emUgKyBoZWFkZXJTaXplLCBzaWduYXR1cmUuZGF0YSgpLCBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7
CisKKyAgICArK21fY291bnRlcjsKKworICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7Cit9CisK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnRy
YW5zZm9ybShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoIW1f
aGFzS2V5KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
KworICAgIHJldHVybiBtX2lzU2VuZGluZyA/IGVuY3J5cHRGcmFtZShkYXRhLCBzaXplKSA6IGRl
Y3J5cHRGcmFtZShkYXRhLCBzaXplKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVT
YWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdFN1cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQor
eworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0
RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitWZWN0b3I8dWludDhfdD4gUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJu
IHsgfTsKK30KKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM0NTgwZWU4Njk1MDY2NmY4ODE2OWI5OTg5NDNjMzE2MmQ1ODFkYzQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3J5cHRvS2V5OworCitjbGFz
cyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4gewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI+IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5SVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcigpOworCisgICAgdm9pZCBzZXRJc1NlbmRpbmcoYm9vbCk7CisgICAgdm9pZCBzZXRJc1By
b2Nlc3NpbmdBdWRpbyhib29sKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlv
bmFsPHVpbnQ2NF90Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiB0cmFuc2Zvcm0oY29uc3QgdWludDhfdCosIHNpemVfdCk7CisKKyAgICBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9hdXRo
ZW50aWNhdGlvbktleTsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZW5jcnlwdGlvbktl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jcnlwdGlvbktleTsgfQorICAgIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgc2FsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdEtleTsgfQorCisgICAgdWlu
dDY0X3QgY291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY291bnRlcjsgfQorICAgIHZvaWQgc2V0
Q291bnRlcih1aW50NjRfdCBjb3VudGVyKSB7IG1fY291bnRlciA9IGNvdW50ZXI7IH0KKworcHJp
dmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOworCisg
ICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0RnJhbWUoY29uc3QgdWludDhf
dCosIHNpemVfdCk7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RnJh
bWUoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IGNvbXB1dGVTYWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0
ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisKKyAgICBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IGVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKyAg
ICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYga2V5KTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1
cmUoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpOwor
CisgICAgTG9jayBtX2tleUxvY2s7CisgICAgYm9vbCBtX2hhc0tleSB7IGZhbHNlIH07CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IG1fYXV0aGVudGljYXRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1fZW5jcnlwdGlvbktleTsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zYWx0S2V5OworCisgICAg
Ym9vbCBtX2lzU2VuZGluZyB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9hdXRoZW50aWNhdGlv
blNpemUgeyAxMCB9OworICAgIHVpbnQ2NF90IG1fa2V5SWQgeyAwIH07CisgICAgdWludDY0X3Qg
bV9jb3VudGVyIHsgMCB9OworfTsKKworaW5saW5lIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OnNldElzU2VuZGluZyhib29sIGlzU2VuZGluZykKK3sKKyAgICBtX2lzU2VuZGluZyA9IGlz
U2VuZGluZzsKK30KKworaW5saW5lIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElz
UHJvY2Vzc2luZ0F1ZGlvKGJvb2wgaXNQcm9jZXNzaW5nQXVkaW8pCit7CisgICAgbV9hdXRoZW50
aWNhdGlvblNpemUgPSBpc1Byb2Nlc3NpbmdBdWRpbyA/IDQgOiAxMDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm1lckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzNkNDI0ODAyZTE5M2NhZDcwZDIx
YmMyMTM3OWY4NTBmYjM1NzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcApAQCAtMCww
ICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgi
CisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29h
LmgiCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQor
eworICAgIHVpbnQ4X3QgdXNhZ2VbXSA9ICJTRnJhbWVTYWx0S2V5IjsKKyAgICByZXR1cm4gZGVy
aXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkgKyAxNiwg
cmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDEyOCk7Cit9CisK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNv
bXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sK
KyAgICB1aW50OF90IHVzYWdlW10gPSAiU0ZyYW1lQXV0aGVudGljYXRpb25LZXkiOworICAgIHJl
dHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEo
KSArIDE2LCByYXdLZXkuc2l6ZSgpIC0gMTYsIHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMjU2
KTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkp
Cit7CisgICAgdWludDhfdCB1c2FnZVtdID0gIlNGcmFtZUVuY3J5cHRpb25LZXkiOworICAgIHJl
dHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEo
KSArIDE2LCByYXdLZXkuc2l6ZSgpIC0gMTYsIHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMTI4
KTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KQoreworICAg
IHJldHVybiB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0RlY3J5cHQsIGl2LCBpdi5zaXplKCksIGtleSwg
ZGF0YSwgc2l6ZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6OmVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSkKK3sKKyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NFbmNyeXB0LCBpdiwgaXYuc2l6
ZSgpLCBrZXksIGRhdGEsIHNpemUpOworfQorCitWZWN0b3I8dWludDhfdD4gUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICBW
ZWN0b3I8dWludDhfdD4gcmVzdWx0KENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICBDQ0ht
YWMoa0NDSG1hY0FsZ1NIQTI1Niwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgZGF0YSwgc2l6ZSwg
cmVzdWx0LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDY0
YTVkNWQ0ZDQ3MDY0NjkzYzA1ZmY4NzIxZWM1ZTM3YjA1Mzk1NjUuLjEwZDA5ZjI3NGFmNTlhZTE4
YjBiODE1MDA3ODFlNWZjNDA0NWE4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNjMsNiArMTYzLDgg
QEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VUcmFuc3BvcnQuY3BwCiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbkljZUV2ZW50LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFu
c2Zvcm0uY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcApAQCAt
MzMxOSw2ICszMzIxLDcgQEAgSlNSVENSdHBIZWFkZXJFeHRlbnNpb25QYXJhbWV0ZXJzLmNwcAog
SlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBSZWNlaXZlci5jcHAKIEpTUlRDUnRwUnR4
UGFyYW1ldGVycy5jcHAKK0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAogSlNSVENSdHBTZW5k
UGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNwcAogSlNSVENSdHBTeW5jaHJvbml6YXRp
b25Tb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAyYWQzM2E5NTUxOTJkOTA3
NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi5mNTAyZTcxYzRmODFlM2ZlNjVkNDBhMTAxOTgyMmYz
YmJkNTMxYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTg5LDYgKzg5LDcgQEAgTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KIE1vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKIE1vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCitNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCiBNb2R1bGVzL3Bs
dWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFi
YXNlTWFuYWdlckNvY29hLm1tCkBAIC0xMjgsNiArMTI5LDcgQEAgY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SZWdpc3RyeU1hYy5jcHAKIGNyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCiBj
cnlwdG8vbWFjL0NyeXB0b0tleU1hYy5jcHAKIGNyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNw
cAorY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAKIGNyeXB0by9tYWMvU2VyaWFs
aXplZENyeXB0b0tleVdyYXBNYWMubW0KIGRvbS9EYXRhVHJhbnNmZXJNYWMubW0KIGRvbS9pb3Mv
TW91c2VFdmVudElPUy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBjOThkMTZhOTFiOGMxY2QwNGY3MGFkY2VlNmZkZGZlYTRk
OTE0ZDAzLi5mZDRiYjVhNWZlOWY0YWVlYzk2MWUxNGZlMTVmMTBiMTdhNTY4NWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MTA5LDYgKzExMDksOCBAQAogCQk0MTgxQzVENjI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0
cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLzsg
fTsKIAkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1RDMy
NTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9OwogCQk0MTgx
QzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkYzRTkyMUMxRjg1NTUw
MDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9OworCQk0MTgxQzY0ODI1
NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQyMjU1QjRDMjYwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxODFDNjRBMjU1QjRDMjgwMEFFQjBGRiAvKiBSVENS
dHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODIwNTQ1
MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4MjZCRjIyM0ZCNTk3NzAwQjkyMkIxIC8q
IERvY3VtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MjZCRjEyM0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQx
ODRGNTE2MUVBRjA1QTgwMEYxOEJGMCAvKiBPcmllbnRhdGlvbk5vdGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBG
MThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzAyLDYgKzc3MDQsMTIgQEAKIAkJNDE4MUM1RDMy
NTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUQ1MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRD
UnRwVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tSVENS
dHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM2MzYyNTVB
RTI2MTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tSVENSdHBU
cmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTgxQzYzRjI1NUI0
QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29h
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDEyNTVCNEMyNjAwQUVC
MEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQz
MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQ1MjU1QjRDMjgw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgyMDU0ODFFNTNFQUFEMDBENjIyMDcgLyog
UlRDQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
VENDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjZCRjEy
M0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEb2N1bWVudElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc3MzUsNiArNzc0Myw4IEBACiAJCTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2
RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxOUJFNzUyMUJDN0YzREIwMEUxQzg1QiAvKiBXZWJDb3JlQnVp
bHRpbk5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVCdWls
dGluTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE5RDkzMDUyNTVFODQy
NzAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0
b1V0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOUQ5MzA3
MjU1RTg0MjgwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCMzU3MiAvKiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFk
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4
QiAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJDRiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTcwODksNiArMTcwOTksMTIgQEAKIAkJCQk0MTNDOEIyRTI1NTJG
MjdCMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oICovLAogCQkJCTQxNEFE
M0ZDMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBTZW5kUGFyYW1ldGVycy5oICovLAogCQkJCTQx
NEFEM0ZFMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBTZW5kUGFyYW1ldGVycy5pZGwgKi8sCisJ
CQkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAg
Ki8sCisJCQkJNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5oICovLAorCQkJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaWRsICovLAorCQkJCTQxODFDNjQxMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lci5jcHAgKi8sCisJCQkJNDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8sCisJCQkJNDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwICovLAogCQkJCTQxNUUxQkI2MjE1
MDE1MkEwMDIyREE5NiAvKiBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaCAqLywKIAkJCQk0
MTVFMUJCNzIxNTAxNTMwMDAyMkRBOTYgLyogUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmlk
bCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIu
Y3BwICovLApAQCAtMjgyNTUsNiArMjgyNzEsOCBAQAogCQkJCTU3NTBBOTdBMUU2OTE2MTYwMDcw
NUM0QSAvKiBDcnlwdG9LZXlFQ01hYy5jcHAgKi8sCiAJCQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5
NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi8sCiAJCQkJRTE2NEZBQTQxODMxNUUxQTAwREI0RTYx
IC8qIENyeXB0b0tleVJTQU1hYy5jcHAgKi8sCisJCQkJNDE5RDkzMDcyNTVFODQyODAwREExOTg0
IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmNwcCAqLywKKwkJCQk0MTlEOTMwNTI1NUU4NDI3MDBE
QTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCAqLywKIAkJCQlFMThERjMzNjE4QUFGMTRE
MDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0gKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IG1hYzsKQEAgLTM0MDkzLDYgKzM0MTExLDggQEAKIAkJCQk0MTNDOEIzNTI1NTJGMjdE
MDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RTJDNDM2MTFCQ0VFMzIzMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTNDOEIzMzI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8q
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4MUM2NDgyNTVC
NEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxRUI1NERGMUU3REM3NDQwMEMxNjIzQiAvKiBSVENSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzQyNTUyRjI3RDAwRTY1
MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNWFlNzM0ZDkwOTBj
MGQwZjc1NDRkMTRmNmNiYmQzMTMxMzRmMTJiOC4uMTRkNmRmNDcyMTgyMWNlNTkxMmYxNThlYzQx
MDAzMjlmMzZiZTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaApAQCAtMjE5LDYgKzIxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbikgXAogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0
aW9uSWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAorICAgIG1hY3JvKFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybSkgXAogICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAogICAgIG1h
Y3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCiAgICAgbWFjcm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19D
VFJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNf
Q1RSTWFjLmNwcAppbmRleCBjYzQxZGE2NWIwZGFjOWM4YjVkYjFhMGU0MmZlMDIwMGI1MjhlYTM4
Li43NTc5ZTQwYWUzN2NhY2U0MjJhMDZlM2ZlYzVlZWU2NGYwMmYxYWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5j
cHAKQEAgLTMxLDEwMCArMzEsMjMgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0N0
clBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgotI2luY2x1ZGUgPENvbW1vbkNy
eXB0by9Db21tb25DcnlwdG8uaD4KKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhf
dD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVyTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQotewotICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBmb2xsb3dpbmcgaGFjayBvbmNlIDxyZGFyOi8vcHJvYmxl
bS8zMTM2MTA1MD4gaXMgZml4ZWQuCi0gICAgLy8gY291bnRlciA9IG5vbmNlICsgY291bnRlcgot
ICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50bHkgY2FuIG5laXRoZXIgcmVzZXQgdGhlIGNvdW50
ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNlIHRoZSBjb3VudGVyIHJlYWNoZXMgaXRzIG1heCB2
YWx1ZSByZXN0cmljdGVkCi0gICAgLy8gYnkgdGhlIGNvdW50ZXJMZW5ndGguIEl0IHRoZW4gaW5j
cmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hvdWxkIHN0YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9w
ZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNzdWUsCi0gICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVy
ZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBvcGVyYXRpb24gaW50byB0d28gcGFydHMuCi0gICAg
c2l6ZV90IG51bWJlck9mQmxvY2tzID0gZGF0YS5zaXplKCkgJSBrQ0NCbG9ja1NpemVBRVMxMjgg
PyBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyOCArIDEgOiBkYXRhLnNpemUoKSAvIGtD
Q0Jsb2NrU2l6ZUFFUzEyODsKLQotICAgIC8vIERldGVjdCBsb29wCi0gICAgaWYgKGNvdW50ZXJM
ZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgbnVtYmVyT2ZCbG9ja3MgPiAoc3RhdGljX2Nh
c3Q8c2l6ZV90PigxKSA8PCBjb3VudGVyTGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICAvLyBDYWxjdWxhdGUgY2FwYWNpdHkgYmVmb3Jl
IG92ZXJmbG93Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6Q291bnRlckJsb2NrSGVscGVy
IGNvdW50ZXJCbG9ja0hlbHBlcihjb3VudGVyLCBjb3VudGVyTGVuZ3RoKTsKLSAgICBzaXplX3Qg
Y2FwYWNpdHkgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291bnRUb092ZXJmbG93U2F0dXJhdGluZygp
OwotCi0gICAgLy8gRGl2aWRlIGRhdGEgaW50byB0d28gcGFydHMgaWYgbmVjZXNzYXJ5LgotICAg
IHNpemVfdCBoZWFkU2l6ZSA9IGRhdGEuc2l6ZSgpOwotICAgIGlmIChjYXBhY2l0eSA8IG51bWJl
ck9mQmxvY2tzKQotICAgICAgICBoZWFkU2l6ZSA9IGNhcGFjaXR5ICoga0NDQmxvY2tTaXplQUVT
MTI4OwotCi0gICAgLy8gZmlyc3QgcGFydDogY29tcHV0ZSB0aGUgZmlyc3Qgbj1jYXBhY2l0eSBi
bG9ja3Mgb2YgZGF0YSBpZiBjYXBhY2l0eSBpcyBpbnN1ZmZpY2llbnQuIE90aGVyd2lzZSwgcmV0
dXJuIHRoZSByZXN1bHQuCi0gICAgQ0NDcnlwdG9yUmVmIGNyeXB0b3I7Ci0gICAgQ0NDcnlwdG9y
U3RhdHVzIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9k
ZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgY291bnRlci5kYXRhKCksIGtl
eS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlw
dG9yKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBoZWFkKENDQ3J5cHRvckdldE91dHB1
dExlbmd0aChjcnlwdG9yLCBoZWFkU2l6ZSwgdHJ1ZSkpOwotCi0gICAgc2l6ZV90IGJ5dGVzV3Jp
dHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YS5kYXRhKCks
IGhlYWRTaXplLCBoZWFkLmRhdGEoKSwgaGVhZC5zaXplKCksICZieXRlc1dyaXR0ZW4pOwotICAg
IGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OwotCi0gICAgdWludDhfdCogcCA9IGhlYWQuZGF0YSgpICsgYnl0ZXNXcml0dGVuOwotICAgIHN0
YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAsIGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNX
cml0dGVuKTsKLSAgICBwICs9IGJ5dGVzV3JpdHRlbjsKLSAgICBpZiAoc3RhdHVzKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gaGVhZC5lbmQoKSk7Ci0gICAgaGVhZC5zaHJpbmso
cCAtIGhlYWQuYmVnaW4oKSk7Ci0KLSAgICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOwotCi0g
ICAgaWYgKGNhcGFjaXR5ID49IG51bWJlck9mQmxvY2tzKQotICAgICAgICByZXR1cm4gV1RGTW92
ZShoZWFkKTsKLQotICAgIC8vIHNlY29uZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0
YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCi0gICAgLy8gcmVzZXQgY291bnRlcgotICAg
IFZlY3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNv
dW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCk7Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRl
V2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9Q
YWRkaW5nLCByZW1haW5pbmdDb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwg
MCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOwotICAgIGlmIChzdGF0dXMp
Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgc2l6
ZV90IHRhaWxTaXplID0gZGF0YS5zaXplKCkgLSBoZWFkU2l6ZTsKLSAgICBWZWN0b3I8dWludDhf
dD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwgdGFpbFNpemUsIHRydWUp
KTsKLQotICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLmRhdGEoKSAr
IGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCksIHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0
dGVuKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKLQotICAgIHAgPSB0YWlsLmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKLSAgICBz
dGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVz
V3JpdHRlbik7Ci0gICAgcCArPSBieXRlc1dyaXR0ZW47Ci0gICAgaWYgKHN0YXR1cykKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICBBU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwuZW5kKCkpOwotICAgIHRhaWwuc2hyaW5r
KHAgLSB0YWlsLmJlZ2luKCkpOwotCi0gICAgQ0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKLQot
ICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOwotICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOwot
fQotCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6
OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmIHBhcmFt
ZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHBs
YWluVGV4dCkKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgp
ID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0ND
RW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBr
ZXkua2V5KCksIHBsYWluVGV4dCk7CisgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5j
cnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXku
a2V5KCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4dC5zaXplKCkpOwogfQogCiBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRGVj
cnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7
Ci0gICAgICBBU1NFUlQocGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Js
b2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRGVjcnlwdCwg
cGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCks
IGNpcGhlclRleHQpOworICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXpl
KCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihr
Q0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgs
IGtleS5rZXkoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNpcGhlclRleHQuc2l6ZSgpKTsKIH0KIAor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtE
Rk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZN
YWMuY3BwCmluZGV4IDZjYWE1ZjNjYmU1MzlmZTY1NGNiN2E5ZmVmZWQ5NGI5YTcyZDU3MzEuLmI0
MTdiNzFjNWM2YWZlNGUyODk0NDg0NTY0MTFlOWU5NWEzNWUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcApAQCAtMjgs
MjUgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoV0VCX0NSWVBUTykKIAotI2luY2x1ZGUgIkNvbW1v
bkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXND
b2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0
b0FsZ29yaXRobUhrZGZQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleVJhdyYga2V5
LCBzaXplX3QgbGVuZ3RoKQogewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8g
OCk7Ci0gICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwotICAgIGdldENvbW1v
bkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBkaWdlc3RB
bGdvcml0aG0pOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwgd2hlbiBrZXkgZGF0YSBp
cyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0LgotICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5kZXI6IFN3aXRjaCB0byBDQ0Rlcml2ZUtleSBub3cg
dGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlzIGRlcHJlY2F0ZWQuCi0gICAgaWYgKENDS2V5RGVy
aXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwgZGlnZXN0QWxnb3JpdGhtLCAwLCBrZXku
a2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCAwLCAwLCBwYXJhbWV0ZXJzLmluZm9WZWN0
b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgMCwgMCwgcGFyYW1l
dGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCks
IHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIHJldHVybiBkZXJpdmVIREtGU0hB
MjU2Qml0cyhrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLnNh
bHRWZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcGFyYW1l
dGVycy5pbmZvVmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5zaXplKCks
IGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9VdGlsaXRpZXNDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBmZDVmM2NiZjcxMjgxNmQ1MTlmZjg1
MTdmZTViZTlkOTVhYTBlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29h
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNs
dWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmgiCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0Nv
bW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUp
Cit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNrIG9u
Y2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBpcyBmaXhlZC4KKyAgICAvLyBjb3VudGVyID0g
bm9uY2UgKyBjb3VudGVyCisgICAgLy8gQ29tbW9uQ3J5cHRvIGN1cnJlbnRseSBjYW4gbmVpdGhl
ciByZXNldCB0aGUgY291bnRlciBub3IgZGV0ZWN0IG92ZXJmbG93IG9uY2UgdGhlIGNvdW50ZXIg
cmVhY2hlcyBpdHMgbWF4IHZhbHVlIHJlc3RyaWN0ZWQKKyAgICAvLyBieSB0aGUgY291bnRlckxl
bmd0aC4gSXQgdGhlbiBpbmNyZW1lbnRzIHRoZSBub25jZSB3aGljaCBzaG91bGQgc3RheSBzYW1l
IGZvciB0aGUgd2hvbGUgb3BlcmF0aW9uLiBUbyByZW1lZHkgdGhpcyBpc3N1ZSwKKyAgICAvLyB3
ZSBkZXRlY3QgdGhlIG92ZXJmbG93IGFoZWFkIGFuZCBkaXZpZGUgdGhlIG9wZXJhdGlvbiBpbnRv
IHR3byBwYXJ0cy4KKyAgICBzaXplX3QgbnVtYmVyT2ZCbG9ja3MgPSBkYXRhU2l6ZSAlIGtDQ0Js
b2NrU2l6ZUFFUzEyOCA/IGRhdGFTaXplIC8ga0NDQmxvY2tTaXplQUVTMTI4ICsgMSA6IGRhdGFT
aXplIC8ga0NDQmxvY2tTaXplQUVTMTI4OworCisgICAgLy8gRGV0ZWN0IGxvb3AKKyAgICBpZiAo
Y291bnRlckxlbmd0aCA8IHNpemVvZihzaXplX3QpICogOCAmJiBudW1iZXJPZkJsb2NrcyA+IChz
dGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IGNvdW50ZXJMZW5ndGgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0
eSBiZWZvcmUgb3ZlcmZsb3cKKyAgICBDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxv
Y2tIZWxwZXIgY291bnRlckJsb2NrSGVscGVyKGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOworICAg
IHNpemVfdCBjYXBhY2l0eSA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudFRvT3ZlcmZsb3dTYXR1
cmF0aW5nKCk7CisKKyAgICAvLyBEaXZpZGUgZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3Nh
cnkuCisgICAgc2l6ZV90IGhlYWRTaXplID0gZGF0YVNpemU7CisgICAgaWYgKGNhcGFjaXR5IDwg
bnVtYmVyT2ZCbG9ja3MpCisgICAgICAgIGhlYWRTaXplID0gY2FwYWNpdHkgKiBrQ0NCbG9ja1Np
emVBRVMxMjg7CisKKyAgICAvLyBmaXJzdCBwYXJ0OiBjb21wdXRlIHRoZSBmaXJzdCBuPWNhcGFj
aXR5IGJsb2NrcyBvZiBkYXRhIGlmIGNhcGFjaXR5IGlzIGluc3VmZmljaWVudC4gT3RoZXJ3aXNl
LCByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICBDQ0NyeXB0b3JSZWYgY3J5cHRvcjsKKyAgICBDQ0Ny
eXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBr
Q0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCBjb3VudGVyLmRhdGEo
KSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwg
JmNyeXB0b3IpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBP
cGVyYXRpb25FcnJvciB9OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGhlYWQoQ0NDcnlwdG9yR2V0
T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGhlYWRTaXplLCB0cnVlKSk7CisKKyAgICBzaXplX3QgYnl0
ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLCBo
ZWFkU2l6ZSwgaGVhZC5kYXRhKCksIGhlYWQuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBp
ZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
KworICAgIHVpbnQ4X3QqIHAgPSBoZWFkLmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0
dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCBoZWFkLmVuZCgpIC0gcCwgJmJ5dGVzV3Jp
dHRlbik7CisgICAgcCArPSBieXRlc1dyaXR0ZW47CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihwIDw9IGhlYWQuZW5kKCkpOworICAgIGhlYWQuc2hyaW5rKHAg
LSBoZWFkLmJlZ2luKCkpOworCisgICAgQ0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKKworICAg
IGlmIChjYXBhY2l0eSA+PSBudW1iZXJPZkJsb2NrcykKKyAgICAgICAgcmV0dXJuIFdURk1vdmUo
aGVhZCk7CisKKyAgICAvLyBzZWNvbmQgcGFydDogY29tcHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEg
YW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBoZWFkLgorICAgIC8vIHJlc2V0IGNvdW50ZXIKKyAgICBW
ZWN0b3I8dWludDhfdD4gcmVtYWluaW5nQ291bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3Vu
dGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygpOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdp
dGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFk
ZGluZywgcmVtYWluaW5nQ291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAs
IDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKKyAgICBpZiAoc3RhdHVzKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHNpemVf
dCB0YWlsU2l6ZSA9IGRhdGFTaXplIC0gaGVhZFNpemU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRh
aWwoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIHRhaWxTaXplLCB0cnVlKSk7CisK
KyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5cHRvciwgZGF0YSArIGhlYWRTaXplLCB0
YWlsU2l6ZSwgdGFpbC5kYXRhKCksIHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBp
ZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
KworICAgIHAgPSB0YWlsLmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0Ny
eXB0b3JGaW5hbChjcnlwdG9yLCBwLCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7Cisg
ICAgcCArPSBieXRlc1dyaXR0ZW47CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihwIDw9IHRhaWwuZW5kKCkpOworICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJl
Z2luKCkpOworCisgICAgQ0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKKworICAgIGhlYWQuYXBw
ZW5kVmVjdG9yKHRhaWwpOworICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOworfQorCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZTSEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3Qq
IGtleSwgc2l6ZV90IGtleVNpemUsIGNvbnN0IHVpbnQ4X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6
ZSwgY29uc3QgdWludDhfdCogaW5mbywgc2l6ZV90IGluZm9TaXplLCBzaXplX3QgbGVuZ3RoKQor
eworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGluZm9WZWN0b3I7CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTQ1NT4gQ3VycmVudGx5LCB3aGVuIGtl
eSBkYXRhIGlzIGVtcHR5LCBDQ0tleURlcml2YXRpb25ITWFjIHdpbGwgYmFpbCBvdXQuCisgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzQ4ODk2MDIxPiBSZW1pbmRlcjogU3dpdGNoIHRvIENDRGVyaXZl
S2V5IG5vdyB0aGF0IENDS2V5RGVyaXZhdGlvbkhNYWMgaXMgZGVwcmVjYXRlZC4KKyAgICBpZiAo
Q0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZBbGdvcml0aG1IS0RGLCBrQ0NEaWdlc3RTSEEyNTYs
IDAsIGtleSwga2V5U2l6ZSwgMCwgMCwgaW5mbywgaW5mb1NpemUsIDAsIDAsIHNhbHQsIHNhbHRT
aXplLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNlM2E5
NjA2ZWQ1ZTIwNWEwZGFiOTAyOTgzMDQ3YjQ1MmZjY2VkYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaApAQCAtMCwwICsx
LDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBU
TykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRlZiB1aW50MzJfdCBDQ09wZXJhdGlvbjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9y
bUFFU19DVFIoQ0NPcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6
ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBkZXJpdmVIREtGU0hBMjU2Qml0cyhjb25zdCB1aW50OF90KiBrZXksIHNpemVfdCBrZXlTaXpl
LCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qgc2FsdFNpemUsIGNvbnN0IHVpbnQ4X3QqIGlu
Zm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxlbmd0aCk7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAxNjFhMjhmNDEzZjBlZTEyY2Ew
ZmMyM2I1MDdiZDQ0MTY5MjliMTNlLi4wNmFlMjQzODcyZjI3MzU5Y2JiZjU2NjM1MzViZDdkMzQw
NzkyNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNTMsNiArMTUz
LDcgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIK
ICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgpAQCAtMTU4NSw2ICsxNTg2LDExIEBA
IFJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBJbnRlcm5hbHM6OmNyZWF0ZU1vY2tSVENSdHBUcmFu
c2Zvcm0oKQogICAgIHJldHVybiBNb2NrUlRDUnRwVHJhbnNmb3JtOjpjcmVhdGUoKTsKIH0KIAor
dWludDY0X3QgSW50ZXJuYWxzOjpzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtKQoreworICAgIHJldHVybiB0cmFuc2Zvcm0uY291bnRlckZvclRlc3Rp
bmcoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24oYm9v
bCB2YWx1ZSkKIHsKICNpZiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKaW5kZXggMjQ4NWUxM2Q2ZDQ5NTYzNzllNjg2NjUwOGIwMTZlYjE0MjRmZTY2ZS4uNTJkMDUy
ZGE2OTNmZWJjZTcxYjNkMjJiNzVlMzMzMjlkYTNhOWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCkBAIC0xMjQsNiArMTI0LDEwIEBAIGNsYXNzIFRleHRUcmFja0N1ZUdlbmVyaWM7
CiBjbGFzcyBTZXJ2aWNlV29ya2VyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKK2Ns
YXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQlhSKQog
Y2xhc3MgV2ViWFJUZXN0OwogI2VuZGlmCkBAIC02MDgsNiArNjEyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sKTsKICAgICB2b2lkIHNldFdlYlJUQ1ZQOVZU
QlN1cHBvcnQoYm9vbCk7CiAgICAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IGNyZWF0ZU1vY2tS
VENSdHBUcmFuc2Zvcm0oKTsKKyAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgc2V0RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihi
b29sKTsKICAgICB2b2lkIHNldFVzZURUTFMxMChib29sKTsKICAgICB2b2lkIHNldFVzZUdQVVBy
b2Nlc3NGb3JXZWJSVEMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5k
ZXggYjAxNTRiMjk4NTgwYmZhZDMzM2ExMTRhZjM4NGQxZGE5MDllMTY4Mi4uMTQwYTZhNTA0ZGI1
ZDBlNTcwYTZiYTNlNzQ4MWRlZGNmZWE0NDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbApAQCAtODAzLDYgKzgwMyw3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRp
b25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sZWFuIGFsbG93
ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5VlRC
U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSBNb2Nr
UlRDUnRwVHJhbnNmb3JtIGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKKyAgICBbQ29uZGl0
aW9uYWw9V0VCX1JUQ10gdW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtIHRyYW5zZm9ybSk7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
XSB1bmRlZmluZWQgc2V0TW9ja0F1ZGlvVHJhY2tDaGFubmVsTnVtYmVyKE1lZGlhU3RyZWFtVHJh
Y2sgdHJhY2ssIHVuc2lnbmVkIHNob3J0IGNvdW50KTsKICAgICBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNXSB1bmRlZmluZWQgc2V0U2hvdWxkSW50ZXJydXB0QXVkaW9PblBhZ2VWaXNpYmlsaXR5
Q2hhbmdlKGJvb2xlYW4gc2hvdWxkSW50ZXJydXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsCmluZGV4IDA5ZWIwYzNjYTE1YzVmMTk3ZjM2Y2Zi
NDc0OWMxMTgwNmU4YWM3NzcuLmRlNjMxODc2MDU5NGI2OWYyN2EwMWQ2NWUwODg5ODA1ZjMzNzQx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9y
bS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlk
bApAQCAtMjYsNiArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCiAgICAgSlNH
ZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAogICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTW9ja1JUQ1J0cFRyYW5zZm9ybSA6
IFJUQ1J0cFRyYW5zZm9ybSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNQcm9j
ZXNzaW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDM4NWExYmVhYzFiOGI0NmNmZWI2YzYyYjg0MDc2ZWU5NzhkMjdhZGQuLjdhZGI1NjFmZDky
MDFjMzEyODYwMWEzNDA5NmVhODBjM2QyMzhmNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0xMyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgV2ViUlRDIFNG
cmFtZSB0cmFuc2Zvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxODc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB1bml0IHRlc3RzIHRoYXQgdmFsaWRhdGUgU0ZyYW1lIGdlbmVyYXRpb24gYW5k
IHBhcnNpbmcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Z2V0UmF3S2V5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVZp
ZGVvVHJhbnNmb3JtZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tWZWN0b3JzQXJl
RXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTEtMTAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjI2OTUyNSk6IE1hbnkgbGF5b3V0IHRlc3RzIGNyYXNoIHdoZW4gcnVuIHVuZGVyIEFTYW4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTJjODAxMGNlZmFjMzVmMDZlOGMzYmNiNDc4M2Nk
OTM3MTQ5NWY3Mi4uYjVmODJjNzU0NzRiMzIwYjY4Y2QzNDlhMzliY2MzOTI3YmViOTI5NyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNiw2ICsyMzYsNyBAQAogCQk0MTM1RkI4NTIwMTFG
QUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNUZCODYyMDExRkFCRjAwMzMy
MTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLzsgfTsKIAkJNDE0QUQ2ODYyMjg1
RDFDMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEFENjg1MjI4NUQxQjAwMDc3N0YyRCAvKiBTdG9yYWdl
UXVvdGEubW0gKi87IH07CiAJCTQxNjYxQzY2MjM1NUU4NUUwMEQzM0MyNyAvKiBnZXRVc2VyTWVk
aWEtd2ViYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTY2MUM2NTIzNTVEOThCMDBEMzNDMjcgLyogZ2V0VXNlck1lZGlhLXdl
YmF1ZGlvLmh0bWwgKi87IH07CisJCTQxODFDNjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lclRlc3RzLmNwcCAqLzsgfTsKIAkJNDE4NDhGNDQyNDg5MTg3OTAwMEUyNTg4IC8q
IG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4NDhGNDMyNDg5MTgxNTAw
MEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgKi87IH07
CiAJCTQxODgyRjAzMjEwMTBDMEQwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODgyRjAyMjEwMTBB
NzAwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSAqLzsgfTsKIAkJNDQwNzdCQjEyMzE0
NEI1MDAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwNzdCQjAyMzE0NDlEMjAwMTc5RTJEIC8q
IERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tICovOyB9OwpAQCAtMTk1NSw2ICsxOTU2LDcgQEAKIAkJ
NDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVk
Lm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxNEFENjg1MjI4NUQxQjAwMDc3N0Yy
RCAvKiBTdG9yYWdlUXVvdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9yYWdlUXVvdGEu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjYxQzY1MjM1NUQ5OEIwMEQzM0My
NyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
clRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRo
LWhvc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLXdpbmRvdy13aXRo
LWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1ByZVdhcm1pbmcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBT
aGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hh
cmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MTksNiArMzUy
MSw3IEBACiAJCQkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAg
Ki8sCiAJCQkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNw
cCAqLywKIAkJCQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RUZXN0cy5j
cHAgKi8sCisJCQkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyVGVzdHMuY3BwICovLAogCQkJCUNEQ0ZBN0E5MUU0NTEyMkYwMEMyNDMzRCAvKiBTYW1w
bGVNYXAuY3BwICovLAogCQkJCUNFMDZERjlBMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0eU9y
aWdpbi5jcHAgKi8sCiAJCQkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZl
ci5jcHAgKi8sCkBAIC01NDA1LDYgKzU0MDgsNyBAQAogCQkJCTVDQ0IxMEUzMjEzNDU3RDgwMEFD
NUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0NkU4MTZGODFFNzlFMjlDMDAzNzVBREMgLyogUmVzdG9yZVN0YXRlQWZ0ZXJU
ZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0MThCRTE1MUY3MUI3REMwMDE5NzBF
NiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxODFDNjJEMjU1
QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExODBDMEZBMUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNEQyOTg2RTIwRkVFNzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0
QWZ0ZXJEb2N1bWVudExvYWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0E5ODU1MzIxMTNDRjc4
MDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJU
ZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXJUZXN0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjM3N2IxM2JiZjNmOGU2ODAwZTJhNDE0
OGEzN2EzYTE0NjVmZTJhMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcApAQCAtMCwwICsx
LDM1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK1ZlY3Rvcjx1aW50OF90PiBnZXRSYXdLZXkoKQoreworICAgIHJldHVybiBWZWN0b3I8dWlu
dDhfdD46OmZyb20oCisgICAgICAgIDI0OSwKKyAgICAgICAgMTk1LAorICAgICAgICAyMDIsCisg
ICAgICAgIDE1OSwKKyAgICAgICAgNTYsCisgICAgICAgIDE5MSwKKyAgICAgICAgMTAzLAorICAg
ICAgICAyNDcsCisgICAgICAgIDI0NSwKKyAgICAgICAgMjEzLAorICAgICAgICAyMCwKKyAgICAg
ICAgNjgsCisgICAgICAgIDY3LAorICAgICAgICAyMCwKKyAgICAgICAgMTUxLAorICAgICAgICAx
ODUsCisgICAgICAgIDI0MiwKKyAgICAgICAgNzgsCisgICAgICAgIDE3NiwKKyAgICAgICAgMTU4
LAorICAgICAgICA5MSwKKyAgICAgICAgMjA1LAorICAgICAgICAxMzgsCisgICAgICAgIDU1LAor
ICAgICAgICAxNzYsCisgICAgICAgIDE0NywKKyAgICAgICAgMTk4LAorICAgICAgICAyNDMsCisg
ICAgICAgIDE0NiwKKyAgICAgICAgMjA0LAorICAgICAgICAyNDMsCisgICAgICAgIDIyMAorICAg
ICk7Cit9CisKK3N0YXRpYyBSZWY8V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IGNy
ZWF0ZVZpZGVvVHJhbnNmb3JtZXIoYm9vbCBpc1NlbmRpbmcgPSB0cnVlKQoreworICAgIGF1dG8g
dHJhbnNmb3JtZXIgPSBXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCk7
CisgICAgdHJhbnNmb3JtZXItPnNldElzU2VuZGluZyhpc1NlbmRpbmcpOworICAgIHRyYW5zZm9y
bWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhmYWxzZSk7CisKKyAgICBhdXRvIGtleUlkID0gVmVj
dG9yPHVpbnQ4X3Q+Ojpmcm9tKDE5OCwgMzEsIDI1MSwgMTk3LCA0OCwgMTM5LCA5MSwgNTEpOwor
ICAgIHVpbnQ2NF90IGtleUlkVmFsdWUgPSAwOworICAgIGZvciAoYXV0byB2YWx1ZSA6IGtleUlk
KQorICAgICAgICBrZXlJZFZhbHVlID0gdmFsdWUgKyAoa2V5SWRWYWx1ZSA8PCA4KTsKKworICAg
IGF1dG8ga2V5UmVzdWx0ID0gdHJhbnNmb3JtZXItPnNldEVuY3J5cHRpb25LZXkoZ2V0UmF3S2V5
KCksIGtleUlkVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShrZXlSZXN1bHQuaGFzRXhjZXB0aW9u
KCkpOworCisgICAgcmV0dXJuIHRyYW5zZm9ybWVyOworfQorCitzdGF0aWMgdm9pZCBjaGVja1Zl
Y3RvcnNBcmVFcXVhbChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvbXB1dGVkLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGV4cGVjdGVkKQoreworICAgIEVYUEVDVF9FUShjb21wdXRlZC5zaXplKCks
IGV4cGVjdGVkLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBzdGQ6
Om1pbihjb21wdXRlZC5zaXplKCksIGV4cGVjdGVkLnNpemUoKSk7ICsrY3B0cikKKyAgICAgICAg
RVhQRUNUX0VRKGNvbXB1dGVkW2NwdHJdLCBleHBlY3RlZFtjcHRyXSk7Cit9CisKK1RFU1QoUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIsIEF1dGhlbnRpY2F0aW9uS2V5KQoreworICAgIGF1dG8gdHJh
bnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAgY2hlY2tWZWN0b3JzQXJl
RXF1YWwodHJhbnNmb3JtZXItPmF1dGhlbnRpY2F0aW9uS2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6
ZnJvbSgKKyAgICAgICAgOTIsCisgICAgICAgIDIyOCwKKyAgICAgICAgMTM5LAorICAgICAgICAx
OTUsCisgICAgICAgIDk4LAorICAgICAgICAxNiwKKyAgICAgICAgNCwKKyAgICAgICAgMTkzLAor
ICAgICAgICAyMjEsCisgICAgICAgIDI0OCwKKyAgICAgICAgMjMyLAorICAgICAgICAxNzgsCisg
ICAgICAgIDEzNSwKKyAgICAgICAgMjIsCisgICAgICAgIDE0MSwKKyAgICAgICAgMTUwLAorICAg
ICAgICAxNjUsCisgICAgICAgIDI0MiwKKyAgICAgICAgNzMsCisgICAgICAgIDcyLAorICAgICAg
ICAxMCwKKyAgICAgICAgMTk3LAorICAgICAgICAxNSwKKyAgICAgICAgODcsCisgICAgICAgIDE4
MSwKKyAgICAgICAgMzQsCisgICAgICAgIDEyMCwKKyAgICAgICAgNzEsCisgICAgICAgIDQyLAor
ICAgICAgICAxNzQsCisgICAgICAgIDEzMSwKKyAgICAgICAgNzIKKyAgICApKTsKK30KKworVEVT
VChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlwdGlvbktleSkKK3sKKyAgICBhdXRvIHRy
YW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGNoZWNrVmVjdG9yc0Fy
ZUVxdWFsKHRyYW5zZm9ybWVyLT5lbmNyeXB0aW9uS2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJv
bSgKKyAgICAgICAgMjA3LAorICAgICAgICAyNTEsCisgICAgICAgIDUyLAorICAgICAgICAyMSwK
KyAgICAgICAgMTAxLAorICAgICAgICA1MCwKKyAgICAgICAgMjMyLAorICAgICAgICA0OCwKKyAg
ICAgICAgMjExLAorICAgICAgICAxMTUsCisgICAgICAgIDExLAorICAgICAgICAxNTUsCisgICAg
ICAgIDEwMSwKKyAgICAgICAgMTE2LAorICAgICAgICAxNTMsCisgICAgICAgIDcxCisgICAgKSk7
Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFNhbHRLZXkpCit7CisgICAgYXV0
byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBjaGVja1ZlY3Rv
cnNBcmVFcXVhbCh0cmFuc2Zvcm1lci0+c2FsdEtleSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20o
CisgICAgICAgIDIyOSwKKyAgICAgICAgMTksCisgICAgICAgIDQyLAorICAgICAgICA5MywKKyAg
ICAgICAgMTY0LAorICAgICAgICAxMDMsCisgICAgICAgIDEyMCwKKyAgICAgICAgNTMsCisgICAg
ICAgIDI1LAorICAgICAgICAyNiwKKyAgICAgICAgMjM3LAorICAgICAgICAyMDQsCisgICAgICAg
IDc5LAorICAgICAgICAxMzgsCisgICAgICAgIDEzOCwKKyAgICAgICAgMjMxCisgICAgKSk7Cit9
CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIEVuY3J5cHREZWNyeXB0KQoreworICAg
IGF1dG8gZW5jcnlwdG9yID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGF1dG8gZGVj
cnlwdG9yID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihmYWxzZSk7CisgICAgYXV0byBmcmFtZSA9
IFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgxMzUsIDg5LCA1MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAx
MTEsIDE5MCwgMTM0LCAyMjApOworCisgICAgYXV0byBlbmNyeXB0ZWRSZXN1bHQgPSBlbmNyeXB0
b3ItPnRyYW5zZm9ybShmcmFtZS5kYXRhKCksIGZyYW1lLnNpemUoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGVuY3J5cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBhdXRvIGVuY3J5cHRl
ZCA9IGVuY3J5cHRlZFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGRlY3J5
cHRlZFJlc3VsdCA9IGRlY3J5cHRvci0+dHJhbnNmb3JtKGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5
cHRlZC5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRShkZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpOworCisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwoZGVjcnlwdGVkUmVzdWx0LnJldHVy
blZhbHVlKCksIGZyYW1lKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5j
cnlwdERlY3J5cHRLZXlJRDApCit7CisgICAgYXV0byBlbmNyeXB0b3IgPSBjcmVhdGVWaWRlb1Ry
YW5zZm9ybWVyKCk7CisgICAgZW5jcnlwdG9yLT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tleSgp
LCAwKTsKKworICAgIGF1dG8gZGVjcnlwdG9yID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihmYWxz
ZSk7CisgICAgZGVjcnlwdG9yLT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tleSgpLCAwKTsKKwor
ICAgIGF1dG8gZnJhbWUgPSBWZWN0b3I8dWludDhfdD46OmZyb20oMTM1LCA4OSwgNTEsIDE2Niwg
MjQ4LCAxMjksIDE1NywgMTExLCAxOTAsIDEzNCwgMjIwKTsKKworICAgIGF1dG8gZW5jcnlwdGVk
UmVzdWx0ID0gZW5jcnlwdG9yLT50cmFuc2Zvcm0oZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkp
OworICAgIEVYUEVDVF9GQUxTRShlbmNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisg
ICAgYXV0byBlbmNyeXB0ZWQgPSBlbmNyeXB0ZWRSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7
CisgICAgYXV0byBkZWNyeXB0ZWRSZXN1bHQgPSBkZWNyeXB0b3ItPnRyYW5zZm9ybShlbmNyeXB0
ZWQuZGF0YSgpLCBlbmNyeXB0ZWQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGVjcnlwdGVk
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGRlY3J5
cHRlZFJlc3VsdC5yZXR1cm5WYWx1ZSgpLCBmcmFtZSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIsIFRyYW5zZm9ybUNvdW50ZXIwKQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIg
PSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisKKyAgICB1aW50OF90IGZyYW1lMVtdID0geyAx
MzUsIDg5LCA1MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjAgfTsKKyAg
ICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJh
bWUxKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBj
aGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1
aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMTUsCisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisg
ICAgICAgIDI1MSwKKyAgICAgICAgMTk3LAorICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAg
ICAgICA5MSwKKyAgICAgICAgNTEsCisgICAgICAgIDAsCisgICAgICAgIDI1NCwKKyAgICAgICAg
MTcxLAorICAgICAgICAxNjgsCisgICAgICAgIDEyNywKKyAgICAgICAgMTU4LAorICAgICAgICA5
NywKKyAgICAgICAgNzAsCisgICAgICAgIDQsCisgICAgICAgIDIzMywKKyAgICAgICAgMTU2LAor
ICAgICAgICAxMzQsCisgICAgICAgIDIyMCwKKyAgICAgICAgNDQsCisgICAgICAgIDUwLAorICAg
ICAgICA5MCwKKyAgICAgICAgMywKKyAgICAgICAgNjgsCisgICAgICAgIDIwMCwKKyAgICAgICAg
MTI3LAorICAgICAgICAyMjMsCisgICAgICAgIDYKKyAgICApKTsKK30KKworVEVTVChSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjI1NikKK3sKKyAgICBhdXRvIHRyYW5z
Zm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworCisgICAgdWludDhfdCBmcmFtZTFb
XSA9IHsgOCwgMTY0LCAxODksIDE4LCA2MSwgMTE3LCAxMzIsIDQzLCAxMTcsIDE2OSwgNDIgfTsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IFZlY3Rv
cjx1aW50OF90PigpOworICAgIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUx
LCBzaXplb2YoZnJhbWUxKSk7CisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCAyNTY7
ICsrY3B0cikgeworICAgICAgICByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1l
MSwgc2l6ZW9mKGZyYW1lMSkpOworICAgICAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKTsKKyAgICB9CisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDMxLAorICAgICAg
ICAxOTgsCisgICAgICAgIDMxLAorICAgICAgICAyNTEsCisgICAgICAgIDE5NywKKyAgICAgICAg
NDgsCisgICAgICAgIDEzOSwKKyAgICAgICAgOTEsCisgICAgICAgIDUxLAorICAgICAgICAxLAor
ICAgICAgICAwLAorICAgICAgICAxMjQsCisgICAgICAgIDIxOCwKKyAgICAgICAgNjEsCisgICAg
ICAgIDIzLAorICAgICAgICA3OCwKKyAgICAgICAgMTUsCisgICAgICAgIDE5MCwKKyAgICAgICAg
MzUsCisgICAgICAgIDI1NSwKKyAgICAgICAgMjUzLAorICAgICAgICAxMjAsCisgICAgICAgIDY0
LAorICAgICAgICAyOCwKKyAgICAgICAgMTgzLAorICAgICAgICAxNzIsCisgICAgICAgIDE1NCwK
KyAgICAgICAgMTQ0LAorICAgICAgICAxNiwKKyAgICAgICAgMjI5LAorICAgICAgICA4NywKKyAg
ICAgICAgNTIKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJh
bnNmb3JtQ291bnRlcjY1NTM2KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRl
b1RyYW5zZm9ybWVyKCk7CisgICAgdHJhbnNmb3JtZXItPnNldENvdW50ZXIoNjU1MzYpOworCisg
ICAgdWludDhfdCBmcmFtZTFbXSA9IHsgMCwgMzMsIDI0NCwgMjQsIDIzNiwgMTU2LCAxMjcsIDgs
IDQ4LCA4OCwgMjIwIH07CisgICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3Jt
KGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpOworCisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDQ3LAorICAgICAgICAx
OTgsCisgICAgICAgIDMxLAorICAgICAgICAyNTEsCisgICAgICAgIDE5NywKKyAgICAgICAgNDgs
CisgICAgICAgIDEzOSwKKyAgICAgICAgOTEsCisgICAgICAgIDUxLAorICAgICAgICAxLAorICAg
ICAgICAwLAorICAgICAgICAwLAorICAgICAgICA5OCwKKyAgICAgICAgMjEyLAorICAgICAgICAx
MzcsCisgICAgICAgIDI0NCwKKyAgICAgICAgMjA5LAorICAgICAgICAxNiwKKyAgICAgICAgODks
CisgICAgICAgIDIzNCwKKyAgICAgICAgMjEsCisgICAgICAgIDE3MSwKKyAgICAgICAgMTUsCisg
ICAgICAgIDEwNywKKyAgICAgICAgNTAsCisgICAgICAgIDE0NSwKKyAgICAgICAgNzMsCisgICAg
ICAgIDEwNywKKyAgICAgICAgMTY1LAorICAgICAgICA0NSwKKyAgICAgICAgMTkwLAorICAgICAg
ICAyNSwKKyAgICAgICAgODIKKyAgICApKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9SVEMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNGIzM2ZmZWUzMzc0NDc1ODllM2VkMWVhMGIyYjVkYWU3YzE0NjYyNy4u
OWEzNjI1YmYyYWQ3MWZjNzcyZTNlOWVmYmZlNzFlMmE3ODZkMmU5ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDIwLTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgYSBXZWJSVEMgU0ZyYW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRjL2F1ZGlvLXNmcmFtZS5odG1sOiBBZGRl
ZC4KKwogMjAyMC0xMS0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzA2YjRj
OTI1YWUyYTkyMzE3NjQ5ZTI3ODcxNWFmNmM5NWJiZTg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKKworUEFTUyBBdWRpbyBleGNoYW5nZSB3aXRoIFNGcmFtZQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVk
aW8tc2ZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2Yjc1MGMwZGY1NjdkYmU0OWNhZWMxMmEwYTRm
YmYyOWNlZDJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1z
ZnJhbWUuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0iYXVkaW8iIGF1dG9wbGF5
IHBsYXlzSW5saW5lPjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9
PiB7CisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBh
d2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsK
KyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3
IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAy
NCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwg
ImRlcml2ZUtleSJdKTsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5l
Y3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFj
ayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAg
ICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyAgICAgICAg
ICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7CisgICAgICAgICAgICBzZW5kZXIu
dHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4g
eworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+
IHsKKyAgICAgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkpOwor
ICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAg
ICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgICAgICAgICAg
cmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAg
fSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1
MDAwKTsKKyAgICB9KTsKKworICAgIGF1ZGlvLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2Fp
dCBhdWRpby5wbGF5KCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBj
b25zdCBzZW5kZXJDb3VudGVyID0gaW50ZXJuYWxzLnNmcmFtZUNvdW50ZXIoc2VuZGVyLnRyYW5z
Zm9ybSk7CisgICAgICAgIGNvbnN0IHJlY2VpdmVyQ291bnRlciA9IGludGVybmFscy5zZnJhbWVD
b3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSk7CisKKyAgICAgICAgbGV0IGNvdW50ZXIgPSAwOwor
ICAgICAgICB3aGlsZSAocmVjZWl2ZXJDb3VudGVyID09PSBpbnRlcm5hbHMuc2ZyYW1lQ291bnRl
cihyZWNlaXZlci50cmFuc2Zvcm0pICYmICsrY291bnRlciA8IDEwMCkKKyAgICAgICAgICAgIGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOworICAg
ICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihyZWNlaXZlci50
cmFuc2Zvcm0pLCByZWNlaXZlckNvdW50ZXIsICJyZWNlaXZlciIpOworICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyhpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihzZW5kZXIudHJhbnNmb3JtKSwgc2Vu
ZGVyQ291bnRlciwgInNlbmRlciIpOworICAgIH0KK30sICJBdWRpbyBleGNoYW5nZSB3aXRoIFNG
cmFtZSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="430761"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414026</attachid>
            <date>2020-11-13 02:50:21 -0800</date>
            <delta_ts>2020-11-13 03:55:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218752-20201113115017.patch</filename>
            <type>text/plain</type>
            <size>79983</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uYjc1M2M2N2ExY2UwZTg5NjVkZjJhODQ1ZTkxOWY2
NWE1Y2RlNzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRoYXQgaW1wbGVtZW50cyB0
aGUgU0ZyYW1lIGZvcm1hdC4KKyAgICAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGlzIGEgUlRD
UnRwVHJhbnNmb3JtIHRoYXQgY2FuIGJlIHNldCB0byBSVENSdHAgc2VuZGVyIGFuZCByZWNlaXZl
ciBvYmplY3RzLgorICAgICAgICBBUEkgc3VwcG9ydHMgc2V0dGluZyBlbmNyeXB0aW9uIGtleS4K
KyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gcmV1c2UgV2ViQ3J5cHRvIHJvdXRpbmVzIGZv
ciBlbmNyeXB0aW9uL2RlY3J5cHRpb24uCisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxl
bmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlWKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1
dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5
cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRl
Y3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUpOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcml2
ZUhES0ZTSEEyNTZCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjMjk5ZDgzMGNiNjFlOTQ0NjlkOGU2MmI3MmJkODU3ZTMxNDhjYmIzLi45
NGQwNjJiZjk5M2QxYjRjN2M0NDQyNGZhNGU5MTY1N2Y0MDA3ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNDAyLDYgKzQwMiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitU
cmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
NjliNjg2MWI2YWZhMWQwYWMwOTdiMWJkMzEwNjQ0ODNlZWM3NTE5Li4zOTY1ZTZjZDA1ZDQyZjM2
NTBiMjU3ZTM5Nzc0OTU0ZjIwNWI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIzNiw2ICsyMzYsNyBAQCAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZGI2NzEwMDg4ZWYyNDU0NDgzMDI1ZTAxZTRhYTdjZTVkZmVjMzA0Yy4uMjZkM2Mx
NGEyYTY4Yjg5MTY2OWViMGQ1NjAyN2NlNGY1Y2U3M2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3MDUsNiArMTcwNSw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFJlY2VpdmVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlhZTQwYzE4Nzk2
ODkzODE3Yjg0MTY1MjdjMjQwYWY3MjNlOGYxMTYuLmE1ZmI0NWI4MGZiMDFmZDk5MGI0NWY2NmM3
NWIyZGFjNTc5Zjc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYzLDYg
KzI2Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjMwZWZkZTIyMTkzZDAwMjQyMTM0MWJhZGY1Mzc4OTE1YjY4NDEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSVENSdHBTRnJhbWVUcmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybSgpCisgICAgOiBtX3RyYW5zZm9ybWVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpj
cmVhdGUoKSkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJh
bnNmb3JtKCkKK3sKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRp
b25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5h
bGdvcml0aG0oKTsKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxn
b3JpdGhtPihhbGdvcml0aG0pKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIkludmFsaWQga2V5Il9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdURjo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9
ICJIS0RGIikgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8m
IHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNlLnNldHRs
ZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5SWQpKTsK
K30KKwordWludDY0X3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtZXItPmNvdW50ZXIoKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAgbV90cmFuc2Zvcm1lci0+
c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5zZm9ybWVyLT5z
ZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1h
YmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0g
bWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBm
cmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBhIGZyYW1lIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJl
dHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisKKyAg
ICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZSkpOwor
ICAgIH0pOworfQorCisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAg
aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVy
KGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
Ojp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYx
NGJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENy
eXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CisgICAgflJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSgpOworCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9w
dGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9p
ZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmlu
YWw7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBm
aW5hbDsKKworICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKKyAgICB2
b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7
CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4
N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2lu
ZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CisgICAgY29uc3RydWN0b3IoKTsKKwor
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBtaXNzaW5nIG1ldGhvZHMuCisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHJhdGNo
ZXRFbmNyeXB0aW9uS2V5KCk7CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHNldFNpZ25pbmdL
ZXkoQ3J5cHRvS2V5IGtleSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NjE4NDdjM2Q4MzliNzNiM2E2NDY2YmE2ZDc2MmY1ZThmNGU5Mjc3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1aW50OF90KiBk
YXRhLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMZW5ndGg7ICsraSkKKyAgICAgICAgKmRhdGErKyA9ICh2
YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0gMSAtIGkpICogOCkpICYgMHhmZjsKK30KKworc3RhdGlj
IGlubGluZSB1aW50OF90IGxlbmd0aE9mVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIHVp
bnQ4X3QgbGVuZ3RoID0gMDsKKyAgICBkbyB7CisgICAgICAgICsrbGVuZ3RoOworICAgICAgICB2
YWx1ZSA9IHZhbHVlID4+IDg7CisgICAgfSB3aGlsZSAodmFsdWUpOworICAgIHJldHVybiBsZW5n
dGg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBjb21wdXRlRmlyc3RIZWFkZXJCeXRlKHVp
bnQ2NF90IGtleUlkLCB1aW50NjRfdCBjb3VudGVyKQoreworICAgIHVpbnQ4X3QgdmFsdWUgPSAw
OworICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChjb3VudGVyKSAtIDEpIDw8IDQ7CisgICAg
aWYgKGtleUlkIDwgOCkKKyAgICAgICAgdmFsdWUgfD0ga2V5SWQ7CisgICAgZWxzZSB7CisgICAg
ICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChrZXlJZCkgLSAxKTsKKyAgICAgICAgdmFsdWUg
fD0gMSA8PCAzOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVJVih1aW50NjRfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNhbHRLZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGl2KDE2KTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSAo
Y291bnRlciA+PiAoKDcgLSBpKSAqIDgpKSAmIDB4ZmY7CisgICAgICAgIGl2W2ldID0gdmFsdWUg
XiBzYWx0S2V5W2ldOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA4OyBpIDwgMTY7ICsr
aSkKKyAgICAgICAgaXZbaV0gPSBzYWx0S2V5W2ldOworICAgIHJldHVybiBpdjsKK30KKworc3Ry
dWN0IFNGcmFtZUhlYWRlckluZm8geworICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBr
ZXlJZDsKKyAgICB1aW50NjRfdCBjb3VudGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXV0byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qg
a2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5
dGUgPSAqZGF0YSsrOworCisgICAgLy8gU2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoZmlyc3RCeXRl
ICYgMHg4MCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gY291bnRlckxlbmd0aCA9
ICgoZmlyc3RCeXRlID4+IDQpICYgMHgwNykgKyAxOworCisgICAgaWYgKHNpemUgPCBjb3VudGVy
TGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChmaXJzdEJ5dGUgJiAw
eDA4KSB7CisgICAgICAgIGF1dG8ga2V5TGVuZ3RoID0gKGZpcnN0Qnl0ZSAmIDB4MDcpICsgMTsK
KyAgICAgICAgaWYgKHNpemUgPCBjb3VudGVyTGVuZ3RoICsga2V5TGVuZ3RoICsgMSkKKyAgICAg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgd2hpbGUgKGtleUxlbmd0aC0tKQorICAgICAg
ICAgICAga2V5SWQgPSAoa2V5SWQgPDwgOCkgfCAqZGF0YSsrOworICAgICAgICB3aGlsZSAoY291
bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9IChjb3VudGVyIDw8IDgpIHwgKmRh
dGErKzsKKyAgICB9IGVsc2UgeworICAgICAgICBrZXlJZCA9IGZpcnN0Qnl0ZSAmIDB4MDc7Cisg
ICAgICAgIHdoaWxlIChjb3VudGVyTGVuZ3RoLS0pCisgICAgICAgICAgICBjb3VudGVyID0gKGNv
dW50ZXIgPDwgOCkgfCAqZGF0YSsrOworICAgIH0KKyAgICB1aW50OF90IGhlYWRlclNpemUgPSBk
YXRhIC0gc3RhcnQ7CisgICAgcmV0dXJuIFNGcmFtZUhlYWRlckluZm8geyBoZWFkZXJTaXplLCBr
ZXlJZCwgY291bnRlciB9OworfQorCitSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkpOworfQorCitSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
cjo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKQoreworfQorCitSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworRXhjZXB0aW9uT3I8dm9p
ZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCkKK3sKKyAgICBhdXRv
IHNhbHRLZXlSZXN1bHQgPSBjb21wdXRlU2FsdEtleShyYXdLZXkpOworICAgIGlmIChzYWx0S2V5
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2FsdEtleVJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0ID0gY29t
cHV0ZUF1dGhlbnRpY2F0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGF1dGhlbnRpY2F0aW9uS2V5
UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gYXV0aGVudGljYXRpb25LZXlS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBlbmNyeXB0aW9uS2V5UmVzdWx0
ID0gY29tcHV0ZUVuY3J5cHRpb25LZXkocmF3S2V5KTsKKyAgICBpZiAoZW5jcnlwdGlvbktleVJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY3J5cHRpb25LZXlSZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxv
Y2spOworCisgICAgbV9zYWx0S2V5ID0gc2FsdEtleVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKKyAgICBtX2F1dGhlbnRpY2F0aW9uS2V5ID0gYXV0aGVudGljYXRpb25LZXlSZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCk7CisgICAgbV9lbmNyeXB0aW9uS2V5ID0gZW5jcnlwdGlvbktleVJl
c3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKworICAgIGlmIChrZXlJZCkKKyAgICAgICAgbV9r
ZXlJZCA9ICprZXlJZDsKKworICAgIG1faGFzS2V5ID0gdHJ1ZTsKKyAgICByZXR1cm4geyB9Owor
fQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXpl
KQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9rZXlMb2NrKTsKKworICAgIGF1dG8gaGVhZGVyID0gcGFyc2VTRnJhbWVI
ZWFkZXIoZnJhbWVEYXRhLCBmcmFtZVNpemUpOworCisgICAgaWYgKCFoZWFkZXIpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgaWYgKGhlYWRl
ci0+Y291bnRlciA8PSBtX2NvdW50ZXIgJiYgbV9jb3VudGVyKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICBtX2NvdW50ZXIgPSBoZWFkZXItPmNv
dW50ZXI7CisKKyAgICBpZiAoaGVhZGVyLT5rZXlJZCAhPSBtX2tleUlkKSB7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgc2VhcmNoIGZvciBrZXlzLgorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICB9CisKKyAgICAvLyBDb21wdXRlIHNpZ25h
dHVyZQorICAgIGF1dG8qIHRyYW5zbWl0dGVkU2lnbmF0dXJlID0gZnJhbWVEYXRhICsgZnJhbWVT
aXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byBzaWduYXR1cmUgPSBjb21wdXRl
RW5jcnlwdGVkRGF0YVNpZ25hdHVyZShmcmFtZURhdGEsIGZyYW1lU2l6ZSAgLSBtX2F1dGhlbnRp
Y2F0aW9uU2l6ZSwgbV9hdXRoZW50aWNhdGlvbktleSk7CisgICAgZm9yIChzaXplX3QgY3B0ciA9
IDA7IGNwdHIgPCBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsgKytjcHRyKSB7CisgICAgICAgIGlmIChz
aWduYXR1cmVbY3B0cl0gIT0gdHJhbnNtaXR0ZWRTaWduYXR1cmVbY3B0cl0pIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHJhdGNoZXRpbmcuCisgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIERlY3J5cHQgZGF0YQorICAgIGF1dG8gaXYgPSBjb21wdXRlSVYobV9jb3VudGVyLCBt
X3NhbHRLZXkpOworICAgIGF1dG8gZGF0YVNpemUgPSBmcmFtZVNpemUgLSBoZWFkZXItPnNpemUg
LSBtX2F1dGhlbnRpY2F0aW9uU2l6ZTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlY3J5cHREYXRhKGZy
YW1lRGF0YSArIGhlYWRlci0+c2l6ZSwgZGF0YVNpemUsIGl2LCBtX2VuY3J5cHRpb25LZXkpOwor
CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJh
bWVTaXplKQoreworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNpZ25hdHVyZS4KKworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1fY291bnRl
ciwgbV9zYWx0S2V5KTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2Zvcm1lZERhdGE7Cisg
ICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBNYXhIZWFkZXJTaXplICsgbV9h
dXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBoZWFkZXIuCisgICAgc2l6ZV90IGhl
YWRlclNpemUgPSAxOworICAgIHRyYW5zZm9ybWVkRGF0YVswXSA9IGNvbXB1dGVGaXJzdEhlYWRl
ckJ5dGUobV9rZXlJZCwgbV9jb3VudGVyKTsKKyAgICBpZiAobV9rZXlJZCA+PSA4KSB7CisgICAg
ICAgIGF1dG8ga2V5SWRMZW5ndGggPSBsZW5ndGhPZlVJbnQ2NChtX2tleUlkKTsKKyAgICAgICAg
d3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1fa2V5SWQs
IGtleUlkTGVuZ3RoKTsKKyAgICAgICAgaGVhZGVyU2l6ZSArPSBrZXlJZExlbmd0aDsKKyAgICB9
CisgICAgYXV0byBjb3VudGVyTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9jb3VudGVyKTsKKyAg
ICB3cml0ZVVJbnQ2NCh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwgbV9jb3Vu
dGVyLCBjb3VudGVyTGVuZ3RoKTsKKyAgICBoZWFkZXJTaXplICs9IGNvdW50ZXJMZW5ndGg7CisK
KyAgICB0cmFuc2Zvcm1lZERhdGEucmVzaXplKGZyYW1lU2l6ZSArIGhlYWRlclNpemUgKyBtX2F1
dGhlbnRpY2F0aW9uU2l6ZSk7CisKKyAgICAvLyBGaWxsIGVuY3J5cHRlZCBkYXRhCisgICAgYXV0
byBlbmNyeXB0ZWREYXRhID0gZW5jcnlwdERhdGEoZnJhbWVEYXRhLCBmcmFtZVNpemUsIGl2LCBt
X2VuY3J5cHRpb25LZXkpOworICAgIEFTU0VSVCghZW5jcnlwdGVkRGF0YS5oYXNFeGNlcHRpb24o
KSk7CisgICAgaWYgKGVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBlbmNyeXB0ZWREYXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHN0ZDo6bWVtY3B5KHRy
YW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBlbmNyeXB0ZWREYXRhLnJldHVyblZh
bHVlKCkuZGF0YSgpLCBmcmFtZVNpemUpOworCisgICAgLy8gRmlsbCBzaWduYXR1cmUKKyAgICBh
dXRvIHNpZ25hdHVyZSA9IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKHRyYW5zZm9ybWVk
RGF0YS5kYXRhKCksIGZyYW1lU2l6ZSArIGhlYWRlclNpemUsIG1fYXV0aGVudGljYXRpb25LZXkp
OworICAgIHN0ZDo6bWVtY3B5KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBmcmFtZVNpemUgKyBo
ZWFkZXJTaXplLCBzaWduYXR1cmUuZGF0YSgpLCBtX2F1dGhlbnRpY2F0aW9uU2l6ZSk7CisKKyAg
ICArK21fY291bnRlcjsKKworICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7Cit9CisKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnRyYW5zZm9y
bShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoIW1faGFzS2V5
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAg
IHJldHVybiBtX2lzU2VuZGluZyA/IGVuY3J5cHRGcmFtZShkYXRhLCBzaXplKSA6IGRlY3J5cHRG
cmFtZShkYXRhLCBzaXplKTsKK30KKworI2lmICFQTEFURk9STShDT0NPQSkKK0V4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yIH07Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0b3I8
dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpjb21wdXRlRW5jcnlwdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RGF0YShj
b25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mLCBjb25zdCBWZWN0
b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJv
ciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjplbmNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mLCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRp
b24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitWZWN0b3I8dWludDhfdD4gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpCit7CisgICAgcmV0dXJuIHsgfTsK
K30KKyNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0NTgwZWU4Njk1MDY2NmY4ODE2OWI5OTg5NDNjMzE2MmQ1ODFkYzQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ3J5cHRvS2V5OworCitjbGFzcyBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4geworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+
IGNyZWF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIH5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigp
OworCisgICAgdm9pZCBzZXRJc1NlbmRpbmcoYm9vbCk7CisgICAgdm9pZCBzZXRJc1Byb2Nlc3Np
bmdBdWRpbyhib29sKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dEVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIE9wdGlvbmFsPHVp
bnQ2NF90Pik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiB0cmFuc2Zvcm0oY29uc3QgdWludDhfdCosIHNpemVfdCk7CisKKyAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGF1dGhlbnRpY2F0aW9uS2V5KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNh
dGlvbktleTsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZW5jcnlwdGlvbktleSgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5jcnlwdGlvbktleTsgfQorICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2FsdEtleSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdEtleTsgfQorCisgICAgdWludDY0X3Qg
Y291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY291bnRlcjsgfQorICAgIHZvaWQgc2V0Q291bnRl
cih1aW50NjRfdCBjb3VudGVyKSB7IG1fY291bnRlciA9IGNvdW50ZXI7IH0KKworcHJpdmF0ZToK
KyAgICBXRUJDT1JFX0VYUE9SVCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpOworCisgICAgRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCosIHNp
emVfdCk7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RnJhbWUoY29u
c3QgdWludDhfdCosIHNpemVfdCk7CisKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IGNvbXB1dGVTYWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworICAgIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZUF1dGhlbnRpY2F0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gY29tcHV0ZUVuY3J5
cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7CisKKyAgICBFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IGVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKyAgICBFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
KTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoY29u
c3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpOworCisgICAg
TG9jayBtX2tleUxvY2s7CisgICAgYm9vbCBtX2hhc0tleSB7IGZhbHNlIH07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1fYXV0aGVudGljYXRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fZW5j
cnlwdGlvbktleTsKKyAgICBWZWN0b3I8dWludDhfdD4gbV9zYWx0S2V5OworCisgICAgYm9vbCBt
X2lzU2VuZGluZyB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9hdXRoZW50aWNhdGlvblNpemUg
eyAxMCB9OworICAgIHVpbnQ2NF90IG1fa2V5SWQgeyAwIH07CisgICAgdWludDY0X3QgbV9jb3Vu
dGVyIHsgMCB9OworfTsKKworaW5saW5lIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNl
dElzU2VuZGluZyhib29sIGlzU2VuZGluZykKK3sKKyAgICBtX2lzU2VuZGluZyA9IGlzU2VuZGlu
ZzsKK30KKworaW5saW5lIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzUHJvY2Vz
c2luZ0F1ZGlvKGJvb2wgaXNQcm9jZXNzaW5nQXVkaW8pCit7CisgICAgbV9hdXRoZW50aWNhdGlv
blNpemUgPSBpc1Byb2Nlc3NpbmdBdWRpbyA/IDQgOiAxMDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2Eu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lckNvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzNkNDI0ODAyZTE5M2NhZDcwZDIxYmMyMTM3
OWY4NTBmYjM1NzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcApAQCAtMCwwICsxLDcz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgiCisKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCisj
aW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmNvbXB1dGVTYWx0S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQoreworICAg
IHVpbnQ4X3QgdXNhZ2VbXSA9ICJTRnJhbWVTYWx0S2V5IjsKKyAgICByZXR1cm4gZGVyaXZlSERL
RlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkgKyAxNiwgcmF3S2V5
LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDEyOCk7Cit9CisKK0V4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVB
dXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sKKyAgICB1
aW50OF90IHVzYWdlW10gPSAiU0ZyYW1lQXV0aGVudGljYXRpb25LZXkiOworICAgIHJldHVybiBk
ZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEoKSArIDE2
LCByYXdLZXkuc2l6ZSgpIC0gMTYsIHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMjU2KTsKK30K
KworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCit7Cisg
ICAgdWludDhfdCB1c2FnZVtdID0gIlNGcmFtZUVuY3J5cHRpb25LZXkiOworICAgIHJldHVybiBk
ZXJpdmVIREtGU0hBMjU2Qml0cyhyYXdLZXkuZGF0YSgpLCAxNiwgcmF3S2V5LmRhdGEoKSArIDE2
LCByYXdLZXkuc2l6ZSgpIC0gMTYsIHVzYWdlLCBzaXplb2YodXNhZ2UpIC0gMSwgMTI4KTsKK30K
KworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
ZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgaXYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KQoreworICAgIHJldHVy
biB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0RlY3J5cHQsIGl2LCBpdi5zaXplKCksIGtleSwgZGF0YSwg
c2l6ZSk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6OmVuY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sK
KyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NFbmNyeXB0LCBpdiwgaXYuc2l6ZSgpLCBr
ZXksIGRhdGEsIHNpemUpOworfQorCitWZWN0b3I8dWludDhfdD4gUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICBDQ0htYWMoa0ND
SG1hY0FsZ1NIQTI1Niwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgZGF0YSwgc2l6ZSwgcmVzdWx0
LmRhdGEoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5z
Zm9ybUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyVHJhbnNmb3JtQmFja2VuZC5oCmluZGV4IDVhZTk3ZmQw
MTBkNTRkOWJjN2JiMWIwMDBlM2YxNzk4YzU2MDNmM2IuLjRhNWJjYmQxYzMyZjFiNmE3NTM3Yzdl
MDBhYWQ0MzcwNmEwY2VjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyVHJhbnNmb3JtQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFJlY2VpdmVyVHJhbnNmb3JtQmFja2VuZC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWYg
RU5BQkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJMaWJXZWJSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBBTExPV19VTlVT
RURfUEFSQU1FVEVSU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNjRhNWQ1ZDRkNDcwNjQ2OTNjMDVmZjg3MjFlYzVlMzdiMDUzOTU2
NS4uMTBkMDlmMjc0YWY1OWFlMThiMGI4MTUwMDc4MWU1ZmM0MDQ1YThkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE2Myw2ICsxNjMsOCBAQCBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZVRyYW5zcG9y
dC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuY3BwCiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNjZWl2ZXIuY3BwCkBAIC0zMzE5LDYgKzMzMjEsNyBAQCBKU1JUQ1J0cEhlYWRlckV4dGVu
c2lvblBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFJlY2Vp
dmVyLmNwcAogSlNSVENSdHBSdHhQYXJhbWV0ZXJzLmNwcAorSlNSVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCiBKU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBTZW5kZXIuY3BwCiBK
U1JUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJjZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDJhZDMzYTk1NTE5MmQ5MDc2ZWIzZDhjMTYyY2ZlMzg2MjJkZmIxOGMuLmY1MDJlNzFjNGY4
MWUzZmU2NWQ0MGExMDE5ODIyZjNiYmQ1MzFjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApA
QCAtODksNiArODksNyBAQCBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRl
bXNDb2NvYS5tbQogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1l
bnRIYW5kbGVyLmNwcAogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdl
UmVhZGVySU9TLm1tCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHAKIE1vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5tbQog
TW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAKIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KQEAgLTEyOCw2ICsxMjksNyBA
QCBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5TWFjLmNwcAogY3J5cHRvL21hYy9D
cnlwdG9LZXlFQ01hYy5jcHAKIGNyeXB0by9tYWMvQ3J5cHRvS2V5TWFjLmNwcAogY3J5cHRvL21h
Yy9DcnlwdG9LZXlSU0FNYWMuY3BwCitjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNw
cAogY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQogZG9tL0RhdGFUcmFu
c2Zlck1hYy5tbQogZG9tL2lvcy9Nb3VzZUV2ZW50SU9TLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM5OGQxNmE5MWI4YzFj
ZDA0ZjcwYWRjZWU2ZmRkZmVhNGQ5MTRkMDMuLmZkNGJiNWE1ZmU5ZjRhZWVjOTYxZTE0ZmUxNWYx
MGIxN2E1Njg1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTExMDksNiArMTEwOSw4IEBACiAJCTQxODFDNUQ2MjU1NUMxQjkw
MEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVENTI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JU
Q1J0cFRyYW5zZm9ybS5oICovOyB9OwogCQk0MTgxQzVENzI1NTVDNDlBMDBBRUIwRkYgLyogTW9j
a1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTgxQzVEMzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9y
bS5jcHAgKi87IH07CiAJCTQxODFDNjM5MjU1QUU5MEYwMEFFQjBGRiAvKiBKU01vY2tSVENSdHBU
cmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ2RjNFOTIxQzFGODU1NTAwNjFEQkU0IC8qIEpTTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAg
Ki87IH07CisJCTQxODFDNjQ4MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4
MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDE4MUM2NEEyNTVC
NEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8q
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovOyB9OwogCQk0MTgyMDU0NzFFNTNFOThDMDBENjIy
MDcgLyogUlRDQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0MTgyNkJG
MjIzRkI1OTc3MDBCOTIyQjEgLyogRG9jdW1lbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgyNkJGMTIzRkI1OTcwMDBCOTIyQjEg
LyogRG9jdW1lbnRJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDE4NEY1MTYxRUFGMDVBODAwRjE4QkYwIC8qIE9yaWVudGF0aW9u
Tm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODRGNTE1MUVBRjA1OTgwMEYxOEJGMCAvKiBPcmllbnRhdGlvbk5vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc3MDIsNiArNzcw
NCwxMiBAQAogCQk0MTgxQzVEMzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9y
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUlRDUnRwVHJh
bnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM1RDUyNTU1QzFC
OTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTgxQzYzNjI1NUFFMjYxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTgxQzY0MTI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTgxQzY0MjI1NUI0QzI2MDBB
RUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE4MUM2NDMyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgyMDU0NTFFNTNDOENEMDBE
NjIyMDcgLyogUlRDQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODIwNTQ4
MUU1M0VBQUQwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0NvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTgyNkJGMTIzRkI1OTcwMDBCOTIyQjEgLyogRG9jdW1lbnRJZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50SWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzczNSw2ICs3NzQzLDggQEAKIAkJNDE5
QkMyREMxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmlzaXRlZExpbmtTdGF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJDMkREMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVk
TGlua1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpc2l0ZWRMaW5r
U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkU3NTIxQkM3RjNEQjAw
RTFDODVCIC8qIFdlYkNvcmVCdWlsdGluTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTlEOTMwNTI1NUU4NDI3MDBEQTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE5RDkzMDcyNTVFODQyODAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0Nv
Y29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b1V0aWxpdGllc0NvY29hLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5RkFGQUQxQUJBQkNENTAwNUIzNTcyIC8qIFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5
RkFGQUQxQUJBQkNENTAwNUI4MjhCIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFBMDIzRUQxQTM5REI3OTAwRjcyMkNGIC8q
IFJlYWRhYmxlU3RyZWFtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVh
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzA4OSw2ICsxNzA5OSwxMiBA
QAogCQkJCTQxM0M4QjJFMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXJXaXRoVHJhbnNm
b3JtLmggKi8sCiAJCQkJNDE0QUQzRkMyMTQ5ODQyMDAwNTIxNjc2IC8qIFJUQ1J0cFNlbmRQYXJh
bWV0ZXJzLmggKi8sCiAJCQkJNDE0QUQzRkUyMTQ5ODQyMDAwNTIxNjc2IC8qIFJUQ1J0cFNlbmRQ
YXJhbWV0ZXJzLmlkbCAqLywKKwkJCQk0MTgxQzY0NTI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcCAqLywKKwkJCQk0MTgxQzY0NDI1NUI0QzI3MDBBRUIwRkYgLyog
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggKi8sCisJCQkJNDE4MUM2NDMyNTVCNEMyNzAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgKi8sCisJCQkJNDE4MUM2NDEyNTVCNEMyNjAw
QUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcCAqLywKKwkJCQk0MTgxQzY0MjI1
NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCAqLywKKwkJCQk0MTgx
QzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAg
Ki8sCiAJCQkJNDE1RTFCQjYyMTUwMTUyQTAwMjJEQTk2IC8qIFJUQ1J0cFN5bmNocm9uaXphdGlv
blNvdXJjZS5oICovLAogCQkJCTQxNUUxQkI3MjE1MDE1MzAwMDIyREE5NiAvKiBSVENSdHBTeW5j
aHJvbml6YXRpb25Tb3VyY2UuaWRsICovLAogCQkJCTVFNUUyQjEwMUNGQzNFNEIwMDBDMEQ4NSAv
KiBSVENSdHBUcmFuc2NlaXZlci5jcHAgKi8sCkBAIC0yODI1NSw2ICsyODI3MSw4IEBACiAJCQkJ
NTc1MEE5N0ExRTY5MTYxNjAwNzA1QzRBIC8qIENyeXB0b0tleUVDTWFjLmNwcCAqLywKIAkJCQlF
MTlBQzNGODE4MjU2NkY3MDAzNDk0MjYgLyogQ3J5cHRvS2V5TWFjLmNwcCAqLywKIAkJCQlFMTY0
RkFBNDE4MzE1RTFBMDBEQjRFNjEgLyogQ3J5cHRvS2V5UlNBTWFjLmNwcCAqLywKKwkJCQk0MTlE
OTMwNzI1NUU4NDI4MDBEQTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwICovLAorCQkJ
CTQxOUQ5MzA1MjU1RTg0MjcwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRpZXNDb2NvYS5oICovLAog
CQkJCUUxOERGMzM2MThBQUYxNEQwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1h
Yy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtMzQwOTMsNiArMzQxMTEsOCBAQAog
CQkJCTQxM0M4QjM1MjU1MkYyN0QwMEU2NTA1NSAvKiBSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zv
cm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVFMkM0MzYxMUJDRUUzMjMwMDAxRTJCQyAvKiBSVENS
dHBTZW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxM0M4QjMzMjU1MkYyN0QwMEU2NTA1NSAv
KiBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTgxQzY0
QTI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFNUUyQjE0MUNGQzNFNzUwMDBDMEQ4NSAvKiBSVENS
dHBUcmFuc2NlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFFQjU0REYxRTdEQzc0NDAwQzE2
MjNCIC8qIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MTNDOEIzNDI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGlu
TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aAppbmRleCA1YWU3MzRkOTA5MGMwZDBmNzU0NGQxNGY2Y2JiZDMxMzEzNGYxMmI4Li4xNGQ2ZGY0
NzIxODIxY2U1OTEyZjE1OGVjNDEwMDMyOWYzNmJlMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMTksNiArMjE5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9uKSBcCiAgICAg
bWFjcm8oUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgXAogICAgIG1hY3JvKFJUQ1J0cFJlY2Vp
dmVyKSBcCisgICAgbWFjcm8oUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKSBcCiAgICAgbWFjcm8oUlRD
UnRwU2VuZGVyKSBcCiAgICAgbWFjcm8oUlRDUnRwVHJhbnNjZWl2ZXIpIFwKICAgICBtYWNybyhS
VENSdHBUcmFuc2Zvcm0pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCmluZGV4IGNjNDFkYTY1YjBkYWM5YzhiNWRi
MWEwZTQyZmUwMjAwYjUyOGVhMzguLjc1NzllNDBhZTM3Y2FjZTQyMmEwNmUzZmVjNWVlZTY0ZjAy
ZjFhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NUUk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1BRVNfQ1RSTWFjLmNwcApAQCAtMzEsMTAwICszMSwyMyBAQAogCiAjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5QUVTLmgi
Ci0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorI2luY2x1ZGUgIkNyeXB0
b1V0aWxpdGllc0NvY29hLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiBvcGVy
YXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5n
dGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCi17Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNr
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBpcyBmaXhlZC4KLSAgICAvLyBjb3VudGVy
ID0gbm9uY2UgKyBjb3VudGVyCi0gICAgLy8gQ29tbW9uQ3J5cHRvIGN1cnJlbnRseSBjYW4gbmVp
dGhlciByZXNldCB0aGUgY291bnRlciBub3IgZGV0ZWN0IG92ZXJmbG93IG9uY2UgdGhlIGNvdW50
ZXIgcmVhY2hlcyBpdHMgbWF4IHZhbHVlIHJlc3RyaWN0ZWQKLSAgICAvLyBieSB0aGUgY291bnRl
ckxlbmd0aC4gSXQgdGhlbiBpbmNyZW1lbnRzIHRoZSBub25jZSB3aGljaCBzaG91bGQgc3RheSBz
YW1lIGZvciB0aGUgd2hvbGUgb3BlcmF0aW9uLiBUbyByZW1lZHkgdGhpcyBpc3N1ZSwKLSAgICAv
LyB3ZSBkZXRlY3QgdGhlIG92ZXJmbG93IGFoZWFkIGFuZCBkaXZpZGUgdGhlIG9wZXJhdGlvbiBp
bnRvIHR3byBwYXJ0cy4KLSAgICBzaXplX3QgbnVtYmVyT2ZCbG9ja3MgPSBkYXRhLnNpemUoKSAl
IGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVTMTI4ICsg
MSA6IGRhdGEuc2l6ZSgpIC8ga0NDQmxvY2tTaXplQUVTMTI4OwotCi0gICAgLy8gRGV0ZWN0IGxv
b3AKLSAgICBpZiAoY291bnRlckxlbmd0aCA8IHNpemVvZihzaXplX3QpICogOCAmJiBudW1iZXJP
ZkJsb2NrcyA+IChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IGNvdW50ZXJMZW5ndGgpKQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIC8vIENhbGN1
bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKLSAgICBDcnlwdG9BbGdvcml0aG1BRVNfQ1RS
OjpDb3VudGVyQmxvY2tIZWxwZXIgY291bnRlckJsb2NrSGVscGVyKGNvdW50ZXIsIGNvdW50ZXJM
ZW5ndGgpOwotICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudFRv
T3ZlcmZsb3dTYXR1cmF0aW5nKCk7Ci0KLSAgICAvLyBEaXZpZGUgZGF0YSBpbnRvIHR3byBwYXJ0
cyBpZiBuZWNlc3NhcnkuCi0gICAgc2l6ZV90IGhlYWRTaXplID0gZGF0YS5zaXplKCk7Ci0gICAg
aWYgKGNhcGFjaXR5IDwgbnVtYmVyT2ZCbG9ja3MpCi0gICAgICAgIGhlYWRTaXplID0gY2FwYWNp
dHkgKiBrQ0NCbG9ja1NpemVBRVMxMjg7Ci0KLSAgICAvLyBmaXJzdCBwYXJ0OiBjb21wdXRlIHRo
ZSBmaXJzdCBuPWNhcGFjaXR5IGJsb2NrcyBvZiBkYXRhIGlmIGNhcGFjaXR5IGlzIGluc3VmZmlj
aWVudC4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdC4KLSAgICBDQ0NyeXB0b3JSZWYgY3J5
cHRvcjsKLSAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1v
ZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5n
LCBjb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9k
ZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGhl
YWQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGhlYWRTaXplLCB0cnVlKSk7Ci0K
LSAgICBzaXplX3QgYnl0ZXNXcml0dGVuOwotICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0ZShj
cnlwdG9yLCBkYXRhLmRhdGEoKSwgaGVhZFNpemUsIGhlYWQuZGF0YSgpLCBoZWFkLnNpemUoKSwg
JmJ5dGVzV3JpdHRlbik7Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICB1aW50OF90KiBwID0gaGVhZC5kYXRhKCkgKyBi
eXRlc1dyaXR0ZW47Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yRmluYWwoY3J5cHRvciwgcCwgaGVh
ZC5lbmQoKSAtIHAsICZieXRlc1dyaXR0ZW4pOwotICAgIHAgKz0gYnl0ZXNXcml0dGVuOwotICAg
IGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OwotCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocCA8PSBoZWFkLmVuZCgp
KTsKLSAgICBoZWFkLnNocmluayhwIC0gaGVhZC5iZWdpbigpKTsKLQotICAgIENDQ3J5cHRvclJl
bGVhc2UoY3J5cHRvcik7Ci0KLSAgICBpZiAoY2FwYWNpdHkgPj0gbnVtYmVyT2ZCbG9ja3MpCi0g
ICAgICAgIHJldHVybiBXVEZNb3ZlKGhlYWQpOwotCi0gICAgLy8gc2Vjb25kIHBhcnQ6IGNvbXB1
dGUgdGhlIHJlbWFpbmluZyBkYXRhIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgaGVhZC4KLSAgICAv
LyByZXNldCBjb3VudGVyCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlbWFpbmluZ0NvdW50ZXIgPSBj
b3VudGVyQmxvY2tIZWxwZXIuY291bnRlclZlY3RvckFmdGVyT3ZlcmZsb3coKTsKLSAgICBzdGF0
dXMgPSBDQ0NyeXB0b3JDcmVhdGVXaXRoTW9kZShvcGVyYXRpb24sIGtDQ01vZGVDVFIsIGtDQ0Fs
Z29yaXRobUFFUzEyOCwgY2NOb1BhZGRpbmcsIHJlbWFpbmluZ0NvdW50ZXIuZGF0YSgpLCBrZXku
ZGF0YSgpLCBrZXkuc2l6ZSgpLCAwLCAwLCAwLCBrQ0NNb2RlT3B0aW9uQ1RSX0JFLCAmY3J5cHRv
cik7Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07Ci0KLSAgICBzaXplX3QgdGFpbFNpemUgPSBkYXRhLnNpemUoKSAtIGhlYWRTaXpl
OwotICAgIFZlY3Rvcjx1aW50OF90PiB0YWlsKENDQ3J5cHRvckdldE91dHB1dExlbmd0aChjcnlw
dG9yLCB0YWlsU2l6ZSwgdHJ1ZSkpOwotCi0gICAgc3RhdHVzID0gQ0NDcnlwdG9yVXBkYXRlKGNy
eXB0b3IsIGRhdGEuZGF0YSgpICsgaGVhZFNpemUsIHRhaWxTaXplLCB0YWlsLmRhdGEoKSwgdGFp
bC5zaXplKCksICZieXRlc1dyaXR0ZW4pOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgcCA9IHRhaWwuZGF0YSgpICsg
Ynl0ZXNXcml0dGVuOwotICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAsIHRh
aWwuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBwICs9IGJ5dGVzV3JpdHRlbjsKLSAg
ICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKLQotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gdGFpbC5lbmQo
KSk7Ci0gICAgdGFpbC5zaHJpbmsocCAtIHRhaWwuYmVnaW4oKSk7Ci0KLSAgICBDQ0NyeXB0b3JS
ZWxlYXNlKGNyeXB0b3IpOwotCi0gICAgaGVhZC5hcHBlbmRWZWN0b3IodGFpbCk7Ci0gICAgcmV0
dXJuIFdURk1vdmUoaGVhZCk7Ci19Ci0KIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bUFlc0N0clBhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgcGxhaW5UZXh0KQogewogICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNv
dW50ZXJWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKLSAgICByZXR1cm4g
dHJhbnNmb3JtQUVTX0NUUihrQ0NFbmNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwg
cGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgcGxhaW5UZXh0KTsKKyAgICByZXR1cm4gdHJh
bnNmb3JtQUVTX0NUUihrQ0NFbmNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFy
YW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgcGxhaW5UZXh0LmRhdGEoKSwgcGxhaW5UZXh0LnNp
emUoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGht
QUVTX0NUUjo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFt
cyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgY2lwaGVyVGV4dCkKIHsKLSAgICAgIEFTU0VSVChwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0
b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKLSAgICByZXR1cm4gdHJhbnNmb3Jt
QUVTX0NUUihrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0b3IoKSwgcGFyYW1ldGVy
cy5sZW5ndGgsIGtleS5rZXkoKSwgY2lwaGVyVGV4dCk7CisgICAgQVNTRVJUKHBhcmFtZXRlcnMu
Y291bnRlclZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOworICAgIHJldHVy
biB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0RlY3J5cHQsIHBhcmFtZXRlcnMuY291bnRlclZlY3Rvcigp
LCBwYXJhbWV0ZXJzLmxlbmd0aCwga2V5LmtleSgpLCBjaXBoZXJUZXh0LmRhdGEoKSwgY2lwaGVy
VGV4dC5zaXplKCkpOwogfQogCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAKaW5kZXggNmNhYTVmM2NiZTUzOWZlNjU0Y2I3YTlm
ZWZlZDk0YjlhNzJkNTczMS4uYjQxN2I3MWM1YzZhZmU0ZTI4OTQ0ODQ1NjQxMWU5ZTk1YTM1ZTM0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1I
S0RGTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bUhLREZNYWMuY3BwCkBAIC0yOCwyNSArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRP
KQogCi0jaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtSGtkZlBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJhdy5oIgorI2luY2x1
ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURl
cml2ZUJpdHMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcyYgcGFyYW1ldGVycywgY29u
c3QgQ3J5cHRvS2V5UmF3JiBrZXksIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKLSAgICBDQ0RpZ2VzdEFsZ29yaXRobSBkaWdlc3RBbGdv
cml0aG07Ci0gICAgZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKHBhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIsIGRpZ2VzdEFsZ29yaXRobSk7Ci0KLSAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTQ1NT4gQ3VycmVu
dGx5LCB3aGVuIGtleSBkYXRhIGlzIGVtcHR5LCBDQ0tleURlcml2YXRpb25ITWFjIHdpbGwgYmFp
bCBvdXQuCi0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4ODk2MDIxPiBSZW1pbmRlcjogU3dpdGNo
IHRvIENDRGVyaXZlS2V5IG5vdyB0aGF0IENDS2V5RGVyaXZhdGlvbkhNYWMgaXMgZGVwcmVjYXRl
ZC4KLSAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZBbGdvcml0aG1IS0RGLCBkaWdl
c3RBbGdvcml0aG0sIDAsIGtleS5rZXkoKS5kYXRhKCksIGtleS5rZXkoKS5zaXplKCksIDAsIDAs
IHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLmRhdGEoKSwgcGFyYW1ldGVycy5pbmZvVmVjdG9yKCku
c2l6ZSgpLCAwLCAwLCBwYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMu
c2FsdFZlY3RvcigpLnNpemUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpCi0gICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAg
cmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKGtleS5rZXkoKS5kYXRhKCksIGtleS5rZXkoKS5z
aXplKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgcGFyYW1ldGVycy5zYWx0VmVj
dG9yKCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMu
aW5mb1ZlY3RvcigpLnNpemUoKSwgbGVuZ3RoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGZk
NWYzY2JmNzEyODE2ZDUxOWZmODUxN2ZlNWJlOWQ5NWFhMGU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAKQEAgLTAs
MCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q3J5cHRvVXRpbGl0aWVzQ29jb2EuaCIKKworI2lmIEVOQUJMRShXRUJfQ1JZUFRPKSB8fCBFTkFC
TEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFFU19DVFIuaCIKKyNpbmNs
dWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm1BRVNfQ1RSKENDT3BlcmF0
aW9uIG9wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291
bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBkYXRhU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0
aGUgZm9sbG93aW5nIGhhY2sgb25jZSA8cmRhcjovL3Byb2JsZW0vMzEzNjEwNTA+IGlzIGZpeGVk
LgorICAgIC8vIGNvdW50ZXIgPSBub25jZSArIGNvdW50ZXIKKyAgICAvLyBDb21tb25DcnlwdG8g
Y3VycmVudGx5IGNhbiBuZWl0aGVyIHJlc2V0IHRoZSBjb3VudGVyIG5vciBkZXRlY3Qgb3ZlcmZs
b3cgb25jZSB0aGUgY291bnRlciByZWFjaGVzIGl0cyBtYXggdmFsdWUgcmVzdHJpY3RlZAorICAg
IC8vIGJ5IHRoZSBjb3VudGVyTGVuZ3RoLiBJdCB0aGVuIGluY3JlbWVudHMgdGhlIG5vbmNlIHdo
aWNoIHNob3VsZCBzdGF5IHNhbWUgZm9yIHRoZSB3aG9sZSBvcGVyYXRpb24uIFRvIHJlbWVkeSB0
aGlzIGlzc3VlLAorICAgIC8vIHdlIGRldGVjdCB0aGUgb3ZlcmZsb3cgYWhlYWQgYW5kIGRpdmlk
ZSB0aGUgb3BlcmF0aW9uIGludG8gdHdvIHBhcnRzLgorICAgIHNpemVfdCBudW1iZXJPZkJsb2Nr
cyA9IGRhdGFTaXplICUga0NDQmxvY2tTaXplQUVTMTI4ID8gZGF0YVNpemUgLyBrQ0NCbG9ja1Np
emVBRVMxMjggKyAxIDogZGF0YVNpemUgLyBrQ0NCbG9ja1NpemVBRVMxMjg7CisKKyAgICAvLyBE
ZXRlY3QgbG9vcAorICAgIGlmIChjb3VudGVyTGVuZ3RoIDwgc2l6ZW9mKHNpemVfdCkgKiA4ICYm
IG51bWJlck9mQmxvY2tzID4gKHN0YXRpY19jYXN0PHNpemVfdD4oMSkgPDwgY291bnRlckxlbmd0
aCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAg
Ly8gQ2FsY3VsYXRlIGNhcGFjaXR5IGJlZm9yZSBvdmVyZmxvdworICAgIENyeXB0b0FsZ29yaXRo
bUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlciBjb3VudGVyQmxvY2tIZWxwZXIoY291bnRlciwg
Y291bnRlckxlbmd0aCk7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gY291bnRlckJsb2NrSGVscGVy
LmNvdW50VG9PdmVyZmxvd1NhdHVyYXRpbmcoKTsKKworICAgIC8vIERpdmlkZSBkYXRhIGludG8g
dHdvIHBhcnRzIGlmIG5lY2Vzc2FyeS4KKyAgICBzaXplX3QgaGVhZFNpemUgPSBkYXRhU2l6ZTsK
KyAgICBpZiAoY2FwYWNpdHkgPCBudW1iZXJPZkJsb2NrcykKKyAgICAgICAgaGVhZFNpemUgPSBj
YXBhY2l0eSAqIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKKworICAgIC8vIGZpcnN0IHBhcnQ6IGNvbXB1
dGUgdGhlIGZpcnN0IG49Y2FwYWNpdHkgYmxvY2tzIG9mIGRhdGEgaWYgY2FwYWNpdHkgaXMgaW5z
dWZmaWNpZW50LiBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0LgorICAgIENDQ3J5cHRvclJl
ZiBjcnlwdG9yOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ0NyeXB0b3JDcmVhdGVX
aXRoTW9kZShvcGVyYXRpb24sIGtDQ01vZGVDVFIsIGtDQ0FsZ29yaXRobUFFUzEyOCwgY2NOb1Bh
ZGRpbmcsIGNvdW50ZXIuZGF0YSgpLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpLCAwLCAwLCAwLCBr
Q0NNb2RlT3B0aW9uQ1RSX0JFLCAmY3J5cHRvcik7CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBWZWN0b3I8dWludDhf
dD4gaGVhZChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwgaGVhZFNpemUsIHRydWUp
KTsKKworICAgIHNpemVfdCBieXRlc1dyaXR0ZW47CisgICAgc3RhdHVzID0gQ0NDcnlwdG9yVXBk
YXRlKGNyeXB0b3IsIGRhdGEsIGhlYWRTaXplLCBoZWFkLmRhdGEoKSwgaGVhZC5zaXplKCksICZi
eXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciB9OworCisgICAgdWludDhfdCogcCA9IGhlYWQuZGF0YSgpICsgYnl0
ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAsIGhlYWQu
ZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVzV3JpdHRlbjsKKyAgICBp
ZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
KworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gaGVhZC5lbmQoKSk7
CisgICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4oKSk7CisKKyAgICBDQ0NyeXB0b3JSZWxl
YXNlKGNyeXB0b3IpOworCisgICAgaWYgKGNhcGFjaXR5ID49IG51bWJlck9mQmxvY2tzKQorICAg
ICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKKworICAgIC8vIHNlY29uZCBwYXJ0OiBjb21wdXRl
IHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCisgICAgLy8g
cmVzZXQgY291bnRlcgorICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVyID0gY291
bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCk7CisgICAgc3RhdHVz
ID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdv
cml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVyLmRhdGEoKSwga2V5LmRh
dGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3Ip
OworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OworCisgICAgc2l6ZV90IHRhaWxTaXplID0gZGF0YVNpemUgLSBoZWFkU2l6ZTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwg
dGFpbFNpemUsIHRydWUpKTsKKworICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9y
LCBkYXRhICsgaGVhZFNpemUsIHRhaWxTaXplLCB0YWlsLmRhdGEoKSwgdGFpbC5zaXplKCksICZi
eXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcCA9IHRhaWwuZGF0YSgpICsgYnl0ZXNXcml0dGVu
OworICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAsIHRhaWwuZW5kKCkgLSBw
LCAmYnl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVzV3JpdHRlbjsKKyAgICBpZiAoc3RhdHVz
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gdGFpbC5lbmQoKSk7CisgICAgdGFp
bC5zaHJpbmsocCAtIHRhaWwuYmVnaW4oKSk7CisKKyAgICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0
b3IpOworCisgICAgaGVhZC5hcHBlbmRWZWN0b3IodGFpbCk7CisgICAgcmV0dXJuIFdURk1vdmUo
aGVhZCk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVyaXZlSERLRlNIQTI1
NkJpdHMoY29uc3QgdWludDhfdCoga2V5LCBzaXplX3Qga2V5U2l6ZSwgY29uc3QgdWludDhfdCog
c2FsdCwgc2l6ZV90IHNhbHRTaXplLCBjb25zdCB1aW50OF90KiBpbmZvLCBzaXplX3QgaW5mb1Np
emUsIHNpemVfdCBsZW5ndGgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGgg
LyA4KTsKKyAgICBWZWN0b3I8dWludDhfdD4gaW5mb1ZlY3RvcjsKKworICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMyNDM5NDU1
PiBDdXJyZW50bHksIHdoZW4ga2V5IGRhdGEgaXMgZW1wdHksIENDS2V5RGVyaXZhdGlvbkhNYWMg
d2lsbCBiYWlsIG91dC4KKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vNDg4OTYwMjE+IFJlbWluZGVy
OiBTd2l0Y2ggdG8gQ0NEZXJpdmVLZXkgbm93IHRoYXQgQ0NLZXlEZXJpdmF0aW9uSE1hYyBpcyBk
ZXByZWNhdGVkLgorICAgIGlmIChDQ0tleURlcml2YXRpb25ITWFjKGtDQ0tERkFsZ29yaXRobUhL
REYsIGtDQ0RpZ2VzdFNIQTI1NiwgMCwga2V5LCBrZXlTaXplLCAwLCAwLCBpbmZvLCBpbmZvU2l6
ZSwgMCwgMCwgc2FsdCwgc2FsdFNpemUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBU
TykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVz
Q29jb2EuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2Eu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xY2UzYTk2MDZlZDVlMjA1YTBkYWI5MDI5ODMwNDdiNDUyZmNjZWRhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRp
ZXNDb2NvYS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJfQ1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit0eXBlZGVmIHVpbnQzMl90
IENDT3BlcmF0aW9uOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXksIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSk7CitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZTSEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3Qq
IGtleSwgc2l6ZV90IGtleVNpemUsIGNvbnN0IHVpbnQ4X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6
ZSwgY29uc3QgdWludDhfdCogaW5mbywgc2l6ZV90IGluZm9TaXplLCBzaXplX3QgbGVuZ3RoKTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8p
IHx8IEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDE2MWEyOGY0MTNmMGVlMTJjYTBmYzIzYjUwN2JkNDQxNjkyOWIxM2UuLjA2YWUyNDM4NzJmMjcz
NTljYmJmNTY2MzUzNWJkN2QzNDA3OTI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTE1Myw2ICsxNTMsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNs
dWRlICJQcmludENvbnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCisjaW5jbHVk
ZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRl
ICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCkBA
IC0xNTg1LDYgKzE1ODYsMTEgQEAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IEludGVybmFsczo6
Y3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpCiAgICAgcmV0dXJuIE1vY2tSVENSdHBUcmFuc2Zv
cm06OmNyZWF0ZSgpOwogfQogCit1aW50NjRfdCBJbnRlcm5hbHM6OnNmcmFtZUNvdW50ZXIoY29u
c3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgcmV0dXJuIHRyYW5z
Zm9ybS5jb3VudGVyRm9yVGVzdGluZygpOworfQorCiB2b2lkIEludGVybmFsczo6c2V0RW5hYmxl
V2ViUlRDRW5jcnlwdGlvbihib29sIHZhbHVlKQogewogI2lmIFVTRShMSUJXRUJSVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAyNDg1ZTEzZDZkNDk1NjM3OWU2ODY2NTA4YjAx
NmViMTQyNGZlNjZlLi41MmQwNTJkYTY5M2ZlYmNlNzFiM2QyMmI3NWUzMzMyOWRhM2E5ZDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEyNCw2ICsxMjQsMTAgQEAgY2xhc3Mg
VGV4dFRyYWNrQ3VlR2VuZXJpYzsKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShXRUJfUlRDKQorY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoV0VCWFIpCiBjbGFzcyBXZWJYUlRlc3Q7CiAjZW5kaWYKQEAgLTYwOCw2ICs2
MTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2wpOwogICAg
IHZvaWQgc2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29sKTsKICAgICBSZWY8TW9ja1JUQ1J0cFRy
YW5zZm9ybT4gY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOworICAgIHVpbnQ2NF90IHNmcmFt
ZUNvdW50ZXIoY29uc3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtJik7CiAgICAgdm9pZCBzZXRFbmFi
bGVXZWJSVENFbmNyeXB0aW9uKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlRFRMUzEwKGJvb2wpOwog
ICAgIHZvaWQgc2V0VXNlR1BVUHJvY2Vzc0ZvcldlYlJUQyhib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCBiMDE1NGIyOTg1ODBiZmFkMzMzYTExNGFmMzg0ZDFkYTkw
OWUxNjgyLi4xNDBhNmE1MDRkYjVkMGU1NzBhNmJhM2U3NDgxZGVkY2ZlYTQ0OWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04MDMsNiArODAzLDcgQEAgZW51bSBUcmVl
VHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlT
dXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVm
aW5lZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRp
dGlvbmFsPVdFQl9SVENdIE1vY2tSVENSdHBUcmFuc2Zvcm0gY3JlYXRlTW9ja1JUQ1J0cFRyYW5z
Zm9ybSgpOworICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bnNpZ25lZCBsb25nIGxvbmcgc2Zy
YW1lQ291bnRlcihSVENSdHBTRnJhbWVUcmFuc2Zvcm0gdHJhbnNmb3JtKTsKIAogICAgIFtDb25k
aXRpb25hbD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRNb2NrQXVkaW9UcmFja0NoYW5uZWxO
dW1iZXIoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgdW5zaWduZWQgc2hvcnQgY291bnQpOwogICAg
IFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRTaG91bGRJbnRlcnJ1cHRB
dWRpb09uUGFnZVZpc2liaWxpdHlDaGFuZ2UoYm9vbGVhbiBzaG91bGRJbnRlcnJ1cHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwKaW5kZXggMDll
YjBjM2NhMTVjNWYxOTdmMzZjZmI0NzQ5YzExODA2ZThhYzc3Ny4uZGU2MzE4NzYwNTk0YjY5ZjI3
YTAxZDY1ZTA4ODk4MDVmMzM3NDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tSVENSdHBUcmFuc2Zvcm0uaWRsCkBAIC0yNiw2ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9u
YWw9V0VCX1JUQywKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9O
YXRpdmVPYmplY3QsCiAgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBN
b2NrUlRDUnRwVHJhbnNmb3JtIDogUlRDUnRwVHJhbnNmb3JtIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBpc1Byb2Nlc3Npbmc7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzg1YTFiZWFjMWI4YjQ2Y2ZlYjZjNjJiODQwNzZlZTk3
OGQyN2FkZC4uN2FkYjU2MWZkOTIwMWMzMTI4NjAxYTM0MDk2ZWE4MGMzZDIzOGY2MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDIwLTExLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgYSBXZWJSVEMgU0ZyYW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHVuaXQgdGVzdHMgdGhhdCB2YWxpZGF0ZSBT
RnJhbWUgZ2VuZXJhdGlvbiBhbmQgcGFyc2luZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcDog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRSYXdLZXkpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y3JlYXRlVmlkZW9UcmFuc2Zvcm1lcik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjaGVja1ZlY3RvcnNBcmVFcXVhbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMC0xMS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjY5NTI1KTogTWFueSBsYXlvdXQgdGVzdHMgY3Jhc2gg
d2hlbiBydW4gdW5kZXIgQVNhbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMmM4MDEwY2Vm
YWMzNWYwNmU4YzNiY2I0NzgzY2Q5MzcxNDk1ZjcyLi5iNWY4MmM3NTQ3NGIzMjBiNjhjZDM0OWEz
OWJjYzM5MjdiZWI5Mjk3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2LDYgKzIzNiw3
IEBACiAJCTQxMzVGQjg1MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQu
ZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICov
OyB9OwogCQk0MTRBRDY4NjIyODVEMUMwMDA3NzdGMkQgLyogU3RvcmFnZVF1b3RhLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0QUQ2ODUyMjg1RDFC
MDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLzsgfTsKIAkJNDE2NjFDNjYyMzU1RTg1RTAw
RDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJhdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjYxQzY1MjM1NUQ5OEIwMEQzM0My
NyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAqLzsgfTsKKwkJNDE4MUM2MkQyNTVBODkx
MTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2MkMyNTVBODkxMTAwQUVC
MEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovOyB9OwogCQk0MTg0OEY0
NDI0ODkxODc5MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3Qu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13
aXRoLWhvc3QuaHRtbCAqLzsgfTsKIAkJNDE4ODJGMDMyMTAxMEMwRDAwMkZGMjg4IC8qIFByb2Nl
c3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICov
OyB9OwogCQk0NDA3N0JCMTIzMTQ0QjUwMDAxNzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDA3N0JC
MDIzMTQ0OUQyMDAxNzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gKi87IH07CkBAIC0x
OTU1LDYgKzE5NTYsNyBAQAogCQk0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0
U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDE0
QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFN0b3JhZ2VRdW90YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2
NjFDNjUyMzU1RDk4QjAwRDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJhdWRpby5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImdldFVzZXJNZWRpYS13ZWJhdWRpby5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxODQ4RjQzMjQ4OTE4MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRv
dy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gIm9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogUHJvY2Vzc1By
ZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9j
ZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMx
QUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzUxOSw2ICszNTIxLDcgQEAKIAkJCQkwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEg
LyogUHVibGljU3VmZml4LmNwcCAqLywKIAkJCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyog
UmVnaXN0cmFibGVEb21haW4uY3BwICovLAogCQkJCUY0MThCRTE0MUY3MUI3REMwMDE5NzBFNiAv
KiBSb3VuZGVkUmVjdFRlc3RzLmNwcCAqLywKKwkJCQk0MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYg
LyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAgKi8sCiAJCQkJQ0RDRkE3QTkxRTQ1
MTIyRjAwQzI0MzNEIC8qIFNhbXBsZU1hcC5jcHAgKi8sCiAJCQkJQ0UwNkRGOUExRTE4NTFGMjAw
RTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCAqLywKIAkJCQk0MTk3M0I1QzFBRjIyODc1MDA2
QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKQEAgLTU0MDUsNiArNTQwOCw3IEBACiAJCQkJ
NUNDQjEwRTMyMTM0NTdEODAwQUM1QUYwIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2
aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2RTgxNkY4MUU3OUUyOUMwMDM3NUFEQyAv
KiBSZXN0b3JlU3RhdGVBZnRlclRlcm1pbmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQx
OEJFMTUxRjcxQjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRSZWN0VGVzdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3
IC8qIFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDI5ODZFMjBGRUU3Mzcw
MDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDQTk4NTUzMjExM0NGNzgwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmcubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzc3
YjEzYmJmM2Y4ZTY4MDBlMmE0MTQ4YTM3YTNhMTQ2NWZlMmEwCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
VGVzdHMuY3BwCkBAIC0wLDAgKzEsMzU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgPFdlYkNvcmUvUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVmVjdG9yPHVpbnQ4X3Q+IGdldFJhd0tleSgpCit7Cisg
ICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjQ5LAorICAgICAgICAx
OTUsCisgICAgICAgIDIwMiwKKyAgICAgICAgMTU5LAorICAgICAgICA1NiwKKyAgICAgICAgMTkx
LAorICAgICAgICAxMDMsCisgICAgICAgIDI0NywKKyAgICAgICAgMjQ1LAorICAgICAgICAyMTMs
CisgICAgICAgIDIwLAorICAgICAgICA2OCwKKyAgICAgICAgNjcsCisgICAgICAgIDIwLAorICAg
ICAgICAxNTEsCisgICAgICAgIDE4NSwKKyAgICAgICAgMjQyLAorICAgICAgICA3OCwKKyAgICAg
ICAgMTc2LAorICAgICAgICAxNTgsCisgICAgICAgIDkxLAorICAgICAgICAyMDUsCisgICAgICAg
IDEzOCwKKyAgICAgICAgNTUsCisgICAgICAgIDE3NiwKKyAgICAgICAgMTQ3LAorICAgICAgICAx
OTgsCisgICAgICAgIDI0MywKKyAgICAgICAgMTQ2LAorICAgICAgICAyMDQsCisgICAgICAgIDI0
MywKKyAgICAgICAgMjIwCisgICAgKTsKK30KKworc3RhdGljIFJlZjxXZWJDb3JlOjpSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lcj4gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihib29sIGlzU2VuZGluZyA9
IHRydWUpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjpjcmVhdGUoKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKGlzU2Vu
ZGluZyk7CisgICAgdHJhbnNmb3JtZXItPnNldElzUHJvY2Vzc2luZ0F1ZGlvKGZhbHNlKTsKKwor
ICAgIGF1dG8ga2V5SWQgPSBWZWN0b3I8dWludDhfdD46OmZyb20oMTk4LCAzMSwgMjUxLCAxOTcs
IDQ4LCAxMzksIDkxLCA1MSk7CisgICAgdWludDY0X3Qga2V5SWRWYWx1ZSA9IDA7CisgICAgZm9y
IChhdXRvIHZhbHVlIDoga2V5SWQpCisgICAgICAgIGtleUlkVmFsdWUgPSB2YWx1ZSArIChrZXlJ
ZFZhbHVlIDw8IDgpOworCisgICAgYXV0byBrZXlSZXN1bHQgPSB0cmFuc2Zvcm1lci0+c2V0RW5j
cnlwdGlvbktleShnZXRSYXdLZXkoKSwga2V5SWRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGtl
eVJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZXI7Cit9CisK
K3N0YXRpYyB2b2lkIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
Y29tcHV0ZWQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwZWN0ZWQpCit7CisgICAgRVhQRUNU
X0VRKGNvbXB1dGVkLnNpemUoKSwgZXhwZWN0ZWQuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBj
cHRyID0gMDsgY3B0ciA8IHN0ZDo6bWluKGNvbXB1dGVkLnNpemUoKSwgZXhwZWN0ZWQuc2l6ZSgp
KTsgKytjcHRyKQorICAgICAgICBFWFBFQ1RfRVEoY29tcHV0ZWRbY3B0cl0sIGV4cGVjdGVkW2Nw
dHJdKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgQXV0aGVudGljYXRpb25L
ZXkpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsK
KyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbCh0cmFuc2Zvcm1lci0+YXV0aGVudGljYXRpb25LZXko
KSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICA5MiwKKyAgICAgICAgMjI4LAorICAg
ICAgICAxMzksCisgICAgICAgIDE5NSwKKyAgICAgICAgOTgsCisgICAgICAgIDE2LAorICAgICAg
ICA0LAorICAgICAgICAxOTMsCisgICAgICAgIDIyMSwKKyAgICAgICAgMjQ4LAorICAgICAgICAy
MzIsCisgICAgICAgIDE3OCwKKyAgICAgICAgMTM1LAorICAgICAgICAyMiwKKyAgICAgICAgMTQx
LAorICAgICAgICAxNTAsCisgICAgICAgIDE2NSwKKyAgICAgICAgMjQyLAorICAgICAgICA3MywK
KyAgICAgICAgNzIsCisgICAgICAgIDEwLAorICAgICAgICAxOTcsCisgICAgICAgIDE1LAorICAg
ICAgICA4NywKKyAgICAgICAgMTgxLAorICAgICAgICAzNCwKKyAgICAgICAgMTIwLAorICAgICAg
ICA3MSwKKyAgICAgICAgNDIsCisgICAgICAgIDE3NCwKKyAgICAgICAgMTMxLAorICAgICAgICA3
MgorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0aW9u
S2V5KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7
CisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwodHJhbnNmb3JtZXItPmVuY3J5cHRpb25LZXkoKSwg
VmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAyMDcsCisgICAgICAgIDI1MSwKKyAgICAg
ICAgNTIsCisgICAgICAgIDIxLAorICAgICAgICAxMDEsCisgICAgICAgIDUwLAorICAgICAgICAy
MzIsCisgICAgICAgIDQ4LAorICAgICAgICAyMTEsCisgICAgICAgIDExNSwKKyAgICAgICAgMTEs
CisgICAgICAgIDE1NSwKKyAgICAgICAgMTAxLAorICAgICAgICAxMTYsCisgICAgICAgIDE1MywK
KyAgICAgICAgNzEKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwg
U2FsdEtleSkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1l
cigpOworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHRyYW5zZm9ybWVyLT5zYWx0S2V5KCksIFZl
Y3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjI5LAorICAgICAgICAxOSwKKyAgICAgICAg
NDIsCisgICAgICAgIDkzLAorICAgICAgICAxNjQsCisgICAgICAgIDEwMywKKyAgICAgICAgMTIw
LAorICAgICAgICA1MywKKyAgICAgICAgMjUsCisgICAgICAgIDI2LAorICAgICAgICAyMzcsCisg
ICAgICAgIDIwNCwKKyAgICAgICAgNzksCisgICAgICAgIDEzOCwKKyAgICAgICAgMTM4LAorICAg
ICAgICAyMzEKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5j
cnlwdERlY3J5cHQpCit7CisgICAgYXV0byBlbmNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9y
bWVyKCk7CisgICAgYXV0byBkZWNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKGZhbHNl
KTsKKyAgICBhdXRvIGZyYW1lID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKDEzNSwgODksIDUxLCAx
NjYsIDI0OCwgMTI5LCAxNTcsIDExMSwgMTkwLCAxMzQsIDIyMCk7CisKKyAgICBhdXRvIGVuY3J5
cHRlZFJlc3VsdCA9IGVuY3J5cHRvci0+dHJhbnNmb3JtKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZW5jcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsK
KworICAgIGF1dG8gZW5jcnlwdGVkID0gZW5jcnlwdGVkUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOworICAgIGF1dG8gZGVjcnlwdGVkUmVzdWx0ID0gZGVjcnlwdG9yLT50cmFuc2Zvcm0oZW5j
cnlwdGVkLmRhdGEoKSwgZW5jcnlwdGVkLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGRlY3J5
cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChk
ZWNyeXB0ZWRSZXN1bHQucmV0dXJuVmFsdWUoKSwgZnJhbWUpOworfQorCitURVNUKFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0RGVjcnlwdEtleUlEMCkKK3sKKyAgICBhdXRvIGVuY3J5
cHRvciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBlbmNyeXB0b3ItPnNldEVuY3J5
cHRpb25LZXkoZ2V0UmF3S2V5KCksIDApOworCisgICAgYXV0byBkZWNyeXB0b3IgPSBjcmVhdGVW
aWRlb1RyYW5zZm9ybWVyKGZhbHNlKTsKKyAgICBkZWNyeXB0b3ItPnNldEVuY3J5cHRpb25LZXko
Z2V0UmF3S2V5KCksIDApOworCisgICAgYXV0byBmcmFtZSA9IFZlY3Rvcjx1aW50OF90Pjo6ZnJv
bSgxMzUsIDg5LCA1MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjApOwor
CisgICAgYXV0byBlbmNyeXB0ZWRSZXN1bHQgPSBlbmNyeXB0b3ItPnRyYW5zZm9ybShmcmFtZS5k
YXRhKCksIGZyYW1lLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGVuY3J5cHRlZFJlc3VsdC5o
YXNFeGNlcHRpb24oKSk7CisKKyAgICBhdXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRlZFJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5cHRv
ci0+dHJhbnNmb3JtKGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOworICAgIEVY
UEVDVF9GQUxTRShkZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hlY2tW
ZWN0b3JzQXJlRXF1YWwoZGVjcnlwdGVkUmVzdWx0LnJldHVyblZhbHVlKCksIGZyYW1lKTsKK30K
KworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjApCit7Cisg
ICAgYXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKworICAgIHVp
bnQ4X3QgZnJhbWUxW10gPSB7IDEzNSwgODksIDUxLCAxNjYsIDI0OCwgMTI5LCAxNTcsIDExMSwg
MTkwLCAxMzQsIDIyMCB9OworICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShmcmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKTsKKworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAxNSwKKyAgICAgICAg
MTk4LAorICAgICAgICAzMSwKKyAgICAgICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAgIDQ4
LAorICAgICAgICAxMzksCisgICAgICAgIDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMCwKKyAg
ICAgICAgMjU0LAorICAgICAgICAxNzEsCisgICAgICAgIDE2OCwKKyAgICAgICAgMTI3LAorICAg
ICAgICAxNTgsCisgICAgICAgIDk3LAorICAgICAgICA3MCwKKyAgICAgICAgNCwKKyAgICAgICAg
MjMzLAorICAgICAgICAxNTYsCisgICAgICAgIDEzNCwKKyAgICAgICAgMjIwLAorICAgICAgICA0
NCwKKyAgICAgICAgNTAsCisgICAgICAgIDkwLAorICAgICAgICAzLAorICAgICAgICA2OCwKKyAg
ICAgICAgMjAwLAorICAgICAgICAxMjcsCisgICAgICAgIDIyMywKKyAgICAgICAgNgorICAgICkp
OworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1Db3VudGVyMjU2
KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisK
KyAgICB1aW50OF90IGZyYW1lMVtdID0geyA4LCAxNjQsIDE4OSwgMTgsIDYxLCAxMTcsIDEzMiwg
NDMsIDExNywgMTY5LCA0MiB9OworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gcmVzdWx0ID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CisgICAgcmVzdWx0ID0gdHJhbnNmb3Jt
ZXItPnRyYW5zZm9ybShmcmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICBmb3IgKHNpemVfdCBj
cHRyID0gMDsgY3B0ciA8IDI1NjsgKytjcHRyKSB7CisgICAgICAgIHJlc3VsdCA9IHRyYW5zZm9y
bWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIH0KKyAgICBjaGVja1ZlY3RvcnNBcmVF
cXVhbChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgK
KyAgICAgICAgMzEsCisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAg
ICAgICAgMTk3LAorICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAg
ICAgNTEsCisgICAgICAgIDEsCisgICAgICAgIDAsCisgICAgICAgIDEyNCwKKyAgICAgICAgMjE4
LAorICAgICAgICA2MSwKKyAgICAgICAgMjMsCisgICAgICAgIDc4LAorICAgICAgICAxNSwKKyAg
ICAgICAgMTkwLAorICAgICAgICAzNSwKKyAgICAgICAgMjU1LAorICAgICAgICAyNTMsCisgICAg
ICAgIDEyMCwKKyAgICAgICAgNjQsCisgICAgICAgIDI4LAorICAgICAgICAxODMsCisgICAgICAg
IDE3MiwKKyAgICAgICAgMTU0LAorICAgICAgICAxNDQsCisgICAgICAgIDE2LAorICAgICAgICAy
MjksCisgICAgICAgIDg3LAorICAgICAgICA1MgorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1Db3VudGVyNjU1MzYpCit7CisgICAgYXV0byB0cmFu
c2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0
Q291bnRlcig2NTUzNik7CisKKyAgICB1aW50OF90IGZyYW1lMVtdID0geyAwLCAzMywgMjQ0LCAy
NCwgMjM2LCAxNTYsIDEyNywgOCwgNDgsIDg4LCAyMjAgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHRy
YW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVh
bChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAg
ICAgICAgNDcsCisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAg
ICAgMTk3LAorICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAg
NTEsCisgICAgICAgIDEsCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIDk4LAorICAg
ICAgICAyMTIsCisgICAgICAgIDEzNywKKyAgICAgICAgMjQ0LAorICAgICAgICAyMDksCisgICAg
ICAgIDE2LAorICAgICAgICA4OSwKKyAgICAgICAgMjM0LAorICAgICAgICAyMSwKKyAgICAgICAg
MTcxLAorICAgICAgICAxNSwKKyAgICAgICAgMTA3LAorICAgICAgICA1MCwKKyAgICAgICAgMTQ1
LAorICAgICAgICA3MywKKyAgICAgICAgMTA3LAorICAgICAgICAxNjUsCisgICAgICAgIDQ1LAor
ICAgICAgICAxOTAsCisgICAgICAgIDI1LAorICAgICAgICA4MgorICAgICkpOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YjMzZmZlZTMzNzQ0NzU4OWUzZWQx
ZWEwYjJiNWRhZTdjMTQ2NjI3Li45YTM2MjViZjJhZDcxZmM3NzJlM2U5ZWZiZmU3MWUyYTc4NmQy
ZTlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTMgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFdlYlJUQyBTRnJhbWUgdHJhbnNmb3Jt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3NTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYnJ0
Yy9hdWRpby1zZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvYXVk
aW8tc2ZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIwLTExLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIFdlYlJUQyB0
cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY3MDZiNGM5MjVhZTJhOTIzMTc2NDllMjc4NzE1YWY2Yzk1YmJlODgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKKworCitQQVNTIEF1ZGlvIGV4Y2hhbmdlIHdpdGggU0ZyYW1l
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzZiNzUwYzBk
ZjU2N2RiZTQ5Y2FlYzEyYTBhNGZiZjI5Y2VkMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVv
IGlkPSJhdWRpbyIgYXV0b3BsYXkgcGxheXNJbmxpbmU+PC92aWRlbz4KKyAgICAgICAgPHNjcmlw
dCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Citwcm9taXNl
X3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBj
b25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUu
aW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTks
IDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZh
bHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworICAgIGNvbnN0IHN0cmVhbSA9IGF3
YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29u
bmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2VuZGVyID0gZmly
c3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxv
Y2FsU3RyZWFtKTsKKyAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtOworICAgICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsK
KyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChz
ZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJh
Y2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBu
ZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRF
bmNyeXB0aW9uS2V5KGtleSk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50
LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9y
bTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAg
ICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3Qo
IlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0pOworCisgICAgYXVkaW8uc3JjT2JqZWN0
ID0gc3RyZWFtOworICAgIGF3YWl0IGF1ZGlvLnBsYXkoKTsKKworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIGNvbnN0IHNlbmRlckNvdW50ZXIgPSBpbnRlcm5hbHMuc2ZyYW1l
Q291bnRlcihzZW5kZXIudHJhbnNmb3JtKTsKKyAgICAgICAgY29uc3QgcmVjZWl2ZXJDb3VudGVy
ID0gaW50ZXJuYWxzLnNmcmFtZUNvdW50ZXIocmVjZWl2ZXIudHJhbnNmb3JtKTsKKworICAgICAg
ICBsZXQgY291bnRlciA9IDA7CisgICAgICAgIHdoaWxlIChyZWNlaXZlckNvdW50ZXIgPT09IGlu
dGVybmFscy5zZnJhbWVDb3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSkgJiYgKytjb3VudGVyIDwg
MTAwKQorICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0
KHJlc29sdmUsIDUwKSk7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJh
bWVDb3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSksIHJlY2VpdmVyQ291bnRlciwgInJlY2VpdmVy
Iik7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHNl
bmRlci50cmFuc2Zvcm0pLCBzZW5kZXJDb3VudGVyLCAic2VuZGVyIik7CisgICAgfQorfSwgIkF1
ZGlvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414029</attachid>
            <date>2020-11-13 03:55:36 -0800</date>
            <delta_ts>2020-11-13 06:23:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218752-20201113125533.patch</filename>
            <type>text/plain</type>
            <size>79987</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uYjc1M2M2N2ExY2UwZTg5NjVkZjJhODQ1ZTkxOWY2
NWE1Y2RlNzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRoYXQgaW1wbGVtZW50cyB0
aGUgU0ZyYW1lIGZvcm1hdC4KKyAgICAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGlzIGEgUlRD
UnRwVHJhbnNmb3JtIHRoYXQgY2FuIGJlIHNldCB0byBSVENSdHAgc2VuZGVyIGFuZCByZWNlaXZl
ciBvYmplY3RzLgorICAgICAgICBBUEkgc3VwcG9ydHMgc2V0dGluZyBlbmNyeXB0aW9uIGtleS4K
KyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gcmV1c2UgV2ViQ3J5cHRvIHJvdXRpbmVzIGZv
ciBlbmNyeXB0aW9uL2RlY3J5cHRpb24uCisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxl
bmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlWKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1
dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5
cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRl
Y3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUpOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcml2
ZUhES0ZTSEEyNTZCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjMjk5ZDgzMGNiNjFlOTQ0NjlkOGU2MmI3MmJkODU3ZTMxNDhjYmIzLi45
NGQwNjJiZjk5M2QxYjRjN2M0NDQyNGZhNGU5MTY1N2Y0MDA3ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNDAyLDYgKzQwMiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitU
cmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
NjliNjg2MWI2YWZhMWQwYWMwOTdiMWJkMzEwNjQ0ODNlZWM3NTE5Li4zOTY1ZTZjZDA1ZDQyZjM2
NTBiMjU3ZTM5Nzc0OTU0ZjIwNWI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIzNiw2ICsyMzYsNyBAQCAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZGI2NzEwMDg4ZWYyNDU0NDgzMDI1ZTAxZTRhYTdjZTVkZmVjMzA0Yy4uMjZkM2Mx
NGEyYTY4Yjg5MTY2OWViMGQ1NjAyN2NlNGY1Y2U3M2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3MDUsNiArMTcwNSw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFJlY2VpdmVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlhZTQwYzE4Nzk2
ODkzODE3Yjg0MTY1MjdjMjQwYWY3MjNlOGYxMTYuLmE1ZmI0NWI4MGZiMDFmZDk5MGI0NWY2NmM3
NWIyZGFjNTc5Zjc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYzLDYg
KzI2Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjMwZWZkZTIyMTkzZDAwMjQyMTM0MWJhZGY1Mzc4OTE1YjY4NDEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSVENSdHBTRnJhbWVUcmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybSgpCisgICAgOiBtX3RyYW5zZm9ybWVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpj
cmVhdGUoKSkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJh
bnNmb3JtKCkKK3sKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRp
b25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5h
bGdvcml0aG0oKTsKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxn
b3JpdGhtPihhbGdvcml0aG0pKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIkludmFsaWQga2V5Il9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdURjo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9
ICJIS0RGIikgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8m
IHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNlLnNldHRs
ZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5SWQpKTsK
K30KKwordWludDY0X3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtZXItPmNvdW50ZXIoKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAgbV90cmFuc2Zvcm1lci0+
c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5zZm9ybWVyLT5z
ZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1h
YmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0g
bWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBm
cmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBhIGZyYW1lIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJl
dHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisKKyAg
ICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZSkpOwor
ICAgIH0pOworfQorCisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAg
aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVy
KGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
Ojp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYx
NGJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENy
eXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CisgICAgflJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSgpOworCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9w
dGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9p
ZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmlu
YWw7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBm
aW5hbDsKKworICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKKyAgICB2
b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7
CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4
N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2lu
ZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CisgICAgY29uc3RydWN0b3IoKTsKKwor
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBtaXNzaW5nIG1ldGhvZHMuCisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHJhdGNo
ZXRFbmNyeXB0aW9uS2V5KCk7CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHNldFNpZ25pbmdL
ZXkoQ3J5cHRvS2V5IGtleSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDYwMDU4NGQ2OWVlYjlhYWZkZTE4MWU0ZGFkZmRmNjk4ZThmOTE0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1aW50OF90KiBk
YXRhLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMZW5ndGg7ICsraSkKKyAgICAgICAgKmRhdGErKyA9ICh2
YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0gMSAtIGkpICogOCkpICYgMHhmZjsKK30KKworc3RhdGlj
IGlubGluZSB1aW50OF90IGxlbmd0aE9mVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIHVp
bnQ4X3QgbGVuZ3RoID0gMDsKKyAgICBkbyB7CisgICAgICAgICsrbGVuZ3RoOworICAgICAgICB2
YWx1ZSA9IHZhbHVlID4+IDg7CisgICAgfSB3aGlsZSAodmFsdWUpOworICAgIHJldHVybiBsZW5n
dGg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBjb21wdXRlRmlyc3RIZWFkZXJCeXRlKHVp
bnQ2NF90IGtleUlkLCB1aW50NjRfdCBjb3VudGVyKQoreworICAgIHVpbnQ4X3QgdmFsdWUgPSAw
OworICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChjb3VudGVyKSAtIDEpIDw8IDQ7CisgICAg
aWYgKGtleUlkIDwgOCkKKyAgICAgICAgdmFsdWUgfD0ga2V5SWQ7CisgICAgZWxzZSB7CisgICAg
ICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChrZXlJZCkgLSAxKTsKKyAgICAgICAgdmFsdWUg
fD0gMSA8PCAzOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVJVih1aW50NjRfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNhbHRLZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGl2KDE2KTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSAo
Y291bnRlciA+PiAoKDcgLSBpKSAqIDgpKSAmIDB4ZmY7CisgICAgICAgIGl2W2ldID0gdmFsdWUg
XiBzYWx0S2V5W2ldOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA4OyBpIDwgMTY7ICsr
aSkKKyAgICAgICAgaXZbaV0gPSBzYWx0S2V5W2ldOworICAgIHJldHVybiBpdjsKK30KKworc3Ry
dWN0IFNGcmFtZUhlYWRlckluZm8geworICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBr
ZXlJZDsKKyAgICB1aW50NjRfdCBjb3VudGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXV0byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qg
a2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5
dGUgPSAqZGF0YSsrOworCisgICAgLy8gU2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoZmlyc3RCeXRl
ICYgMHg4MCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHNpemVfdCBjb3VudGVyTGVuZ3Ro
ID0gKChmaXJzdEJ5dGUgPj4gNCkgJiAweDA3KSArIDE7CisKKyAgICBpZiAoc2l6ZSA8IGNvdW50
ZXJMZW5ndGggKyAxKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGZpcnN0Qnl0ZSAm
IDB4MDgpIHsKKyAgICAgICAgc2l6ZV90IGtleUxlbmd0aCA9IChmaXJzdEJ5dGUgJiAweDA3KSAr
IDE7CisgICAgICAgIGlmIChzaXplIDwgY291bnRlckxlbmd0aCArIGtleUxlbmd0aCArIDEpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHdoaWxlIChrZXlMZW5ndGgtLSkKKyAg
ICAgICAgICAgIGtleUlkID0gKGtleUlkIDw8IDgpIHwgKmRhdGErKzsKKyAgICAgICAgd2hpbGUg
KGNvdW50ZXJMZW5ndGgtLSkKKyAgICAgICAgICAgIGNvdW50ZXIgPSAoY291bnRlciA8PCA4KSB8
ICpkYXRhKys7CisgICAgfSBlbHNlIHsKKyAgICAgICAga2V5SWQgPSBmaXJzdEJ5dGUgJiAweDA3
OworICAgICAgICB3aGlsZSAoY291bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9
IChjb3VudGVyIDw8IDgpIHwgKmRhdGErKzsKKyAgICB9CisgICAgdWludDhfdCBoZWFkZXJTaXpl
ID0gZGF0YSAtIHN0YXJ0OworICAgIHJldHVybiBTRnJhbWVIZWFkZXJJbmZvIHsgaGVhZGVyU2l6
ZSwga2V5SWQsIGNvdW50ZXIgfTsKK30KKworUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpKTsKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpCit7Cit9CisKK0V4Y2VwdGlvbk9y
PHZvaWQ+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1aW50NjRfdD4ga2V5SWQpCit7CisgICAg
YXV0byBzYWx0S2V5UmVzdWx0ID0gY29tcHV0ZVNhbHRLZXkocmF3S2V5KTsKKyAgICBpZiAoc2Fs
dEtleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNhbHRLZXlSZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBhdXRoZW50aWNhdGlvbktleVJlc3VsdCA9
IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShyYXdLZXkpOworICAgIGlmIChhdXRoZW50aWNhdGlv
bktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9u
S2V5UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gZW5jcnlwdGlvbktleVJl
c3VsdCA9IGNvbXB1dGVFbmNyeXB0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGVuY3J5cHRpb25L
ZXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBlbmNyeXB0aW9uS2V5UmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9r
ZXlMb2NrKTsKKworICAgIG1fc2FsdEtleSA9IHNhbHRLZXlSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgbV9hdXRoZW50aWNhdGlvbktleSA9IGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIG1fZW5jcnlwdGlvbktleSA9IGVuY3J5cHRpb25L
ZXlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBpZiAoa2V5SWQpCisgICAgICAg
IG1fa2V5SWQgPSAqa2V5SWQ7CisKKyAgICBtX2hhc0tleSA9IHRydWU7CisgICAgcmV0dXJuIHsg
fTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1l
U2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGhlYWRlciA9IHBhcnNlU0Zy
YW1lSGVhZGVyKGZyYW1lRGF0YSwgZnJhbWVTaXplKTsKKworICAgIGlmICghaGVhZGVyKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIGlmICho
ZWFkZXItPmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1fY291bnRlcikKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgbV9jb3VudGVyID0gaGVhZGVy
LT5jb3VudGVyOworCisgICAgaWYgKGhlYWRlci0+a2V5SWQgIT0gbV9rZXlJZCkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlYXJjaCBmb3Iga2V5cy4KKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgfQorCisgICAgLy8gQ29tcHV0ZSBz
aWduYXR1cmUKKyAgICBhdXRvKiB0cmFuc21pdHRlZFNpZ25hdHVyZSA9IGZyYW1lRGF0YSArIGZy
YW1lU2l6ZSAtIG1fYXV0aGVudGljYXRpb25TaXplOworICAgIGF1dG8gc2lnbmF0dXJlID0gY29t
cHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoZnJhbWVEYXRhLCBmcmFtZVNpemUgIC0gbV9hdXRo
ZW50aWNhdGlvblNpemUsIG1fYXV0aGVudGljYXRpb25LZXkpOworICAgIGZvciAoc2l6ZV90IGNw
dHIgPSAwOyBjcHRyIDwgbV9hdXRoZW50aWNhdGlvblNpemU7ICsrY3B0cikgeworICAgICAgICBp
ZiAoc2lnbmF0dXJlW2NwdHJdICE9IHRyYW5zbWl0dGVkU2lnbmF0dXJlW2NwdHJdKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSByYXRjaGV0aW5nLgorICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBEZWNyeXB0IGRhdGEKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1fY291bnRl
ciwgbV9zYWx0S2V5KTsKKyAgICBhdXRvIGRhdGFTaXplID0gZnJhbWVTaXplIC0gaGVhZGVyLT5z
aXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0RGF0
YShmcmFtZURhdGEgKyBoZWFkZXItPnNpemUsIGRhdGFTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5
KTsKKworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90
IGZyYW1lU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgTWF4SGVhZGVyU2l6ZSA9IDE3OworCisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2tleUxvY2spOworCisgICAgYXV0byBpdiA9IGNvbXB1dGVJVihtX2Nv
dW50ZXIsIG1fc2FsdEtleSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdHJhbnNmb3JtZWREYXRh
OworICAgIHRyYW5zZm9ybWVkRGF0YS5yZXNpemUoZnJhbWVTaXplICsgTWF4SGVhZGVyU2l6ZSAr
IG1fYXV0aGVudGljYXRpb25TaXplKTsKKworICAgIC8vIEZpbGwgaGVhZGVyLgorICAgIHNpemVf
dCBoZWFkZXJTaXplID0gMTsKKyAgICB0cmFuc2Zvcm1lZERhdGFbMF0gPSBjb21wdXRlRmlyc3RI
ZWFkZXJCeXRlKG1fa2V5SWQsIG1fY291bnRlcik7CisgICAgaWYgKG1fa2V5SWQgPj0gOCkgewor
ICAgICAgICBhdXRvIGtleUlkTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9rZXlJZCk7CisgICAg
ICAgIHdyaXRlVUludDY0KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBtX2tl
eUlkLCBrZXlJZExlbmd0aCk7CisgICAgICAgIGhlYWRlclNpemUgKz0ga2V5SWRMZW5ndGg7Cisg
ICAgfQorICAgIGF1dG8gY291bnRlckxlbmd0aCA9IGxlbmd0aE9mVUludDY0KG1fY291bnRlcik7
CisgICAgd3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1f
Y291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgaGVhZGVyU2l6ZSArPSBjb3VudGVyTGVuZ3Ro
OworCisgICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBoZWFkZXJTaXplICsg
bV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBlbmNyeXB0ZWQgZGF0YQorICAg
IGF1dG8gZW5jcnlwdGVkRGF0YSA9IGVuY3J5cHREYXRhKGZyYW1lRGF0YSwgZnJhbWVTaXplLCBp
diwgbV9lbmNyeXB0aW9uS2V5KTsKKyAgICBBU1NFUlQoIWVuY3J5cHRlZERhdGEuaGFzRXhjZXB0
aW9uKCkpOworICAgIGlmIChlbmNyeXB0ZWREYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZW5jcnlwdGVkRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBzdGQ6Om1lbWNw
eSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwgZW5jcnlwdGVkRGF0YS5yZXR1
cm5WYWx1ZSgpLmRhdGEoKSwgZnJhbWVTaXplKTsKKworICAgIC8vIEZpbGwgc2lnbmF0dXJlCisg
ICAgYXV0byBzaWduYXR1cmUgPSBjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZSh0cmFuc2Zv
cm1lZERhdGEuZGF0YSgpLCBmcmFtZVNpemUgKyBoZWFkZXJTaXplLCBtX2F1dGhlbnRpY2F0aW9u
S2V5KTsKKyAgICBzdGQ6Om1lbWNweSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgZnJhbWVTaXpl
ICsgaGVhZGVyU2l6ZSwgc2lnbmF0dXJlLmRhdGEoKSwgbV9hdXRoZW50aWNhdGlvblNpemUpOwor
CisgICAgKyttX2NvdW50ZXI7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhOworfQorCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFu
c2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2hh
c0tleSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICByZXR1cm4gbV9pc1NlbmRpbmcgPyBlbmNyeXB0RnJhbWUoZGF0YSwgc2l6ZSkgOiBkZWNy
eXB0RnJhbWUoZGF0YSwgc2l6ZSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlU2Fs
dEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdERh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZW5jcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShjb25zdCB1
aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiB7
IH07Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNDU4MGVlODY5NTA2NjZmODgxNjliOTk4OTQzYzMxNjJkNTgxZGM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm1lci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
KyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyeXB0b0tleTsKKworY2xhc3Mg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIoKTsKKworICAgIHZvaWQgc2V0SXNTZW5kaW5nKGJvb2wpOworICAgIHZvaWQgc2V0SXNQcm9j
ZXNzaW5nQXVkaW8oYm9vbCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25h
bDx1aW50NjRfdD4pOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gdHJhbnNmb3JtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworCisgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVu
dGljYXRpb25LZXk7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGVuY3J5cHRpb25LZXko
KSBjb25zdCB7IHJldHVybiBtX2VuY3J5cHRpb25LZXk7IH0KKyAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHNhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NhbHRLZXk7IH0KKworICAgIHVpbnQ2
NF90IGNvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXI7IH0KKyAgICB2b2lkIHNldENv
dW50ZXIodWludDY0X3QgY291bnRlcikgeyBtX2NvdW50ZXIgPSBjb3VudGVyOyB9CisKK3ByaXZh
dGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKTsKKworICAg
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZW5jcnlwdEZyYW1l
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworCisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0
b3I8dWludDhfdD4mKTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVF
bmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworCisgICAgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7CisgICAg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwg
c2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJl
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKwor
ICAgIExvY2sgbV9rZXlMb2NrOworICAgIGJvb2wgbV9oYXNLZXkgeyBmYWxzZSB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1dGhlbnRpY2F0aW9uS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBt
X2VuY3J5cHRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc2FsdEtleTsKKworICAgIGJv
b2wgbV9pc1NlbmRpbmcgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fYXV0aGVudGljYXRpb25T
aXplIHsgMTAgfTsKKyAgICB1aW50NjRfdCBtX2tleUlkIHsgMCB9OworICAgIHVpbnQ2NF90IG1f
Y291bnRlciB7IDAgfTsKK307CisKK2lubGluZSB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpzZXRJc1NlbmRpbmcoYm9vbCBpc1NlbmRpbmcpCit7CisgICAgbV9pc1NlbmRpbmcgPSBpc1Nl
bmRpbmc7Cit9CisKK2lubGluZSB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRJc1By
b2Nlc3NpbmdBdWRpbyhib29sIGlzUHJvY2Vzc2luZ0F1ZGlvKQoreworICAgIG1fYXV0aGVudGlj
YXRpb25TaXplID0gaXNQcm9jZXNzaW5nQXVkaW8gPyA0IDogMTA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzZDQyNDgwMmUxOTNjYWQ3MGQyMWJj
MjEzNzlmODUwZmIzNTc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIgor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5o
IgorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sK
KyAgICB1aW50OF90IHVzYWdlW10gPSAiU0ZyYW1lU2FsdEtleSI7CisgICAgcmV0dXJuIGRlcml2
ZUhES0ZTSEEyNTZCaXRzKHJhd0tleS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJh
d0tleS5zaXplKCkgLSAxNiwgdXNhZ2UsIHNpemVvZih1c2FnZSkgLSAxLCAxMjgpOworfQorCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21w
dXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCit7Cisg
ICAgdWludDhfdCB1c2FnZVtdID0gIlNGcmFtZUF1dGhlbnRpY2F0aW9uS2V5IjsKKyAgICByZXR1
cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkg
KyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDI1Nik7
Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmNvbXB1dGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQor
eworICAgIHVpbnQ4X3QgdXNhZ2VbXSA9ICJTRnJhbWVFbmNyeXB0aW9uS2V5IjsKKyAgICByZXR1
cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkg
KyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDEyOCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBpdiwgaXYuc2l6ZSgpLCBrZXksIGRh
dGEsIHNpemUpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkp
Cit7CisgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgaXYsIGl2LnNpemUo
KSwga2V5LCBkYXRhLCBzaXplKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgQ0NIbWFj
KGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGRhdGEsIHNpemUsIHJl
c3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJU
cmFuc2Zvcm1CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaAppbmRleCA1YWU5
N2ZkMDEwZDU0ZDliYzdiYjFiMDAwZTNmMTc5OGM1NjAzZjNiLi40YTViY2JkMWMzMmYxYjZhNzUz
N2M3ZTAwYWFkNDM3MDZhMGNlY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaApAQCAtMjcsNiArMjcsNyBAQAog
I2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogQUxMT1df
VU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDY0YTVkNWQ0ZDQ3MDY0NjkzYzA1ZmY4NzIxZWM1ZTM3YjA1
Mzk1NjUuLjEwZDA5ZjI3NGFmNTlhZTE4YjBiODE1MDA3ODFlNWZjNDA0NWE4ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNjMsNiArMTYzLDggQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VUcmFu
c3BvcnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lci5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zY2VpdmVyLmNwcApAQCAtMzMxOSw2ICszMzIxLDcgQEAgSlNSVENSdHBIZWFkZXJF
eHRlbnNpb25QYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBS
ZWNlaXZlci5jcHAKIEpTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKK0pTUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmNwcAogSlNSVENSdHBTZW5kUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNw
cAogSlNSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCAyYWQzM2E5NTUxOTJkOTA3NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi5mNTAyZTcx
YzRmODFlM2ZlNjVkNDBhMTAxOTgyMmYzYmJkNTMxYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKQEAgLTg5LDYgKzg5LDcgQEAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFy
eUl0ZW1zQ29jb2EubW0KIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
bW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVz
L3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCkBAIC0xMjgsNiArMTI5
LDcgQEAgY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHAKIGNyeXB0by9t
YWMvQ3J5cHRvS2V5RUNNYWMuY3BwCiBjcnlwdG8vbWFjL0NyeXB0b0tleU1hYy5jcHAKIGNyeXB0
by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2Nv
YS5jcHAKIGNyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KIGRvbS9EYXRh
VHJhbnNmZXJNYWMubW0KIGRvbS9pb3MvTW91c2VFdmVudElPUy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOThkMTZhOTFi
OGMxY2QwNGY3MGFkY2VlNmZkZGZlYTRkOTE0ZDAzLi5mZDRiYjVhNWZlOWY0YWVlYzk2MWUxNGZl
MTVmMTBiMTdhNTY4NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5LDYgKzExMDksOCBAQAogCQk0MTgxQzVENjI1NTVD
MUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1v
Y2tSVENSdHBUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8q
IE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwICovOyB9OwogCQk0MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRD
UnRwVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENkYzRTkyMUMxRjg1NTUwMDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0u
Y3BwICovOyB9OworCQk0MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODFDNjQyMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxODFDNjRB
MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAw
RDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4
MjZCRjIyM0ZCNTk3NzAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjZCRjEyM0ZCNTk3MDAwQjky
MkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxODRGNTE2MUVBRjA1QTgwMEYxOEJGMCAvKiBPcmllbnRh
dGlvbk5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzAyLDYg
Kzc3MDQsMTIgQEAKIAkJNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JUQ1J0
cFRyYW5zZm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUQ1MjU1
NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE4MUM2MzYyNTVBRTI2MTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zv
cm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTgxQzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE4MUM2NDEyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDIyNTVCNEMy
NjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQ0MjU1QjRDMjcwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxODFDNjQ1MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjA1NDUxRTUzQzhD
RDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgy
MDU0ODFFNTNFQUFEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE4MjZCRjEyM0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MzUsNiArNzc0Myw4IEBACiAJ
CTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlz
aXRlZExpbmtTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdGVk
TGlua1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJFNzUyMUJDN0Yz
REIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVCdWlsdGluTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE5RDkzMDUyNTVFODQyNzAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29h
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b1V0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxOUQ5MzA3MjU1RTg0MjgwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRp
ZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCMzU3MiAv
KiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJD
RiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVT
dHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwODksNiArMTcwOTks
MTIgQEAKIAkJCQk0MTNDOEIyRTI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybS5oICovLAogCQkJCTQxNEFEM0ZDMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBTZW5k
UGFyYW1ldGVycy5oICovLAogCQkJCTQxNEFEM0ZFMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwgKi8sCisJCQkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgKi8sCisJCQkJNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovLAorCQkJCTQxODFDNjQzMjU1QjRDMjcwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsICovLAorCQkJCTQxODFDNjQxMjU1QjRD
MjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgKi8sCisJCQkJNDE4MUM2
NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8sCisJCQkJ
NDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2Eu
Y3BwICovLAogCQkJCTQxNUUxQkI2MjE1MDE1MkEwMDIyREE5NiAvKiBSVENSdHBTeW5jaHJvbml6
YXRpb25Tb3VyY2UuaCAqLywKIAkJCQk0MTVFMUJCNzIxNTAxNTMwMDAyMkRBOTYgLyogUlRDUnRw
U3luY2hyb25pemF0aW9uU291cmNlLmlkbCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBE
ODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovLApAQCAtMjgyNTUsNiArMjgyNzEsOCBAQAog
CQkJCTU3NTBBOTdBMUU2OTE2MTYwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQ01hYy5jcHAgKi8sCiAJ
CQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi8sCiAJCQkJ
RTE2NEZBQTQxODMxNUUxQTAwREI0RTYxIC8qIENyeXB0b0tleVJTQU1hYy5jcHAgKi8sCisJCQkJ
NDE5RDkzMDcyNTVFODQyODAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmNwcCAqLywK
KwkJCQk0MTlEOTMwNTI1NUU4NDI3MDBEQTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCAq
LywKIAkJCQlFMThERjMzNjE4QUFGMTREMDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdy
YXBNYWMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTM0MDkzLDYgKzM0MTExLDgg
QEAKIAkJCQk0MTNDOEIzNTI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXJXaXRoVHJh
bnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM2MTFCQ0VFMzIzMDAwMUUyQkMgLyog
UlRDUnRwU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDOEIzMzI1NTJGMjdEMDBFNjUw
NTUgLyogUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4
MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDE4MUM2NDgyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyog
UlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRUI1NERGMUU3REM3NDQw
MEMxNjIzQiAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQzhCMzQyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKaW5kZXggNWFlNzM0ZDkwOTBjMGQwZjc1NDRkMTRmNmNiYmQzMTMxMzRmMTJiOC4uMTRk
NmRmNDcyMTgyMWNlNTkxMmYxNThlYzQxMDAzMjlmMzZiZTAzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMjE5LDYgKzIxOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbikgXAog
ICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBS
ZWNlaXZlcikgXAorICAgIG1hY3JvKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSkgXAogICAgIG1hY3Jv
KFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCiAgICAgbWFj
cm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcAppbmRleCBjYzQxZGE2NWIwZGFjOWM4
YjVkYjFhMGU0MmZlMDIwMGI1MjhlYTM4Li43NTc5ZTQwYWUzN2NhY2U0MjJhMDZlM2ZlYzVlZWU2
NGYwMmYxYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUFFU19DVFJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKQEAgLTMxLDEwMCArMzEsMjMgQEAKIAogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFF
Uy5oIgotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKyNpbmNsdWRlICJD
cnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24g
b3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVy
TGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBmb2xsb3dpbmcg
aGFjayBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTM2MTA1MD4gaXMgZml4ZWQuCi0gICAgLy8gY291
bnRlciA9IG5vbmNlICsgY291bnRlcgotICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50bHkgY2Fu
IG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNlIHRoZSBj
b3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSByZXN0cmljdGVkCi0gICAgLy8gYnkgdGhlIGNv
dW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hvdWxkIHN0
YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNzdWUsCi0g
ICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBvcGVyYXRp
b24gaW50byB0d28gcGFydHMuCi0gICAgc2l6ZV90IG51bWJlck9mQmxvY2tzID0gZGF0YS5zaXpl
KCkgJSBrQ0NCbG9ja1NpemVBRVMxMjggPyBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEy
OCArIDEgOiBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKLQotICAgIC8vIERldGVj
dCBsb29wCi0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgbnVt
YmVyT2ZCbG9ja3MgPiAoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBjb3VudGVyTGVuZ3RoKSkK
LSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICAvLyBD
YWxjdWxhdGUgY2FwYWNpdHkgYmVmb3JlIG92ZXJmbG93Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6Q291bnRlckJsb2NrSGVscGVyIGNvdW50ZXJCbG9ja0hlbHBlcihjb3VudGVyLCBjb3Vu
dGVyTGVuZ3RoKTsKLSAgICBzaXplX3QgY2FwYWNpdHkgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291
bnRUb092ZXJmbG93U2F0dXJhdGluZygpOwotCi0gICAgLy8gRGl2aWRlIGRhdGEgaW50byB0d28g
cGFydHMgaWYgbmVjZXNzYXJ5LgotICAgIHNpemVfdCBoZWFkU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIGlmIChjYXBhY2l0eSA8IG51bWJlck9mQmxvY2tzKQotICAgICAgICBoZWFkU2l6ZSA9IGNh
cGFjaXR5ICoga0NDQmxvY2tTaXplQUVTMTI4OwotCi0gICAgLy8gZmlyc3QgcGFydDogY29tcHV0
ZSB0aGUgZmlyc3Qgbj1jYXBhY2l0eSBibG9ja3Mgb2YgZGF0YSBpZiBjYXBhY2l0eSBpcyBpbnN1
ZmZpY2llbnQuIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQuCi0gICAgQ0NDcnlwdG9yUmVm
IGNyeXB0b3I7Ci0gICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdp
dGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFk
ZGluZywgY291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtD
Q01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIFZlY3Rvcjx1aW50OF90
PiBoZWFkKENDQ3J5cHRvckdldE91dHB1dExlbmd0aChjcnlwdG9yLCBoZWFkU2l6ZSwgdHJ1ZSkp
OwotCi0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRh
dGUoY3J5cHRvciwgZGF0YS5kYXRhKCksIGhlYWRTaXplLCBoZWFkLmRhdGEoKSwgaGVhZC5zaXpl
KCksICZieXRlc1dyaXR0ZW4pOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgdWludDhfdCogcCA9IGhlYWQuZGF0YSgp
ICsgYnl0ZXNXcml0dGVuOwotICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAs
IGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBwICs9IGJ5dGVzV3JpdHRlbjsK
LSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKLQotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gaGVhZC5l
bmQoKSk7Ci0gICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4oKSk7Ci0KLSAgICBDQ0NyeXB0
b3JSZWxlYXNlKGNyeXB0b3IpOwotCi0gICAgaWYgKGNhcGFjaXR5ID49IG51bWJlck9mQmxvY2tz
KQotICAgICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKLQotICAgIC8vIHNlY29uZCBwYXJ0OiBj
b21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCi0g
ICAgLy8gcmVzZXQgY291bnRlcgotICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVy
ID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCk7Ci0gICAg
c3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBr
Q0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVyLmRhdGEoKSwg
a2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNy
eXB0b3IpOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OwotCi0gICAgc2l6ZV90IHRhaWxTaXplID0gZGF0YS5zaXplKCkgLSBoZWFk
U2l6ZTsKLSAgICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgo
Y3J5cHRvciwgdGFpbFNpemUsIHRydWUpKTsKLQotICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0
ZShjcnlwdG9yLCBkYXRhLmRhdGEoKSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCks
IHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIHAgPSB0YWlsLmRhdGEo
KSArIGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBw
LCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7Ci0gICAgcCArPSBieXRlc1dyaXR0ZW47
Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVy
cm9yIH07Ci0KLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwu
ZW5kKCkpOwotICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJlZ2luKCkpOwotCi0gICAgQ0NDcnlw
dG9yUmVsZWFzZShjcnlwdG9yKTsKLQotICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOwotICAg
IHJldHVybiBXVEZNb3ZlKGhlYWQpOwotfQotCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1BZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKICAgICBBU1NFUlQocGFyYW1ldGVy
cy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0
dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9y
KCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dCk7CisgICAgcmV0dXJu
IHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCks
IHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4
dC5zaXplKCkpOwogfQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobUFFU19DVFI6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQ
YXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgICBBU1NFUlQocGFyYW1ldGVycy5jb3VudGVy
VmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJuIHRyYW5z
Zm9ybUFFU19DVFIoa0NDRGVjcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFt
ZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIGNpcGhlclRleHQpOworICAgIEFTU0VSVChwYXJhbWV0
ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0
b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNp
cGhlclRleHQuc2l6ZSgpKTsKIH0KIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwCmluZGV4IDZjYWE1ZjNjYmU1MzlmZTY1NGNi
N2E5ZmVmZWQ5NGI5YTcyZDU3MzEuLmI0MTdiNzFjNWM2YWZlNGUyODk0NDg0NTY0MTFlOWU5NWEz
NWUzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtSEtERk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1IS0RGTWFjLmNwcApAQCAtMjgsMjUgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoV0VCX0NS
WVBUTykKIAotI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNp
bmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZv
cm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleVJhdyYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7Ci0gICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0
QWxnb3JpdGhtOwotICAgIGdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBkaWdlc3RBbGdvcml0aG0pOwotCi0gICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1
cnJlbnRseSwgd2hlbiBrZXkgZGF0YSBpcyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxs
IGJhaWwgb3V0LgotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5kZXI6IFN3
aXRjaCB0byBDQ0Rlcml2ZUtleSBub3cgdGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlzIGRlcHJl
Y2F0ZWQuCi0gICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwg
ZGlnZXN0QWxnb3JpdGhtLCAwLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCAw
LCAwLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuaW5mb1ZlY3Rv
cigpLnNpemUoKSwgMCwgMCwgcGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0
ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwor
ICAgIHJldHVybiBkZXJpdmVIREtGU0hBMjU2Qml0cyhrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5
KCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuc2Fs
dFZlY3RvcigpLnNpemUoKSwgcGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0
ZXJzLmluZm9WZWN0b3IoKS5zaXplKCksIGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzBmZDVmM2NiZjcxMjgxNmQ1MTlmZjg1MTdmZTViZTlkOTVhYTBlNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwCkBA
IC0wLDAgKzEsMTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykgfHwg
RU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BRVNfQ1RSLmgiCisj
aW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09w
ZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90
IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZW1v
dmUgdGhlIGZvbGxvd2luZyBoYWNrIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYxMDUwPiBpcyBm
aXhlZC4KKyAgICAvLyBjb3VudGVyID0gbm9uY2UgKyBjb3VudGVyCisgICAgLy8gQ29tbW9uQ3J5
cHRvIGN1cnJlbnRseSBjYW4gbmVpdGhlciByZXNldCB0aGUgY291bnRlciBub3IgZGV0ZWN0IG92
ZXJmbG93IG9uY2UgdGhlIGNvdW50ZXIgcmVhY2hlcyBpdHMgbWF4IHZhbHVlIHJlc3RyaWN0ZWQK
KyAgICAvLyBieSB0aGUgY291bnRlckxlbmd0aC4gSXQgdGhlbiBpbmNyZW1lbnRzIHRoZSBub25j
ZSB3aGljaCBzaG91bGQgc3RheSBzYW1lIGZvciB0aGUgd2hvbGUgb3BlcmF0aW9uLiBUbyByZW1l
ZHkgdGhpcyBpc3N1ZSwKKyAgICAvLyB3ZSBkZXRlY3QgdGhlIG92ZXJmbG93IGFoZWFkIGFuZCBk
aXZpZGUgdGhlIG9wZXJhdGlvbiBpbnRvIHR3byBwYXJ0cy4KKyAgICBzaXplX3QgbnVtYmVyT2ZC
bG9ja3MgPSBkYXRhU2l6ZSAlIGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGFTaXplIC8ga0NDQmxv
Y2tTaXplQUVTMTI4ICsgMSA6IGRhdGFTaXplIC8ga0NDQmxvY2tTaXplQUVTMTI4OworCisgICAg
Ly8gRGV0ZWN0IGxvb3AKKyAgICBpZiAoY291bnRlckxlbmd0aCA8IHNpemVvZihzaXplX3QpICog
OCAmJiBudW1iZXJPZkJsb2NrcyA+IChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8IGNvdW50ZXJM
ZW5ndGgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKwor
ICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKKyAgICBDcnlwdG9BbGdv
cml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXIgY291bnRlckJsb2NrSGVscGVyKGNvdW50
ZXIsIGNvdW50ZXJMZW5ndGgpOworICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvdW50ZXJCbG9ja0hl
bHBlci5jb3VudFRvT3ZlcmZsb3dTYXR1cmF0aW5nKCk7CisKKyAgICAvLyBEaXZpZGUgZGF0YSBp
bnRvIHR3byBwYXJ0cyBpZiBuZWNlc3NhcnkuCisgICAgc2l6ZV90IGhlYWRTaXplID0gZGF0YVNp
emU7CisgICAgaWYgKGNhcGFjaXR5IDwgbnVtYmVyT2ZCbG9ja3MpCisgICAgICAgIGhlYWRTaXpl
ID0gY2FwYWNpdHkgKiBrQ0NCbG9ja1NpemVBRVMxMjg7CisKKyAgICAvLyBmaXJzdCBwYXJ0OiBj
b21wdXRlIHRoZSBmaXJzdCBuPWNhcGFjaXR5IGJsb2NrcyBvZiBkYXRhIGlmIGNhcGFjaXR5IGlz
IGluc3VmZmljaWVudC4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdC4KKyAgICBDQ0NyeXB0
b3JSZWYgY3J5cHRvcjsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0NDcnlwdG9yQ3Jl
YXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNj
Tm9QYWRkaW5nLCBjb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwg
MCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOworICAgIGlmIChzdGF0dXMpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGhlYWQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGhlYWRTaXplLCB0
cnVlKSk7CisKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRv
clVwZGF0ZShjcnlwdG9yLCBkYXRhLCBoZWFkU2l6ZSwgaGVhZC5kYXRhKCksIGhlYWQuc2l6ZSgp
LCAmYnl0ZXNXcml0dGVuKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHVpbnQ4X3QqIHAgPSBoZWFkLmRhdGEoKSAr
IGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCBo
ZWFkLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7CisgICAgcCArPSBieXRlc1dyaXR0ZW47Cisg
ICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IGhlYWQuZW5k
KCkpOworICAgIGhlYWQuc2hyaW5rKHAgLSBoZWFkLmJlZ2luKCkpOworCisgICAgQ0NDcnlwdG9y
UmVsZWFzZShjcnlwdG9yKTsKKworICAgIGlmIChjYXBhY2l0eSA+PSBudW1iZXJPZkJsb2NrcykK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7CisKKyAgICAvLyBzZWNvbmQgcGFydDogY29t
cHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBoZWFkLgorICAg
IC8vIHJlc2V0IGNvdW50ZXIKKyAgICBWZWN0b3I8dWludDhfdD4gcmVtYWluaW5nQ291bnRlciA9
IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygpOworICAgIHN0
YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0ND
QWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgcmVtYWluaW5nQ291bnRlci5kYXRhKCksIGtl
eS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlw
dG9yKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKKworICAgIHNpemVfdCB0YWlsU2l6ZSA9IGRhdGFTaXplIC0gaGVhZFNpemU7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRhaWwoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0
b3IsIHRhaWxTaXplLCB0cnVlKSk7CisKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUoY3J5
cHRvciwgZGF0YSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCksIHRhaWwuc2l6ZSgp
LCAmYnl0ZXNXcml0dGVuKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHAgPSB0YWlsLmRhdGEoKSArIGJ5dGVzV3Jp
dHRlbjsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCB0YWlsLmVuZCgp
IC0gcCwgJmJ5dGVzV3JpdHRlbik7CisgICAgcCArPSBieXRlc1dyaXR0ZW47CisgICAgaWYgKHN0
YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwuZW5kKCkpOworICAg
IHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJlZ2luKCkpOworCisgICAgQ0NDcnlwdG9yUmVsZWFzZShj
cnlwdG9yKTsKKworICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOworICAgIHJldHVybiBXVEZN
b3ZlKGhlYWQpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZT
SEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3QqIGtleSwgc2l6ZV90IGtleVNpemUsIGNvbnN0IHVpbnQ4
X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6ZSwgY29uc3QgdWludDhfdCogaW5mbywgc2l6ZV90IGlu
Zm9TaXplLCBzaXplX3QgbGVuZ3RoKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVu
Z3RoIC8gOCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGluZm9WZWN0b3I7CisKKyAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQz
OTQ1NT4gQ3VycmVudGx5LCB3aGVuIGtleSBkYXRhIGlzIGVtcHR5LCBDQ0tleURlcml2YXRpb25I
TWFjIHdpbGwgYmFpbCBvdXQuCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4ODk2MDIxPiBSZW1p
bmRlcjogU3dpdGNoIHRvIENDRGVyaXZlS2V5IG5vdyB0aGF0IENDS2V5RGVyaXZhdGlvbkhNYWMg
aXMgZGVwcmVjYXRlZC4KKyAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZBbGdvcml0
aG1IS0RGLCBrQ0NEaWdlc3RTSEEyNTYsIDAsIGtleSwga2V5U2l6ZSwgMCwgMCwgaW5mbywgaW5m
b1NpemUsIDAsIDAsIHNhbHQsIHNhbHRTaXplLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgp
KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9D
UllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxp
dGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWNlM2E5NjA2ZWQ1ZTIwNWEwZGFiOTAyOTgzMDQ3YjQ1MmZjY2Vk
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRp
bGl0aWVzQ29jb2EuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoV0VCX0NSWVBUTykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordHlwZWRlZiB1aW50
MzJfdCBDQ09wZXJhdGlvbjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24sIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOworRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZXJpdmVIREtGU0hBMjU2Qml0cyhjb25zdCB1aW50
OF90KiBrZXksIHNpemVfdCBrZXlTaXplLCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qgc2Fs
dFNpemUsIGNvbnN0IHVpbnQ4X3QqIGluZm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxlbmd0
aCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZ
UFRPKSB8fCBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCAxNjFhMjhmNDEzZjBlZTEyY2EwZmMyM2I1MDdiZDQ0MTY5MjliMTNlLi4wNmFlMjQzODcy
ZjI3MzU5Y2JiZjU2NjM1MzViZDdkMzQwNzkyNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xNTMsNiArMTUzLDcgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAj
aW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5j
bHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5o
IgpAQCAtMTU4NSw2ICsxNTg2LDExIEBAIFJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBJbnRlcm5h
bHM6OmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKQogICAgIHJldHVybiBNb2NrUlRDUnRwVHJh
bnNmb3JtOjpjcmVhdGUoKTsKIH0KIAordWludDY0X3QgSW50ZXJuYWxzOjpzZnJhbWVDb3VudGVy
KGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIHJldHVybiB0
cmFuc2Zvcm0uY291bnRlckZvclRlc3RpbmcoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldEVu
YWJsZVdlYlJUQ0VuY3J5cHRpb24oYm9vbCB2YWx1ZSkKIHsKICNpZiBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjQ4NWUxM2Q2ZDQ5NTYzNzllNjg2NjUw
OGIwMTZlYjE0MjRmZTY2ZS4uNTJkMDUyZGE2OTNmZWJjZTcxYjNkMjJiNzVlMzMzMjlkYTNhOWQx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMjQsNiArMTI0LDEwIEBAIGNs
YXNzIFRleHRUcmFja0N1ZUdlbmVyaWM7CiBjbGFzcyBTZXJ2aWNlV29ya2VyOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0VCX1JUQykKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKFdFQlhSKQogY2xhc3MgV2ViWFJUZXN0OwogI2VuZGlmCkBAIC02MDgs
NiArNjEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sKTsK
ICAgICB2b2lkIHNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCk7CiAgICAgUmVmPE1vY2tSVENS
dHBUcmFuc2Zvcm0+IGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKKyAgICB1aW50NjRfdCBz
ZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgc2V0
RW5hYmxlV2ViUlRDRW5jcnlwdGlvbihib29sKTsKICAgICB2b2lkIHNldFVzZURUTFMxMChib29s
KTsKICAgICB2b2lkIHNldFVzZUdQVVByb2Nlc3NGb3JXZWJSVEMoYm9vbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYjAxNTRiMjk4NTgwYmZhZDMzM2ExMTRhZjM4NGQx
ZGE5MDllMTY4Mi4uMTQwYTZhNTA0ZGI1ZDBlNTcwYTZiYTNlNzQ4MWRlZGNmZWE0NDllNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtODAzLDYgKzgwMyw3IEBAIGVudW0g
VHJlZVR5cGUgewogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRD
VlA5U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1
bmRlZmluZWQgc2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtD
b25kaXRpb25hbD1XRUJfUlRDXSBNb2NrUlRDUnRwVHJhbnNmb3JtIGNyZWF0ZU1vY2tSVENSdHBU
cmFuc2Zvcm0oKTsKKyAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5zaWduZWQgbG9uZyBsb25n
IHNmcmFtZUNvdW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRyYW5zZm9ybSk7CiAKICAgICBb
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0TW9ja0F1ZGlvVHJhY2tDaGFu
bmVsTnVtYmVyKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIHVuc2lnbmVkIHNob3J0IGNvdW50KTsK
ICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0U2hvdWxkSW50ZXJy
dXB0QXVkaW9PblBhZ2VWaXNpYmlsaXR5Q2hhbmdlKGJvb2xlYW4gc2hvdWxkSW50ZXJydXB0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsCmluZGV4
IDA5ZWIwYzNjYTE1YzVmMTk3ZjM2Y2ZiNDc0OWMxMTgwNmU4YWM3NzcuLmRlNjMxODc2MDU5NGI2
OWYyN2EwMWQ2NWUwODg5ODA1ZjMzNzQxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbApAQCAtMjYsNiArMjYsNyBAQAogWwogICAgIENvbmRp
dGlvbmFsPVdFQl9SVEMsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0
ZVRvTmF0aXZlT2JqZWN0LAogICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZh
Y2UgTW9ja1JUQ1J0cFRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNQcm9jZXNzaW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM4NWExYmVhYzFiOGI0NmNmZWI2YzYyYjg0MDc2
ZWU5NzhkMjdhZGQuLjdhZGI1NjFmZDkyMDFjMzEyODYwMWEzNDA5NmVhODBjM2QyMzhmNjAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMC0xMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgV2ViUlRDIFNGcmFtZSB0cmFuc2Zvcm0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIHRoYXQgdmFsaWRh
dGUgU0ZyYW1lIGdlbmVyYXRpb24gYW5kIHBhcnNpbmcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5j
cHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0UmF3S2V5KToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Y2hlY2tWZWN0b3JzQXJlRXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisKIDIwMjAtMTEtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2OTUyNSk6IE1hbnkgbGF5b3V0IHRlc3RzIGNy
YXNoIHdoZW4gcnVuIHVuZGVyIEFTYW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTJjODAx
MGNlZmFjMzVmMDZlOGMzYmNiNDc4M2NkOTM3MTQ5NWY3Mi4uYjVmODJjNzU0NzRiMzIwYjY4Y2Qz
NDlhMzliY2MzOTI3YmViOTI5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNiw2ICsy
MzYsNyBAQAogCQk0MTM1RkI4NTIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBw
b3J0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
YiAqLzsgfTsKIAkJNDE0QUQ2ODYyMjg1RDFDMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEFENjg1MjI4
NUQxQjAwMDc3N0YyRCAvKiBTdG9yYWdlUXVvdGEubW0gKi87IH07CiAJCTQxNjYxQzY2MjM1NUU4
NUUwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTY2MUM2NTIzNTVEOThCMDBE
MzNDMjcgLyogZ2V0VXNlck1lZGlhLXdlYmF1ZGlvLmh0bWwgKi87IH07CisJCTQxODFDNjJEMjU1
QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjJDMjU1QTg5MTEw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLzsgfTsKIAkJNDE4
NDhGNDQyNDg5MTg3OTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1o
b3N0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE4NDhGNDMyNDg5MTgxNTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11
cmwtd2l0aC1ob3N0Lmh0bWwgKi87IH07CiAJCTQxODgyRjAzMjEwMTBDMEQwMDJGRjI4OCAvKiBQ
cm9jZXNzUHJlV2FybWluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxODgyRjAyMjEwMTBBNzAwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5t
bSAqLzsgfTsKIAkJNDQwNzdCQjEyMzE0NEI1MDAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQw
NzdCQjAyMzE0NDlEMjAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tICovOyB9OwpA
QCAtMTk1NSw2ICsxOTU2LDcgQEAKIAkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTQxNEFENjg1MjI4NUQxQjAwMDc3N0YyRCAvKiBTdG9yYWdlUXVvdGEubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTdG9yYWdlUXVvdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNjYxQzY1MjM1NUQ5OEIwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAv
KiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13
aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nl
c3NQcmVXYXJtaW5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UHJvY2Vzc1ByZVdhcm1pbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTcz
QjVDMUFGMjI4NzUwMDZDN0IzNiAvKiBTaGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTM1MTksNiArMzUyMSw3IEBACiAJCQkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5
RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgKi8sCiAJCQkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5
IC8qIFJlZ2lzdHJhYmxlRG9tYWluLmNwcCAqLywKIAkJCQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcw
RTYgLyogUm91bmRlZFJlY3RUZXN0cy5jcHAgKi8sCisJCQkJNDE4MUM2MkMyNTVBODkxMTAwQUVC
MEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovLAogCQkJCUNEQ0ZBN0E5
MUU0NTEyMkYwMEMyNDMzRCAvKiBTYW1wbGVNYXAuY3BwICovLAogCQkJCUNFMDZERjlBMUUxODUx
RjIwMEU1NzBDOSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgKi8sCiAJCQkJNDE5NzNCNUMxQUYyMjg3
NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8sCkBAIC01NDA1LDYgKzU0MDgsNyBAQAog
CQkJCTVDQ0IxMEUzMjEzNDU3RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91
dE5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NkU4MTZGODFFNzlFMjlDMDAzNzVB
REMgLyogUmVzdG9yZVN0YXRlQWZ0ZXJUZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUY0MThCRTE1MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxODFDNjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lclRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExODBDMEZBMUVFNjdERjAwMDQ2
OEY0NyAvKiBSdW5PcGVuUGFuZWwubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQyOTg2RTIwRkVF
NzM3MDA5MkQ2MzYgLyogUnVuU2NyaXB0QWZ0ZXJEb2N1bWVudExvYWQubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1Q0E5ODU1MzIxMTNDRjc4MDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjM3N2IxM2JiZjNmOGU2ODAwZTJhNDE0OGEzN2EzYTE0NjVmZTJhMAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm1lclRlc3RzLmNwcApAQCAtMCwwICsxLDM1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1ZlY3Rvcjx1aW50OF90PiBnZXRSYXdLZXkoKQor
eworICAgIHJldHVybiBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDI0OSwKKyAgICAg
ICAgMTk1LAorICAgICAgICAyMDIsCisgICAgICAgIDE1OSwKKyAgICAgICAgNTYsCisgICAgICAg
IDE5MSwKKyAgICAgICAgMTAzLAorICAgICAgICAyNDcsCisgICAgICAgIDI0NSwKKyAgICAgICAg
MjEzLAorICAgICAgICAyMCwKKyAgICAgICAgNjgsCisgICAgICAgIDY3LAorICAgICAgICAyMCwK
KyAgICAgICAgMTUxLAorICAgICAgICAxODUsCisgICAgICAgIDI0MiwKKyAgICAgICAgNzgsCisg
ICAgICAgIDE3NiwKKyAgICAgICAgMTU4LAorICAgICAgICA5MSwKKyAgICAgICAgMjA1LAorICAg
ICAgICAxMzgsCisgICAgICAgIDU1LAorICAgICAgICAxNzYsCisgICAgICAgIDE0NywKKyAgICAg
ICAgMTk4LAorICAgICAgICAyNDMsCisgICAgICAgIDE0NiwKKyAgICAgICAgMjA0LAorICAgICAg
ICAyNDMsCisgICAgICAgIDIyMAorICAgICk7Cit9CisKK3N0YXRpYyBSZWY8V2ViQ29yZTo6UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXI+IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoYm9vbCBpc1NlbmRp
bmcgPSB0cnVlKQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBXZWJDb3JlOjpSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCk7CisgICAgdHJhbnNmb3JtZXItPnNldElzU2VuZGluZyhp
c1NlbmRpbmcpOworICAgIHRyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhmYWxzZSk7
CisKKyAgICBhdXRvIGtleUlkID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKDE5OCwgMzEsIDI1MSwg
MTk3LCA0OCwgMTM5LCA5MSwgNTEpOworICAgIHVpbnQ2NF90IGtleUlkVmFsdWUgPSAwOworICAg
IGZvciAoYXV0byB2YWx1ZSA6IGtleUlkKQorICAgICAgICBrZXlJZFZhbHVlID0gdmFsdWUgKyAo
a2V5SWRWYWx1ZSA8PCA4KTsKKworICAgIGF1dG8ga2V5UmVzdWx0ID0gdHJhbnNmb3JtZXItPnNl
dEVuY3J5cHRpb25LZXkoZ2V0UmF3S2V5KCksIGtleUlkVmFsdWUpOworICAgIEVYUEVDVF9GQUxT
RShrZXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgcmV0dXJuIHRyYW5zZm9ybWVyOwor
fQorCitzdGF0aWMgdm9pZCBjaGVja1ZlY3RvcnNBcmVFcXVhbChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGNvbXB1dGVkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cGVjdGVkKQoreworICAgIEVY
UEVDVF9FUShjb21wdXRlZC5zaXplKCksIGV4cGVjdGVkLnNpemUoKSk7CisgICAgZm9yIChzaXpl
X3QgY3B0ciA9IDA7IGNwdHIgPCBzdGQ6Om1pbihjb21wdXRlZC5zaXplKCksIGV4cGVjdGVkLnNp
emUoKSk7ICsrY3B0cikKKyAgICAgICAgRVhQRUNUX0VRKGNvbXB1dGVkW2NwdHJdLCBleHBlY3Rl
ZFtjcHRyXSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIEF1dGhlbnRpY2F0
aW9uS2V5KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVy
KCk7CisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwodHJhbnNmb3JtZXItPmF1dGhlbnRpY2F0aW9u
S2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgOTIsCisgICAgICAgIDIyOCwK
KyAgICAgICAgMTM5LAorICAgICAgICAxOTUsCisgICAgICAgIDk4LAorICAgICAgICAxNiwKKyAg
ICAgICAgNCwKKyAgICAgICAgMTkzLAorICAgICAgICAyMjEsCisgICAgICAgIDI0OCwKKyAgICAg
ICAgMjMyLAorICAgICAgICAxNzgsCisgICAgICAgIDEzNSwKKyAgICAgICAgMjIsCisgICAgICAg
IDE0MSwKKyAgICAgICAgMTUwLAorICAgICAgICAxNjUsCisgICAgICAgIDI0MiwKKyAgICAgICAg
NzMsCisgICAgICAgIDcyLAorICAgICAgICAxMCwKKyAgICAgICAgMTk3LAorICAgICAgICAxNSwK
KyAgICAgICAgODcsCisgICAgICAgIDE4MSwKKyAgICAgICAgMzQsCisgICAgICAgIDEyMCwKKyAg
ICAgICAgNzEsCisgICAgICAgIDQyLAorICAgICAgICAxNzQsCisgICAgICAgIDEzMSwKKyAgICAg
ICAgNzIKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlw
dGlvbktleSkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1l
cigpOworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHRyYW5zZm9ybWVyLT5lbmNyeXB0aW9uS2V5
KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjA3LAorICAgICAgICAyNTEsCisg
ICAgICAgIDUyLAorICAgICAgICAyMSwKKyAgICAgICAgMTAxLAorICAgICAgICA1MCwKKyAgICAg
ICAgMjMyLAorICAgICAgICA0OCwKKyAgICAgICAgMjExLAorICAgICAgICAxMTUsCisgICAgICAg
IDExLAorICAgICAgICAxNTUsCisgICAgICAgIDEwMSwKKyAgICAgICAgMTE2LAorICAgICAgICAx
NTMsCisgICAgICAgIDcxCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIsIFNhbHRLZXkpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNm
b3JtZXIoKTsKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbCh0cmFuc2Zvcm1lci0+c2FsdEtleSgp
LCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDIyOSwKKyAgICAgICAgMTksCisgICAg
ICAgIDQyLAorICAgICAgICA5MywKKyAgICAgICAgMTY0LAorICAgICAgICAxMDMsCisgICAgICAg
IDEyMCwKKyAgICAgICAgNTMsCisgICAgICAgIDI1LAorICAgICAgICAyNiwKKyAgICAgICAgMjM3
LAorICAgICAgICAyMDQsCisgICAgICAgIDc5LAorICAgICAgICAxMzgsCisgICAgICAgIDEzOCwK
KyAgICAgICAgMjMxCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIs
IEVuY3J5cHREZWNyeXB0KQoreworICAgIGF1dG8gZW5jcnlwdG9yID0gY3JlYXRlVmlkZW9UcmFu
c2Zvcm1lcigpOworICAgIGF1dG8gZGVjcnlwdG9yID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihm
YWxzZSk7CisgICAgYXV0byBmcmFtZSA9IFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgxMzUsIDg5LCA1
MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjApOworCisgICAgYXV0byBl
bmNyeXB0ZWRSZXN1bHQgPSBlbmNyeXB0b3ItPnRyYW5zZm9ybShmcmFtZS5kYXRhKCksIGZyYW1l
LnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGVuY3J5cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24o
KSk7CisKKyAgICBhdXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRlZFJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5cHRvci0+dHJhbnNmb3Jt
KGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRShk
ZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hlY2tWZWN0b3JzQXJlRXF1
YWwoZGVjcnlwdGVkUmVzdWx0LnJldHVyblZhbHVlKCksIGZyYW1lKTsKK30KKworVEVTVChSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlwdERlY3J5cHRLZXlJRDApCit7CisgICAgYXV0byBl
bmNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAgZW5jcnlwdG9yLT5zZXRF
bmNyeXB0aW9uS2V5KGdldFJhd0tleSgpLCAwKTsKKworICAgIGF1dG8gZGVjcnlwdG9yID0gY3Jl
YXRlVmlkZW9UcmFuc2Zvcm1lcihmYWxzZSk7CisgICAgZGVjcnlwdG9yLT5zZXRFbmNyeXB0aW9u
S2V5KGdldFJhd0tleSgpLCAwKTsKKworICAgIGF1dG8gZnJhbWUgPSBWZWN0b3I8dWludDhfdD46
OmZyb20oMTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjksIDE1NywgMTExLCAxOTAsIDEzNCwgMjIw
KTsKKworICAgIGF1dG8gZW5jcnlwdGVkUmVzdWx0ID0gZW5jcnlwdG9yLT50cmFuc2Zvcm0oZnJh
bWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRShlbmNyeXB0ZWRSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgYXV0byBlbmNyeXB0ZWQgPSBlbmNyeXB0ZWRSZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBkZWNyeXB0ZWRSZXN1bHQgPSBkZWNy
eXB0b3ItPnRyYW5zZm9ybShlbmNyeXB0ZWQuZGF0YSgpLCBlbmNyeXB0ZWQuc2l6ZSgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoZGVjcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGNo
ZWNrVmVjdG9yc0FyZUVxdWFsKGRlY3J5cHRlZFJlc3VsdC5yZXR1cm5WYWx1ZSgpLCBmcmFtZSk7
Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5zZm9ybUNvdW50ZXIwKQor
eworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisKKyAg
ICB1aW50OF90IGZyYW1lMVtdID0geyAxMzUsIDg5LCA1MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAx
MTEsIDE5MCwgMTM0LCAyMjAgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFu
c2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMTUsCisgICAg
ICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAgICAgMTk3LAorICAgICAg
ICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAgNTEsCisgICAgICAgIDAs
CisgICAgICAgIDI1NCwKKyAgICAgICAgMTcxLAorICAgICAgICAxNjgsCisgICAgICAgIDEyNywK
KyAgICAgICAgMTU4LAorICAgICAgICA5NywKKyAgICAgICAgNzAsCisgICAgICAgIDQsCisgICAg
ICAgIDIzMywKKyAgICAgICAgMTU2LAorICAgICAgICAxMzQsCisgICAgICAgIDIyMCwKKyAgICAg
ICAgNDQsCisgICAgICAgIDUwLAorICAgICAgICA5MCwKKyAgICAgICAgMywKKyAgICAgICAgNjgs
CisgICAgICAgIDIwMCwKKyAgICAgICAgMTI3LAorICAgICAgICAyMjMsCisgICAgICAgIDYKKyAg
ICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRl
cjI1NikKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigp
OworCisgICAgdWludDhfdCBmcmFtZTFbXSA9IHsgOCwgMTY0LCAxODksIDE4LCA2MSwgMTE3LCAx
MzIsIDQzLCAxMTcsIDE2OSwgNDIgfTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IHJlc3VsdCA9IFZlY3Rvcjx1aW50OF90PigpOworICAgIHJlc3VsdCA9IHRyYW5z
Zm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgZm9yIChzaXpl
X3QgY3B0ciA9IDA7IGNwdHIgPCAyNTY7ICsrY3B0cikgeworICAgICAgICByZXN1bHQgPSB0cmFu
c2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICB9CisgICAgY2hlY2tWZWN0b3Jz
QXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0b3I8dWludDhfdD46OmZy
b20oCisgICAgICAgIDMxLAorICAgICAgICAxOTgsCisgICAgICAgIDMxLAorICAgICAgICAyNTEs
CisgICAgICAgIDE5NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwKKyAgICAgICAgOTEsCisg
ICAgICAgIDUxLAorICAgICAgICAxLAorICAgICAgICAwLAorICAgICAgICAxMjQsCisgICAgICAg
IDIxOCwKKyAgICAgICAgNjEsCisgICAgICAgIDIzLAorICAgICAgICA3OCwKKyAgICAgICAgMTUs
CisgICAgICAgIDE5MCwKKyAgICAgICAgMzUsCisgICAgICAgIDI1NSwKKyAgICAgICAgMjUzLAor
ICAgICAgICAxMjAsCisgICAgICAgIDY0LAorICAgICAgICAyOCwKKyAgICAgICAgMTgzLAorICAg
ICAgICAxNzIsCisgICAgICAgIDE1NCwKKyAgICAgICAgMTQ0LAorICAgICAgICAxNiwKKyAgICAg
ICAgMjI5LAorICAgICAgICA4NywKKyAgICAgICAgNTIKKyAgICApKTsKK30KKworVEVTVChSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjY1NTM2KQoreworICAgIGF1dG8g
dHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAgdHJhbnNmb3JtZXIt
PnNldENvdW50ZXIoNjU1MzYpOworCisgICAgdWludDhfdCBmcmFtZTFbXSA9IHsgMCwgMzMsIDI0
NCwgMjQsIDIzNiwgMTU2LCAxMjcsIDgsIDQ4LCA4OCwgMjIwIH07CisgICAgYXV0byByZXN1bHQg
PSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkpOworICAgIEVY
UEVDVF9GQUxTRShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hlY2tWZWN0b3JzQXJl
RXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20o
CisgICAgICAgIDQ3LAorICAgICAgICAxOTgsCisgICAgICAgIDMxLAorICAgICAgICAyNTEsCisg
ICAgICAgIDE5NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwKKyAgICAgICAgOTEsCisgICAg
ICAgIDUxLAorICAgICAgICAxLAorICAgICAgICAwLAorICAgICAgICAwLAorICAgICAgICA5OCwK
KyAgICAgICAgMjEyLAorICAgICAgICAxMzcsCisgICAgICAgIDI0NCwKKyAgICAgICAgMjA5LAor
ICAgICAgICAxNiwKKyAgICAgICAgODksCisgICAgICAgIDIzNCwKKyAgICAgICAgMjEsCisgICAg
ICAgIDE3MSwKKyAgICAgICAgMTUsCisgICAgICAgIDEwNywKKyAgICAgICAgNTAsCisgICAgICAg
IDE0NSwKKyAgICAgICAgNzMsCisgICAgICAgIDEwNywKKyAgICAgICAgMTY1LAorICAgICAgICA0
NSwKKyAgICAgICAgMTkwLAorICAgICAgICAyNSwKKyAgICAgICAgODIKKyAgICApKTsKK30KKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGIzM2ZmZWUzMzc0NDc1ODll
M2VkMWVhMGIyYjVkYWU3YzE0NjYyNy4uOWEzNjI1YmYyYWQ3MWZjNzcyZTNlOWVmYmZlNzFlMmE3
ODZkMmU5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTExLTEzICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0ZyYW1lIHRyYW5z
Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2VicnRj
L2F1ZGlvLXNmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMC0xMS0xMiAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJS
VEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFt
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NzA2YjRjOTI1YWUyYTkyMzE3NjQ5ZTI3ODcxNWFmNmM5NWJiZTg4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBBdWRpbyBleGNoYW5nZSB3aXRoIFNG
cmFtZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2Yjc1
MGMwZGY1NjdkYmU0OWNhZWMxMmEwYTRmYmYyOWNlZDJjNgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2
aWRlbyBpZD0iYXVkaW8iIGF1dG9wbGF5IHBsYXlzSW5saW5lPjwvdmlkZW8+CisgICAgICAgIDxz
Y3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Cisg
ICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8uc3Vi
dGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwgNzIs
IDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhLREYi
LCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKyAgICBjb25zdCBzdHJlYW0g
PSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0
ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlbmRlciA9
IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
LCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybTsKKyAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtl
eSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgICAgICB9
LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5v
bnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdHJhbnNmb3Jt
ID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm0u
c2V0RW5jcnlwdGlvbktleShrZXkpOworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tF
dmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSB0cmFu
c2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGF1ZGlvLnNyY09i
amVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCBhdWRpby5wbGF5KCk7CisKKyAgICBpZiAod2luZG93
LmludGVybmFscykgeworICAgICAgICBjb25zdCBzZW5kZXJDb3VudGVyID0gaW50ZXJuYWxzLnNm
cmFtZUNvdW50ZXIoc2VuZGVyLnRyYW5zZm9ybSk7CisgICAgICAgIGNvbnN0IHJlY2VpdmVyQ291
bnRlciA9IGludGVybmFscy5zZnJhbWVDb3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSk7CisKKyAg
ICAgICAgbGV0IGNvdW50ZXIgPSAwOworICAgICAgICB3aGlsZSAocmVjZWl2ZXJDb3VudGVyID09
PSBpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zvcm0pICYmICsrY291bnRl
ciA8IDEwMCkKKyAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGlt
ZW91dChyZXNvbHZlLCA1MCkpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnRlcm5hbHMu
c2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zvcm0pLCByZWNlaXZlckNvdW50ZXIsICJyZWNl
aXZlciIpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnRlcm5hbHMuc2ZyYW1lQ291bnRl
cihzZW5kZXIudHJhbnNmb3JtKSwgc2VuZGVyQ291bnRlciwgInNlbmRlciIpOworICAgIH0KK30s
ICJBdWRpbyBleGNoYW5nZSB3aXRoIFNGcmFtZSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414038</attachid>
            <date>2020-11-13 06:23:37 -0800</date>
            <delta_ts>2020-11-13 11:43:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218752-20201113152334.patch</filename>
            <type>text/plain</type>
            <size>80541</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uYjc1M2M2N2ExY2UwZTg5NjVkZjJhODQ1ZTkxOWY2
NWE1Y2RlNzA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRoYXQgaW1wbGVtZW50cyB0
aGUgU0ZyYW1lIGZvcm1hdC4KKyAgICAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGlzIGEgUlRD
UnRwVHJhbnNmb3JtIHRoYXQgY2FuIGJlIHNldCB0byBSVENSdHAgc2VuZGVyIGFuZCByZWNlaXZl
ciBvYmplY3RzLgorICAgICAgICBBUEkgc3VwcG9ydHMgc2V0dGluZyBlbmNyeXB0aW9uIGtleS4K
KyAgICAgICAgTWlub3IgcmVmYWN0b3JpbmcgdG8gcmV1c2UgV2ViQ3J5cHRvIHJvdXRpbmVzIGZv
ciBlbmNyeXB0aW9uL2RlY3J5cHRpb24uCisKKyAgICAgICAgVGVzdDogd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OndyaXRlVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6Omxl
bmd0aE9mVUludDY0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaXJzdEhlYWRlckJ5dGUp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUlWKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
U0ZyYW1lSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRp
b25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1
dGVFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpkZWNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZW5jcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OmNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzU2VuZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6c2V0SXNQcm9jZXNzaW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVyaXZlSERLRlNIQTI1NkJpdHMp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZVNhbHRLZXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVBdXRoZW50aWNhdGlvbktleSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5
cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRl
Y3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpl
bmNyeXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUpOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6cGxhdGZvcm1FbmNy
eXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3Jt
RGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKTogRGVsZXRlZC4K
KyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1BRVNfQ1RSKToKKyAgICAgICAgKFdlYkNvcmU6OmRlcml2
ZUhES0ZTSEEyNTZCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0Nv
Y29hLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMu
aDoKKwogMjAyMC0xMS0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGluZnJhc3RydWN0dXJlIGZvciBXZWJSVEMgdHJhbnNmb3JtcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBjMjk5ZDgzMGNiNjFlOTQ0NjlkOGU2MmI3MmJkODU3ZTMxNDhjYmIzLi45
NGQwNjJiZjk5M2QxYjRjN2M0NDQyNGZhNGU5MTY1N2Y0MDA3ZWFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtNDAyLDYgKzQwMiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitU
cmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA2
NjliNjg2MWI2YWZhMWQwYWMwOTdiMWJkMzEwNjQ0ODNlZWM3NTE5Li4zOTY1ZTZjZDA1ZDQyZjM2
NTBiMjU3ZTM5Nzc0OTU0ZjIwNWI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTIzNiw2ICsyMzYsNyBAQCAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKICQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKaW5kZXggZGI2NzEwMDg4ZWYyNDU0NDgzMDI1ZTAxZTRhYTdjZTVkZmVjMzA0Yy4uMjZkM2Mx
NGEyYTY4Yjg5MTY2OWViMGQ1NjAyN2NlNGY1Y2U3M2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE3MDUsNiArMTcwNSw4IEBA
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFJlY2VpdmVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlhZTQwYzE4Nzk2
ODkzODE3Yjg0MTY1MjdjMjQwYWY3MjNlOGYxMTYuLmE1ZmI0NWI4MGZiMDFmZDk5MGI0NWY2NmM3
NWIyZGFjNTc5Zjc3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMjYzLDYg
KzI2Myw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2Uu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjMwZWZkZTIyMTkzZDAwMjQyMTM0MWJhZGY1Mzc4OTE1YjY4NDEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitSVENSdHBTRnJhbWVUcmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRy
YW5zZm9ybSgpCisgICAgOiBtX3RyYW5zZm9ybWVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpj
cmVhdGUoKSkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp+UlRDUnRwU0ZyYW1lVHJh
bnNmb3JtKCkKK3sKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVuY3J5cHRp
b25LZXkoQ3J5cHRvS2V5JiBrZXksIE9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgRE9NUHJvbWlz
ZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvIGFsZ29yaXRobSA9IGtleS5h
bGdvcml0aG0oKTsKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8Q3J5cHRvS2V5QWxn
b3JpdGhtPihhbGdvcml0aG0pKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgIkludmFsaWQga2V5Il9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFdURjo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9
ICJIS0RGIikgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8m
IHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNlLnNldHRs
ZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5SWQpKTsK
K30KKwordWludDY0X3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtZXItPmNvdW50ZXIoKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAgbV90cmFuc2Zvcm1lci0+
c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5zZm9ybWVyLT5z
ZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1h
YmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0g
bWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBm
cmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBhIGZyYW1lIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJl
dHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisKKyAg
ICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZSkpOwor
ICAgIH0pOworfQorCisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAg
aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsKK30KKwordm9p
ZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVy
KGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
Ojp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYx
NGJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENy
eXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CisgICAgflJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSgpOworCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9w
dGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9p
ZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmlu
YWw7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBm
aW5hbDsKKworICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKKyAgICB2
b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7
CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4
N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2lu
ZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CisgICAgY29uc3RydWN0b3IoKTsKKwor
ICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9w
dGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBtaXNzaW5nIG1ldGhvZHMuCisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHJhdGNo
ZXRFbmNyeXB0aW9uS2V5KCk7CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHNldFNpZ25pbmdL
ZXkoQ3J5cHRvS2V5IGtleSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNDYwMDU4NGQ2OWVlYjlhYWZkZTE4MWU0ZGFkZmRmNjk4ZThmOTE0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5jcHAKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1aW50OF90KiBk
YXRhLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMZW5ndGg7ICsraSkKKyAgICAgICAgKmRhdGErKyA9ICh2
YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0gMSAtIGkpICogOCkpICYgMHhmZjsKK30KKworc3RhdGlj
IGlubGluZSB1aW50OF90IGxlbmd0aE9mVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIHVp
bnQ4X3QgbGVuZ3RoID0gMDsKKyAgICBkbyB7CisgICAgICAgICsrbGVuZ3RoOworICAgICAgICB2
YWx1ZSA9IHZhbHVlID4+IDg7CisgICAgfSB3aGlsZSAodmFsdWUpOworICAgIHJldHVybiBsZW5n
dGg7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDhfdCBjb21wdXRlRmlyc3RIZWFkZXJCeXRlKHVp
bnQ2NF90IGtleUlkLCB1aW50NjRfdCBjb3VudGVyKQoreworICAgIHVpbnQ4X3QgdmFsdWUgPSAw
OworICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChjb3VudGVyKSAtIDEpIDw8IDQ7CisgICAg
aWYgKGtleUlkIDwgOCkKKyAgICAgICAgdmFsdWUgfD0ga2V5SWQ7CisgICAgZWxzZSB7CisgICAg
ICAgIHZhbHVlIHw9IChsZW5ndGhPZlVJbnQ2NChrZXlJZCkgLSAxKTsKKyAgICAgICAgdmFsdWUg
fD0gMSA8PCAzOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVJVih1aW50NjRfdCBjb3VudGVyLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIHNhbHRLZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGl2KDE2KTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgODsgKytpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSAo
Y291bnRlciA+PiAoKDcgLSBpKSAqIDgpKSAmIDB4ZmY7CisgICAgICAgIGl2W2ldID0gdmFsdWUg
XiBzYWx0S2V5W2ldOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSA4OyBpIDwgMTY7ICsr
aSkKKyAgICAgICAgaXZbaV0gPSBzYWx0S2V5W2ldOworICAgIHJldHVybiBpdjsKK30KKworc3Ry
dWN0IFNGcmFtZUhlYWRlckluZm8geworICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBr
ZXlJZDsKKyAgICB1aW50NjRfdCBjb3VudGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXV0byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qg
a2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5
dGUgPSAqZGF0YSsrOworCisgICAgLy8gU2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoZmlyc3RCeXRl
ICYgMHg4MCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHNpemVfdCBjb3VudGVyTGVuZ3Ro
ID0gKChmaXJzdEJ5dGUgPj4gNCkgJiAweDA3KSArIDE7CisKKyAgICBpZiAoc2l6ZSA8IGNvdW50
ZXJMZW5ndGggKyAxKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKGZpcnN0Qnl0ZSAm
IDB4MDgpIHsKKyAgICAgICAgc2l6ZV90IGtleUxlbmd0aCA9IChmaXJzdEJ5dGUgJiAweDA3KSAr
IDE7CisgICAgICAgIGlmIChzaXplIDwgY291bnRlckxlbmd0aCArIGtleUxlbmd0aCArIDEpCisg
ICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIHdoaWxlIChrZXlMZW5ndGgtLSkKKyAg
ICAgICAgICAgIGtleUlkID0gKGtleUlkIDw8IDgpIHwgKmRhdGErKzsKKyAgICAgICAgd2hpbGUg
KGNvdW50ZXJMZW5ndGgtLSkKKyAgICAgICAgICAgIGNvdW50ZXIgPSAoY291bnRlciA8PCA4KSB8
ICpkYXRhKys7CisgICAgfSBlbHNlIHsKKyAgICAgICAga2V5SWQgPSBmaXJzdEJ5dGUgJiAweDA3
OworICAgICAgICB3aGlsZSAoY291bnRlckxlbmd0aC0tKQorICAgICAgICAgICAgY291bnRlciA9
IChjb3VudGVyIDw8IDgpIHwgKmRhdGErKzsKKyAgICB9CisgICAgdWludDhfdCBoZWFkZXJTaXpl
ID0gZGF0YSAtIHN0YXJ0OworICAgIHJldHVybiBTRnJhbWVIZWFkZXJJbmZvIHsgaGVhZGVyU2l6
ZSwga2V5SWQsIGNvdW50ZXIgfTsKK30KKworUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpKTsKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpCit7Cit9CisKK0V4Y2VwdGlvbk9y
PHZvaWQ+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1aW50NjRfdD4ga2V5SWQpCit7CisgICAg
YXV0byBzYWx0S2V5UmVzdWx0ID0gY29tcHV0ZVNhbHRLZXkocmF3S2V5KTsKKyAgICBpZiAoc2Fs
dEtleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNhbHRLZXlSZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBhdXRoZW50aWNhdGlvbktleVJlc3VsdCA9
IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShyYXdLZXkpOworICAgIGlmIChhdXRoZW50aWNhdGlv
bktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9u
S2V5UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gZW5jcnlwdGlvbktleVJl
c3VsdCA9IGNvbXB1dGVFbmNyeXB0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGVuY3J5cHRpb25L
ZXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBlbmNyeXB0aW9uS2V5UmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9r
ZXlMb2NrKTsKKworICAgIG1fc2FsdEtleSA9IHNhbHRLZXlSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgbV9hdXRoZW50aWNhdGlvbktleSA9IGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIG1fZW5jcnlwdGlvbktleSA9IGVuY3J5cHRpb25L
ZXlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBpZiAoa2V5SWQpCisgICAgICAg
IG1fa2V5SWQgPSAqa2V5SWQ7CisKKyAgICBtX2hhc0tleSA9IHRydWU7CisgICAgcmV0dXJuIHsg
fTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1l
U2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGhlYWRlciA9IHBhcnNlU0Zy
YW1lSGVhZGVyKGZyYW1lRGF0YSwgZnJhbWVTaXplKTsKKworICAgIGlmICghaGVhZGVyKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIGlmICho
ZWFkZXItPmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1fY291bnRlcikKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgbV9jb3VudGVyID0gaGVhZGVy
LT5jb3VudGVyOworCisgICAgaWYgKGhlYWRlci0+a2V5SWQgIT0gbV9rZXlJZCkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlYXJjaCBmb3Iga2V5cy4KKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgfQorCisgICAgLy8gQ29tcHV0ZSBz
aWduYXR1cmUKKyAgICBhdXRvKiB0cmFuc21pdHRlZFNpZ25hdHVyZSA9IGZyYW1lRGF0YSArIGZy
YW1lU2l6ZSAtIG1fYXV0aGVudGljYXRpb25TaXplOworICAgIGF1dG8gc2lnbmF0dXJlID0gY29t
cHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoZnJhbWVEYXRhLCBmcmFtZVNpemUgIC0gbV9hdXRo
ZW50aWNhdGlvblNpemUsIG1fYXV0aGVudGljYXRpb25LZXkpOworICAgIGZvciAoc2l6ZV90IGNw
dHIgPSAwOyBjcHRyIDwgbV9hdXRoZW50aWNhdGlvblNpemU7ICsrY3B0cikgeworICAgICAgICBp
ZiAoc2lnbmF0dXJlW2NwdHJdICE9IHRyYW5zbWl0dGVkU2lnbmF0dXJlW2NwdHJdKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSByYXRjaGV0aW5nLgorICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBEZWNyeXB0IGRhdGEKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1fY291bnRl
ciwgbV9zYWx0S2V5KTsKKyAgICBhdXRvIGRhdGFTaXplID0gZnJhbWVTaXplIC0gaGVhZGVyLT5z
aXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0RGF0
YShmcmFtZURhdGEgKyBoZWFkZXItPnNpemUsIGRhdGFTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5
KTsKKworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90
IGZyYW1lU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgTWF4SGVhZGVyU2l6ZSA9IDE3OworCisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2tleUxvY2spOworCisgICAgYXV0byBpdiA9IGNvbXB1dGVJVihtX2Nv
dW50ZXIsIG1fc2FsdEtleSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdHJhbnNmb3JtZWREYXRh
OworICAgIHRyYW5zZm9ybWVkRGF0YS5yZXNpemUoZnJhbWVTaXplICsgTWF4SGVhZGVyU2l6ZSAr
IG1fYXV0aGVudGljYXRpb25TaXplKTsKKworICAgIC8vIEZpbGwgaGVhZGVyLgorICAgIHNpemVf
dCBoZWFkZXJTaXplID0gMTsKKyAgICB0cmFuc2Zvcm1lZERhdGFbMF0gPSBjb21wdXRlRmlyc3RI
ZWFkZXJCeXRlKG1fa2V5SWQsIG1fY291bnRlcik7CisgICAgaWYgKG1fa2V5SWQgPj0gOCkgewor
ICAgICAgICBhdXRvIGtleUlkTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9rZXlJZCk7CisgICAg
ICAgIHdyaXRlVUludDY0KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBtX2tl
eUlkLCBrZXlJZExlbmd0aCk7CisgICAgICAgIGhlYWRlclNpemUgKz0ga2V5SWRMZW5ndGg7Cisg
ICAgfQorICAgIGF1dG8gY291bnRlckxlbmd0aCA9IGxlbmd0aE9mVUludDY0KG1fY291bnRlcik7
CisgICAgd3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1f
Y291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgaGVhZGVyU2l6ZSArPSBjb3VudGVyTGVuZ3Ro
OworCisgICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBoZWFkZXJTaXplICsg
bV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBlbmNyeXB0ZWQgZGF0YQorICAg
IGF1dG8gZW5jcnlwdGVkRGF0YSA9IGVuY3J5cHREYXRhKGZyYW1lRGF0YSwgZnJhbWVTaXplLCBp
diwgbV9lbmNyeXB0aW9uS2V5KTsKKyAgICBBU1NFUlQoIWVuY3J5cHRlZERhdGEuaGFzRXhjZXB0
aW9uKCkpOworICAgIGlmIChlbmNyeXB0ZWREYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZW5jcnlwdGVkRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBzdGQ6Om1lbWNw
eSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwgZW5jcnlwdGVkRGF0YS5yZXR1
cm5WYWx1ZSgpLmRhdGEoKSwgZnJhbWVTaXplKTsKKworICAgIC8vIEZpbGwgc2lnbmF0dXJlCisg
ICAgYXV0byBzaWduYXR1cmUgPSBjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZSh0cmFuc2Zv
cm1lZERhdGEuZGF0YSgpLCBmcmFtZVNpemUgKyBoZWFkZXJTaXplLCBtX2F1dGhlbnRpY2F0aW9u
S2V5KTsKKyAgICBzdGQ6Om1lbWNweSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgZnJhbWVTaXpl
ICsgaGVhZGVyU2l6ZSwgc2lnbmF0dXJlLmRhdGEoKSwgbV9hdXRoZW50aWNhdGlvblNpemUpOwor
CisgICAgKyttX2NvdW50ZXI7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhOworfQorCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFu
c2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2hh
c0tleSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICByZXR1cm4gbV9pc1NlbmRpbmcgPyBlbmNyeXB0RnJhbWUoZGF0YSwgc2l6ZSkgOiBkZWNy
eXB0RnJhbWUoZGF0YSwgc2l6ZSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlU2Fs
dEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdERh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZW5jcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShjb25zdCB1
aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiB7
IH07Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNDU4MGVlODY5NTA2NjZmODgxNjliOTk4OTQzYzMxNjJkNTgxZGM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm1lci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
KyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyeXB0b0tleTsKKworY2xhc3Mg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIoKTsKKworICAgIHZvaWQgc2V0SXNTZW5kaW5nKGJvb2wpOworICAgIHZvaWQgc2V0SXNQcm9j
ZXNzaW5nQXVkaW8oYm9vbCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25h
bDx1aW50NjRfdD4pOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gdHJhbnNmb3JtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworCisgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVu
dGljYXRpb25LZXk7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGVuY3J5cHRpb25LZXko
KSBjb25zdCB7IHJldHVybiBtX2VuY3J5cHRpb25LZXk7IH0KKyAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHNhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NhbHRLZXk7IH0KKworICAgIHVpbnQ2
NF90IGNvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXI7IH0KKyAgICB2b2lkIHNldENv
dW50ZXIodWludDY0X3QgY291bnRlcikgeyBtX2NvdW50ZXIgPSBjb3VudGVyOyB9CisKK3ByaXZh
dGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKTsKKworICAg
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZW5jcnlwdEZyYW1l
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworCisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0
b3I8dWludDhfdD4mKTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVF
bmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworCisgICAgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7CisgICAg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwg
c2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJl
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKwor
ICAgIExvY2sgbV9rZXlMb2NrOworICAgIGJvb2wgbV9oYXNLZXkgeyBmYWxzZSB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1dGhlbnRpY2F0aW9uS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBt
X2VuY3J5cHRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc2FsdEtleTsKKworICAgIGJv
b2wgbV9pc1NlbmRpbmcgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fYXV0aGVudGljYXRpb25T
aXplIHsgMTAgfTsKKyAgICB1aW50NjRfdCBtX2tleUlkIHsgMCB9OworICAgIHVpbnQ2NF90IG1f
Y291bnRlciB7IDAgfTsKK307CisKK2lubGluZSB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpzZXRJc1NlbmRpbmcoYm9vbCBpc1NlbmRpbmcpCit7CisgICAgbV9pc1NlbmRpbmcgPSBpc1Nl
bmRpbmc7Cit9CisKK2lubGluZSB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRJc1By
b2Nlc3NpbmdBdWRpbyhib29sIGlzUHJvY2Vzc2luZ0F1ZGlvKQoreworICAgIG1fYXV0aGVudGlj
YXRpb25TaXplID0gaXNQcm9jZXNzaW5nQXVkaW8gPyA0IDogMTA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzZDQyNDgwMmUxOTNjYWQ3MGQyMWJj
MjEzNzlmODUwZmIzNTc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIgor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5o
IgorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sK
KyAgICB1aW50OF90IHVzYWdlW10gPSAiU0ZyYW1lU2FsdEtleSI7CisgICAgcmV0dXJuIGRlcml2
ZUhES0ZTSEEyNTZCaXRzKHJhd0tleS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJh
d0tleS5zaXplKCkgLSAxNiwgdXNhZ2UsIHNpemVvZih1c2FnZSkgLSAxLCAxMjgpOworfQorCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21w
dXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCit7Cisg
ICAgdWludDhfdCB1c2FnZVtdID0gIlNGcmFtZUF1dGhlbnRpY2F0aW9uS2V5IjsKKyAgICByZXR1
cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkg
KyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDI1Nik7
Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmNvbXB1dGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQor
eworICAgIHVpbnQ4X3QgdXNhZ2VbXSA9ICJTRnJhbWVFbmNyeXB0aW9uS2V5IjsKKyAgICByZXR1
cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkg
KyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDEyOCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBpdiwgaXYuc2l6ZSgpLCBrZXksIGRh
dGEsIHNpemUpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkp
Cit7CisgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgaXYsIGl2LnNpemUo
KSwga2V5LCBkYXRhLCBzaXplKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgQ0NIbWFj
KGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGRhdGEsIHNpemUsIHJl
c3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJU
cmFuc2Zvcm1CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaAppbmRleCA1YWU5
N2ZkMDEwZDU0ZDliYzdiYjFiMDAwZTNmMTc5OGM1NjAzZjNiLi40YTViY2JkMWMzMmYxYjZhNzUz
N2M3ZTAwYWFkNDM3MDZhMGNlY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaApAQCAtMjcsNiArMjcsNyBAQAog
I2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogQUxMT1df
VU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDY0YTVkNWQ0ZDQ3MDY0NjkzYzA1ZmY4NzIxZWM1ZTM3YjA1
Mzk1NjUuLjEwZDA5ZjI3NGFmNTlhZTE4YjBiODE1MDA3ODFlNWZjNDA0NWE4ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNjMsNiArMTYzLDggQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VUcmFu
c3BvcnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lci5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zY2VpdmVyLmNwcApAQCAtMzMxOSw2ICszMzIxLDcgQEAgSlNSVENSdHBIZWFkZXJF
eHRlbnNpb25QYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBS
ZWNlaXZlci5jcHAKIEpTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKK0pTUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmNwcAogSlNSVENSdHBTZW5kUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNw
cAogSlNSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCAyYWQzM2E5NTUxOTJkOTA3NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi5mNTAyZTcx
YzRmODFlM2ZlNjVkNDBhMTAxOTgyMmYzYmJkNTMxYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKQEAgLTg5LDYgKzg5LDcgQEAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFy
eUl0ZW1zQ29jb2EubW0KIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
bW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVz
L3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCkBAIC0xMjgsNiArMTI5
LDcgQEAgY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHAKIGNyeXB0by9t
YWMvQ3J5cHRvS2V5RUNNYWMuY3BwCiBjcnlwdG8vbWFjL0NyeXB0b0tleU1hYy5jcHAKIGNyeXB0
by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2Nv
YS5jcHAKIGNyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KIGRvbS9EYXRh
VHJhbnNmZXJNYWMubW0KIGRvbS9pb3MvTW91c2VFdmVudElPUy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOThkMTZhOTFi
OGMxY2QwNGY3MGFkY2VlNmZkZGZlYTRkOTE0ZDAzLi5mZDRiYjVhNWZlOWY0YWVlYzk2MWUxNGZl
MTVmMTBiMTdhNTY4NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5LDYgKzExMDksOCBAQAogCQk0MTgxQzVENjI1NTVD
MUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1v
Y2tSVENSdHBUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8q
IE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwICovOyB9OwogCQk0MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRD
UnRwVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENkYzRTkyMUMxRjg1NTUwMDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0u
Y3BwICovOyB9OworCQk0MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODFDNjQyMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxODFDNjRB
MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAw
RDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4
MjZCRjIyM0ZCNTk3NzAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjZCRjEyM0ZCNTk3MDAwQjky
MkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxODRGNTE2MUVBRjA1QTgwMEYxOEJGMCAvKiBPcmllbnRh
dGlvbk5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzAyLDYg
Kzc3MDQsMTIgQEAKIAkJNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JUQ1J0
cFRyYW5zZm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUQ1MjU1
NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE4MUM2MzYyNTVBRTI2MTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zv
cm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTgxQzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE4MUM2NDEyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDIyNTVCNEMy
NjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQ0MjU1QjRDMjcwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxODFDNjQ1MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjA1NDUxRTUzQzhD
RDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgy
MDU0ODFFNTNFQUFEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE4MjZCRjEyM0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MzUsNiArNzc0Myw4IEBACiAJ
CTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlz
aXRlZExpbmtTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdGVk
TGlua1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJFNzUyMUJDN0Yz
REIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVCdWlsdGluTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE5RDkzMDUyNTVFODQyNzAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29h
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b1V0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxOUQ5MzA3MjU1RTg0MjgwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRp
ZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCMzU3MiAv
KiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJD
RiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVT
dHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwODksNiArMTcwOTks
MTIgQEAKIAkJCQk0MTNDOEIyRTI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybS5oICovLAogCQkJCTQxNEFEM0ZDMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBTZW5k
UGFyYW1ldGVycy5oICovLAogCQkJCTQxNEFEM0ZFMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwgKi8sCisJCQkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgKi8sCisJCQkJNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovLAorCQkJCTQxODFDNjQzMjU1QjRDMjcwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsICovLAorCQkJCTQxODFDNjQxMjU1QjRD
MjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgKi8sCisJCQkJNDE4MUM2
NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8sCisJCQkJ
NDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2Eu
Y3BwICovLAogCQkJCTQxNUUxQkI2MjE1MDE1MkEwMDIyREE5NiAvKiBSVENSdHBTeW5jaHJvbml6
YXRpb25Tb3VyY2UuaCAqLywKIAkJCQk0MTVFMUJCNzIxNTAxNTMwMDAyMkRBOTYgLyogUlRDUnRw
U3luY2hyb25pemF0aW9uU291cmNlLmlkbCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBE
ODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovLApAQCAtMjgyNTUsNiArMjgyNzEsOCBAQAog
CQkJCTU3NTBBOTdBMUU2OTE2MTYwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQ01hYy5jcHAgKi8sCiAJ
CQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi8sCiAJCQkJ
RTE2NEZBQTQxODMxNUUxQTAwREI0RTYxIC8qIENyeXB0b0tleVJTQU1hYy5jcHAgKi8sCisJCQkJ
NDE5RDkzMDcyNTVFODQyODAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmNwcCAqLywK
KwkJCQk0MTlEOTMwNTI1NUU4NDI3MDBEQTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCAq
LywKIAkJCQlFMThERjMzNjE4QUFGMTREMDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdy
YXBNYWMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTM0MDkzLDYgKzM0MTExLDgg
QEAKIAkJCQk0MTNDOEIzNTI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXJXaXRoVHJh
bnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM2MTFCQ0VFMzIzMDAwMUUyQkMgLyog
UlRDUnRwU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDOEIzMzI1NTJGMjdEMDBFNjUw
NTUgLyogUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4
MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDE4MUM2NDgyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyog
UlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRUI1NERGMUU3REM3NDQw
MEMxNjIzQiAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQzhCMzQyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKaW5kZXggNWFlNzM0ZDkwOTBjMGQwZjc1NDRkMTRmNmNiYmQzMTMxMzRmMTJiOC4uMTRk
NmRmNDcyMTgyMWNlNTkxMmYxNThlYzQxMDAzMjlmMzZiZTAzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMjE5LDYgKzIxOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbikgXAog
ICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBS
ZWNlaXZlcikgXAorICAgIG1hY3JvKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSkgXAogICAgIG1hY3Jv
KFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCiAgICAgbWFj
cm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcAppbmRleCBjYzQxZGE2NWIwZGFjOWM4
YjVkYjFhMGU0MmZlMDIwMGI1MjhlYTM4Li43NTc5ZTQwYWUzN2NhY2U0MjJhMDZlM2ZlYzVlZWU2
NGYwMmYxYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUFFU19DVFJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKQEAgLTMxLDEwMCArMzEsMjMgQEAKIAogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFF
Uy5oIgotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKyNpbmNsdWRlICJD
cnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24g
b3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVy
TGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBmb2xsb3dpbmcg
aGFjayBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTM2MTA1MD4gaXMgZml4ZWQuCi0gICAgLy8gY291
bnRlciA9IG5vbmNlICsgY291bnRlcgotICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50bHkgY2Fu
IG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNlIHRoZSBj
b3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSByZXN0cmljdGVkCi0gICAgLy8gYnkgdGhlIGNv
dW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hvdWxkIHN0
YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNzdWUsCi0g
ICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBvcGVyYXRp
b24gaW50byB0d28gcGFydHMuCi0gICAgc2l6ZV90IG51bWJlck9mQmxvY2tzID0gZGF0YS5zaXpl
KCkgJSBrQ0NCbG9ja1NpemVBRVMxMjggPyBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEy
OCArIDEgOiBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKLQotICAgIC8vIERldGVj
dCBsb29wCi0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgbnVt
YmVyT2ZCbG9ja3MgPiAoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBjb3VudGVyTGVuZ3RoKSkK
LSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICAvLyBD
YWxjdWxhdGUgY2FwYWNpdHkgYmVmb3JlIG92ZXJmbG93Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6Q291bnRlckJsb2NrSGVscGVyIGNvdW50ZXJCbG9ja0hlbHBlcihjb3VudGVyLCBjb3Vu
dGVyTGVuZ3RoKTsKLSAgICBzaXplX3QgY2FwYWNpdHkgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291
bnRUb092ZXJmbG93U2F0dXJhdGluZygpOwotCi0gICAgLy8gRGl2aWRlIGRhdGEgaW50byB0d28g
cGFydHMgaWYgbmVjZXNzYXJ5LgotICAgIHNpemVfdCBoZWFkU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIGlmIChjYXBhY2l0eSA8IG51bWJlck9mQmxvY2tzKQotICAgICAgICBoZWFkU2l6ZSA9IGNh
cGFjaXR5ICoga0NDQmxvY2tTaXplQUVTMTI4OwotCi0gICAgLy8gZmlyc3QgcGFydDogY29tcHV0
ZSB0aGUgZmlyc3Qgbj1jYXBhY2l0eSBibG9ja3Mgb2YgZGF0YSBpZiBjYXBhY2l0eSBpcyBpbnN1
ZmZpY2llbnQuIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQuCi0gICAgQ0NDcnlwdG9yUmVm
IGNyeXB0b3I7Ci0gICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdp
dGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFk
ZGluZywgY291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtD
Q01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIFZlY3Rvcjx1aW50OF90
PiBoZWFkKENDQ3J5cHRvckdldE91dHB1dExlbmd0aChjcnlwdG9yLCBoZWFkU2l6ZSwgdHJ1ZSkp
OwotCi0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRh
dGUoY3J5cHRvciwgZGF0YS5kYXRhKCksIGhlYWRTaXplLCBoZWFkLmRhdGEoKSwgaGVhZC5zaXpl
KCksICZieXRlc1dyaXR0ZW4pOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgdWludDhfdCogcCA9IGhlYWQuZGF0YSgp
ICsgYnl0ZXNXcml0dGVuOwotICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAs
IGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBwICs9IGJ5dGVzV3JpdHRlbjsK
LSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKLQotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gaGVhZC5l
bmQoKSk7Ci0gICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4oKSk7Ci0KLSAgICBDQ0NyeXB0
b3JSZWxlYXNlKGNyeXB0b3IpOwotCi0gICAgaWYgKGNhcGFjaXR5ID49IG51bWJlck9mQmxvY2tz
KQotICAgICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKLQotICAgIC8vIHNlY29uZCBwYXJ0OiBj
b21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCi0g
ICAgLy8gcmVzZXQgY291bnRlcgotICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVy
ID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCk7Ci0gICAg
c3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBr
Q0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVyLmRhdGEoKSwg
a2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNy
eXB0b3IpOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OwotCi0gICAgc2l6ZV90IHRhaWxTaXplID0gZGF0YS5zaXplKCkgLSBoZWFk
U2l6ZTsKLSAgICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgo
Y3J5cHRvciwgdGFpbFNpemUsIHRydWUpKTsKLQotICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0
ZShjcnlwdG9yLCBkYXRhLmRhdGEoKSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCks
IHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIHAgPSB0YWlsLmRhdGEo
KSArIGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBw
LCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7Ci0gICAgcCArPSBieXRlc1dyaXR0ZW47
Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVy
cm9yIH07Ci0KLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwu
ZW5kKCkpOwotICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJlZ2luKCkpOwotCi0gICAgQ0NDcnlw
dG9yUmVsZWFzZShjcnlwdG9yKTsKLQotICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOwotICAg
IHJldHVybiBXVEZNb3ZlKGhlYWQpOwotfQotCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1BZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKICAgICBBU1NFUlQocGFyYW1ldGVy
cy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0
dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9y
KCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dCk7CisgICAgcmV0dXJu
IHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCks
IHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4
dC5zaXplKCkpOwogfQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobUFFU19DVFI6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQ
YXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgICBBU1NFUlQocGFyYW1ldGVycy5jb3VudGVy
VmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJuIHRyYW5z
Zm9ybUFFU19DVFIoa0NDRGVjcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFt
ZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIGNpcGhlclRleHQpOworICAgIEFTU0VSVChwYXJhbWV0
ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0
b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNp
cGhlclRleHQuc2l6ZSgpKTsKIH0KIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwCmluZGV4IDZjYWE1ZjNjYmU1MzlmZTY1NGNi
N2E5ZmVmZWQ5NGI5YTcyZDU3MzEuLmQ4MDM3MTYxNmI4MzU2ZGY0ZTE4YzhmOWUxNjhkMzVkNGJl
MTcwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtSEtERk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1IS0RGTWFjLmNwcApAQCAtMjgsMjUgKzI4LDE4IEBACiAKICNpZiBFTkFCTEUoV0VCX0NS
WVBUTykKIAotI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNp
bmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZv
cm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleVJhdyYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0
QWxnb3JpdGhtOwogICAgIGdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBkaWdlc3RBbGdvcml0aG0pOwogCi0gICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1
cnJlbnRseSwgd2hlbiBrZXkgZGF0YSBpcyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxs
IGJhaWwgb3V0LgotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5kZXI6IFN3
aXRjaCB0byBDQ0Rlcml2ZUtleSBub3cgdGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlzIGRlcHJl
Y2F0ZWQuCi0gICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwg
ZGlnZXN0QWxnb3JpdGhtLCAwLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCAw
LCAwLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuaW5mb1ZlY3Rv
cigpLnNpemUoKSwgMCwgMCwgcGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0
ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwor
ICAgIHJldHVybiBkZXJpdmVIREtGQml0cyhkaWdlc3RBbGdvcml0aG0sIGtleS5rZXkoKS5kYXRh
KCksIGtleS5rZXkoKS5zaXplKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgcGFy
YW1ldGVycy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRh
KCksIHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgbGVuZ3RoKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44N2YwYjBjZGQyYTY4OTc3ZmQ4ZTk4ZmJhYjhjNzllMzExZjU1N2YxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXND
b2NvYS5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCIKKworI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFF
U19DVFIuaCIKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm1B
RVNfQ1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3Vu
dGVyLCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGhhY2sgb25jZSA8cmRhcjovL3Byb2JsZW0vMzEz
NjEwNTA+IGlzIGZpeGVkLgorICAgIC8vIGNvdW50ZXIgPSBub25jZSArIGNvdW50ZXIKKyAgICAv
LyBDb21tb25DcnlwdG8gY3VycmVudGx5IGNhbiBuZWl0aGVyIHJlc2V0IHRoZSBjb3VudGVyIG5v
ciBkZXRlY3Qgb3ZlcmZsb3cgb25jZSB0aGUgY291bnRlciByZWFjaGVzIGl0cyBtYXggdmFsdWUg
cmVzdHJpY3RlZAorICAgIC8vIGJ5IHRoZSBjb3VudGVyTGVuZ3RoLiBJdCB0aGVuIGluY3JlbWVu
dHMgdGhlIG5vbmNlIHdoaWNoIHNob3VsZCBzdGF5IHNhbWUgZm9yIHRoZSB3aG9sZSBvcGVyYXRp
b24uIFRvIHJlbWVkeSB0aGlzIGlzc3VlLAorICAgIC8vIHdlIGRldGVjdCB0aGUgb3ZlcmZsb3cg
YWhlYWQgYW5kIGRpdmlkZSB0aGUgb3BlcmF0aW9uIGludG8gdHdvIHBhcnRzLgorICAgIHNpemVf
dCBudW1iZXJPZkJsb2NrcyA9IGRhdGFTaXplICUga0NDQmxvY2tTaXplQUVTMTI4ID8gZGF0YVNp
emUgLyBrQ0NCbG9ja1NpemVBRVMxMjggKyAxIDogZGF0YVNpemUgLyBrQ0NCbG9ja1NpemVBRVMx
Mjg7CisKKyAgICAvLyBEZXRlY3QgbG9vcAorICAgIGlmIChjb3VudGVyTGVuZ3RoIDwgc2l6ZW9m
KHNpemVfdCkgKiA4ICYmIG51bWJlck9mQmxvY2tzID4gKHN0YXRpY19jYXN0PHNpemVfdD4oMSkg
PDwgY291bnRlckxlbmd0aCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OworCisgICAgLy8gQ2FsY3VsYXRlIGNhcGFjaXR5IGJlZm9yZSBvdmVyZmxvdworICAg
IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlciBjb3VudGVyQmxvY2tI
ZWxwZXIoY291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gY291
bnRlckJsb2NrSGVscGVyLmNvdW50VG9PdmVyZmxvd1NhdHVyYXRpbmcoKTsKKworICAgIC8vIERp
dmlkZSBkYXRhIGludG8gdHdvIHBhcnRzIGlmIG5lY2Vzc2FyeS4KKyAgICBzaXplX3QgaGVhZFNp
emUgPSBkYXRhU2l6ZTsKKyAgICBpZiAoY2FwYWNpdHkgPCBudW1iZXJPZkJsb2NrcykKKyAgICAg
ICAgaGVhZFNpemUgPSBjYXBhY2l0eSAqIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKKworICAgIC8vIGZp
cnN0IHBhcnQ6IGNvbXB1dGUgdGhlIGZpcnN0IG49Y2FwYWNpdHkgYmxvY2tzIG9mIGRhdGEgaWYg
Y2FwYWNpdHkgaXMgaW5zdWZmaWNpZW50LiBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0Lgor
ICAgIENDQ3J5cHRvclJlZiBjcnlwdG9yOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBD
Q0NyeXB0b3JDcmVhdGVXaXRoTW9kZShvcGVyYXRpb24sIGtDQ01vZGVDVFIsIGtDQ0FsZ29yaXRo
bUFFUzEyOCwgY2NOb1BhZGRpbmcsIGNvdW50ZXIuZGF0YSgpLCBrZXkuZGF0YSgpLCBrZXkuc2l6
ZSgpLCAwLCAwLCAwLCBrQ0NNb2RlT3B0aW9uQ1RSX0JFLCAmY3J5cHRvcik7CisgICAgaWYgKHN0
YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gaGVhZChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwg
aGVhZFNpemUsIHRydWUpKTsKKworICAgIHNpemVfdCBieXRlc1dyaXR0ZW47CisgICAgc3RhdHVz
ID0gQ0NDcnlwdG9yVXBkYXRlKGNyeXB0b3IsIGRhdGEsIGhlYWRTaXplLCBoZWFkLmRhdGEoKSwg
aGVhZC5zaXplKCksICZieXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgdWludDhfdCogcCA9IGhl
YWQuZGF0YSgpICsgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNy
eXB0b3IsIHAsIGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVz
V3JpdHRlbjsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKKworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAg
PD0gaGVhZC5lbmQoKSk7CisgICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4oKSk7CisKKyAg
ICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOworCisgICAgaWYgKGNhcGFjaXR5ID49IG51bWJl
ck9mQmxvY2tzKQorICAgICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKKworICAgIC8vIHNlY29u
ZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhl
IGhlYWQuCisgICAgLy8gcmVzZXQgY291bnRlcgorICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5p
bmdDb3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93
KCk7CisgICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NN
b2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVy
LmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNU
Ul9CRSwgJmNyeXB0b3IpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgc2l6ZV90IHRhaWxTaXplID0gZGF0YVNpemUg
LSBoZWFkU2l6ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRM
ZW5ndGgoY3J5cHRvciwgdGFpbFNpemUsIHRydWUpKTsKKworICAgIHN0YXR1cyA9IENDQ3J5cHRv
clVwZGF0ZShjcnlwdG9yLCBkYXRhICsgaGVhZFNpemUsIHRhaWxTaXplLCB0YWlsLmRhdGEoKSwg
dGFpbC5zaXplKCksICZieXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcCA9IHRhaWwuZGF0YSgp
ICsgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAs
IHRhaWwuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVzV3JpdHRlbjsK
KyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKKworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gdGFpbC5l
bmQoKSk7CisgICAgdGFpbC5zaHJpbmsocCAtIHRhaWwuYmVnaW4oKSk7CisKKyAgICBDQ0NyeXB0
b3JSZWxlYXNlKGNyeXB0b3IpOworCisgICAgaGVhZC5hcHBlbmRWZWN0b3IodGFpbCk7CisgICAg
cmV0dXJuIFdURk1vdmUoaGVhZCk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
ZGVyaXZlSERLRkJpdHMoQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtLCBjb25zdCB1
aW50OF90KiBrZXksIHNpemVfdCBrZXlTaXplLCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qg
c2FsdFNpemUsIGNvbnN0IHVpbnQ4X3QqIGluZm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOworICAgIFZl
Y3Rvcjx1aW50OF90PiBpbmZvVmVjdG9yOworCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwg
d2hlbiBrZXkgZGF0YSBpcyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0
LgorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5kZXI6IFN3aXRjaCB0byBD
Q0Rlcml2ZUtleSBub3cgdGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlzIGRlcHJlY2F0ZWQuCisg
ICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwgZGlnZXN0QWxn
b3JpdGhtLCAwLCBrZXksIGtleVNpemUsIDAsIDAsIGluZm8sIGluZm9TaXplLCAwLCAwLCBzYWx0
LCBzYWx0U2l6ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAorICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVyaXZlSERLRlNIQTI1NkJpdHMoY29uc3QgdWludDhfdCog
a2V5LCBzaXplX3Qga2V5U2l6ZSwgY29uc3QgdWludDhfdCogc2FsdCwgc2l6ZV90IHNhbHRTaXpl
LCBjb25zdCB1aW50OF90KiBpbmZvLCBzaXplX3QgaW5mb1NpemUsIHNpemVfdCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIGRlcml2ZUhES0ZCaXRzKGtDQ0RpZ2VzdFNIQTI1Niwga2V5LCBrZXlTaXpl
LCBzYWx0LCBzYWx0U2l6ZSwgaW5mbywgaW5mb1NpemUsIGxlbmd0aCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3YmVmMTg3ZjU3OGY3MTcyNDc1NGU4NTJlOTM5ZDE3MDk5MGVhODUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmgKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9DUllQVE8pIHx8IEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3R5cGVkZWYgdWludDMyX3QgQ0NEaWdlc3RBbGdv
cml0aG07Cit0eXBlZGVmIHVpbnQzMl90IENDT3BlcmF0aW9uOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09w
ZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxl
bmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhU2l6ZSk7CitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZC
aXRzKENDRGlnZXN0QWxnb3JpdGhtLCBjb25zdCB1aW50OF90KiBrZXksIHNpemVfdCBrZXlTaXpl
LCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qgc2FsdFNpemUsIGNvbnN0IHVpbnQ4X3QqIGlu
Zm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxlbmd0aCk7CitFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IGRlcml2ZUhES0ZTSEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3QqIGtleSwgc2l6ZV90
IGtleVNpemUsIGNvbnN0IHVpbnQ4X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6ZSwgY29uc3QgdWlu
dDhfdCogaW5mbywgc2l6ZV90IGluZm9TaXplLCBzaXplX3QgbGVuZ3RoKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pIHx8IEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDE2MWEyOGY0MTNm
MGVlMTJjYTBmYzIzYjUwN2JkNDQxNjkyOWIxM2UuLjA2YWUyNDM4NzJmMjczNTljYmJmNTY2MzUz
NWJkN2QzNDA3OTI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE1
Myw2ICsxNTMsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQcmludENv
bnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCisjaW5jbHVkZSAiUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0
cmVhbS5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCkBAIC0xNTg1LDYgKzE1
ODYsMTEgQEAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IEludGVybmFsczo6Y3JlYXRlTW9ja1JU
Q1J0cFRyYW5zZm9ybSgpCiAgICAgcmV0dXJuIE1vY2tSVENSdHBUcmFuc2Zvcm06OmNyZWF0ZSgp
OwogfQogCit1aW50NjRfdCBJbnRlcm5hbHM6OnNmcmFtZUNvdW50ZXIoY29uc3QgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgcmV0dXJuIHRyYW5zZm9ybS5jb3VudGVy
Rm9yVGVzdGluZygpOworfQorCiB2b2lkIEludGVybmFsczo6c2V0RW5hYmxlV2ViUlRDRW5jcnlw
dGlvbihib29sIHZhbHVlKQogewogI2lmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCAyNDg1ZTEzZDZkNDk1NjM3OWU2ODY2NTA4YjAxNmViMTQyNGZlNjZl
Li41MmQwNTJkYTY5M2ZlYmNlNzFiM2QyMmI3NWUzMzMyOWRhM2E5ZDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEyNCw2ICsxMjQsMTAgQEAgY2xhc3MgVGV4dFRyYWNrQ3Vl
R2VuZXJpYzsKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJf
UlRDKQorY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOworI2VuZGlmCisKICNpZiBFTkFCTEUo
V0VCWFIpCiBjbGFzcyBXZWJYUlRlc3Q7CiAjZW5kaWYKQEAgLTYwOCw2ICs2MTIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2wpOwogICAgIHZvaWQgc2V0V2Vi
UlRDVlA5VlRCU3VwcG9ydChib29sKTsKICAgICBSZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4gY3Jl
YXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOworICAgIHVpbnQ2NF90IHNmcmFtZUNvdW50ZXIoY29u
c3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtJik7CiAgICAgdm9pZCBzZXRFbmFibGVXZWJSVENFbmNy
eXB0aW9uKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlRFRMUzEwKGJvb2wpOwogICAgIHZvaWQgc2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYlJUQyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCBiMDE1NGIyOTg1ODBiZmFkMzMzYTExNGFmMzg0ZDFkYTkwOWUxNjgyLi4xNDBh
NmE1MDRkYjVkMGU1NzBhNmJhM2U3NDgxZGVkY2ZlYTQ0OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC04MDMsNiArODAzLDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAg
W0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2xl
YW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJS
VENWUDlWVEJTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9S
VENdIE1vY2tSVENSdHBUcmFuc2Zvcm0gY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOworICAg
IFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bnNpZ25lZCBsb25nIGxvbmcgc2ZyYW1lQ291bnRlcihS
VENSdHBTRnJhbWVUcmFuc2Zvcm0gdHJhbnNmb3JtKTsKIAogICAgIFtDb25kaXRpb25hbD1NRURJ
QV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRNb2NrQXVkaW9UcmFja0NoYW5uZWxOdW1iZXIoTWVkaWFT
dHJlYW1UcmFjayB0cmFjaywgdW5zaWduZWQgc2hvcnQgY291bnQpOwogICAgIFtDb25kaXRpb25h
bD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRTaG91bGRJbnRlcnJ1cHRBdWRpb09uUGFnZVZp
c2liaWxpdHlDaGFuZ2UoYm9vbGVhbiBzaG91bGRJbnRlcnJ1cHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwKaW5kZXggMDllYjBjM2NhMTVjNWYx
OTdmMzZjZmI0NzQ5YzExODA2ZThhYzc3Ny4uZGU2MzE4NzYwNTk0YjY5ZjI3YTAxZDY1ZTA4ODk4
MDVmMzM3NDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFu
c2Zvcm0uaWRsCkBAIC0yNiw2ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywK
ICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3Qs
CiAgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBNb2NrUlRDUnRwVHJh
bnNmb3JtIDogUlRDUnRwVHJhbnNmb3JtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBpc1Byb2Nlc3Npbmc7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMzg1YTFiZWFjMWI4YjQ2Y2ZlYjZjNjJiODQwNzZlZTk3OGQyN2FkZC4uN2Fk
YjU2MWZkOTIwMWMzMTI4NjAxYTM0MDk2ZWE4MGMzZDIzOGY2MCAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTEx
LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBX
ZWJSVEMgU0ZyYW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHVuaXQgdGVzdHMgdGhhdCB2YWxpZGF0ZSBTRnJhbWUgZ2VuZXJh
dGlvbiBhbmQgcGFyc2luZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpnZXRSYXdLZXkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlVmlkZW9UcmFuc2Zvcm1lcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1Zl
Y3RvcnNBcmVFcXVhbCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0x
MS0xMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMjY5NTI1KTogTWFueSBsYXlvdXQgdGVzdHMgY3Jhc2ggd2hlbiBydW4gdW5k
ZXIgQVNhbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMmM4MDEwY2VmYWMzNWYwNmU4YzNi
Y2I0NzgzY2Q5MzcxNDk1ZjcyLi5iNWY4MmM3NTQ3NGIzMjBiNjhjZDM0OWEzOWJjYzM5MjdiZWI5
Mjk3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM2LDYgKzIzNiw3IEBACiAJCTQxMzVG
Qjg1MjAxMUZBQkYwMDMzMjEzOSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkI4NjIwMTFG
QUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovOyB9OwogCQk0MTRB
RDY4NjIyODVEMUMwMDA3NzdGMkQgLyogU3RvcmFnZVF1b3RhLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8q
IFN0b3JhZ2VRdW90YS5tbSAqLzsgfTsKIAkJNDE2NjFDNjYyMzU1RTg1RTAwRDMzQzI3IC8qIGdl
dFVzZXJNZWRpYS13ZWJhdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNjYxQzY1MjM1NUQ5OEIwMEQzM0MyNyAvKiBnZXRVc2Vy
TWVkaWEtd2ViYXVkaW8uaHRtbCAqLzsgfTsKKwkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8q
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovOyB9OwogCQk0MTg0OEY0NDI0ODkxODc5MDAw
RTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0OEY0MzI0
ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRt
bCAqLzsgfTsKIAkJNDE4ODJGMDMyMTAxMEMwRDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5n
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODJG
MDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICovOyB9OwogCQk0NDA3
N0JCMTIzMTQ0QjUwMDAxNzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDA3N0JCMDIzMTQ0OUQyMDAx
NzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gKi87IH07CkBAIC0xOTU1LDYgKzE5NTYs
NyBAQAogCQk0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
Yjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDE0QUQ2ODUyMjg1RDFC
MDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3Jh
Z2VRdW90YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2NjFDNjUyMzU1RDk4
QjAwRDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJhdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImdldFVzZXJNZWRpYS13ZWJhdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyVGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxODQ4RjQzMjQ4OTE4MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUt
dXJsLXdpdGgtaG9zdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9wZW4td2lu
ZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWlu
Zy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3
QjM2IC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFyZWRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUx
OSw2ICszNTIxLDcgQEAKIAkJCQkwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3Vm
Zml4LmNwcCAqLywKIAkJCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVE
b21haW4uY3BwICovLAogCQkJCUY0MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVj
dFRlc3RzLmNwcCAqLywKKwkJCQk0MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAgKi8sCiAJCQkJQ0RDRkE3QTkxRTQ1MTIyRjAwQzI0MzNE
IC8qIFNhbXBsZU1hcC5jcHAgKi8sCiAJCQkJQ0UwNkRGOUExRTE4NTFGMjAwRTU3MEM5IC8qIFNl
Y3VyaXR5T3JpZ2luLmNwcCAqLywKIAkJCQk0MTk3M0I1QzFBRjIyODc1MDA2QzdCMzYgLyogU2hh
cmVkQnVmZmVyLmNwcCAqLywKQEAgLTU0MDUsNiArNTQwOCw3IEBACiAJCQkJNUNDQjEwRTMyMTM0
NTdEODAwQUM1QUYwIC8qIFJlc3RvcmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTQ2RTgxNkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBSZXN0b3JlU3Rh
dGVBZnRlclRlcm1pbmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJFMTUxRjcxQjdE
QzAwMTk3MEU2IC8qIFJvdW5kZWRSZWN0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4
MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5Q
YW5lbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0RDI5ODZFMjBGRUU3MzcwMDkyRDYzNiAvKiBS
dW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQTk4NTUz
MjExM0NGNzgwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmcubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lclRlc3RzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzc3YjEzYmJmM2Y4ZTY4
MDBlMmE0MTQ4YTM3YTNhMTQ2NWZlMmEwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwCkBA
IC0wLDAgKzEsMzU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgPFdlYkNvcmUvUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworVmVjdG9yPHVpbnQ4X3Q+IGdldFJhd0tleSgpCit7CisgICAgcmV0dXJuIFZl
Y3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjQ5LAorICAgICAgICAxOTUsCisgICAgICAg
IDIwMiwKKyAgICAgICAgMTU5LAorICAgICAgICA1NiwKKyAgICAgICAgMTkxLAorICAgICAgICAx
MDMsCisgICAgICAgIDI0NywKKyAgICAgICAgMjQ1LAorICAgICAgICAyMTMsCisgICAgICAgIDIw
LAorICAgICAgICA2OCwKKyAgICAgICAgNjcsCisgICAgICAgIDIwLAorICAgICAgICAxNTEsCisg
ICAgICAgIDE4NSwKKyAgICAgICAgMjQyLAorICAgICAgICA3OCwKKyAgICAgICAgMTc2LAorICAg
ICAgICAxNTgsCisgICAgICAgIDkxLAorICAgICAgICAyMDUsCisgICAgICAgIDEzOCwKKyAgICAg
ICAgNTUsCisgICAgICAgIDE3NiwKKyAgICAgICAgMTQ3LAorICAgICAgICAxOTgsCisgICAgICAg
IDI0MywKKyAgICAgICAgMTQ2LAorICAgICAgICAyMDQsCisgICAgICAgIDI0MywKKyAgICAgICAg
MjIwCisgICAgKTsKK30KKworc3RhdGljIFJlZjxXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcj4gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihib29sIGlzU2VuZGluZyA9IHRydWUpCit7Cisg
ICAgYXV0byB0cmFuc2Zvcm1lciA9IFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpj
cmVhdGUoKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKGlzU2VuZGluZyk7CisgICAg
dHJhbnNmb3JtZXItPnNldElzUHJvY2Vzc2luZ0F1ZGlvKGZhbHNlKTsKKworICAgIGF1dG8ga2V5
SWQgPSBWZWN0b3I8dWludDhfdD46OmZyb20oMTk4LCAzMSwgMjUxLCAxOTcsIDQ4LCAxMzksIDkx
LCA1MSk7CisgICAgdWludDY0X3Qga2V5SWRWYWx1ZSA9IDA7CisgICAgZm9yIChhdXRvIHZhbHVl
IDoga2V5SWQpCisgICAgICAgIGtleUlkVmFsdWUgPSB2YWx1ZSArIChrZXlJZFZhbHVlIDw8IDgp
OworCisgICAgYXV0byBrZXlSZXN1bHQgPSB0cmFuc2Zvcm1lci0+c2V0RW5jcnlwdGlvbktleShn
ZXRSYXdLZXkoKSwga2V5SWRWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKGtleVJlc3VsdC5oYXNF
eGNlcHRpb24oKSk7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZXI7Cit9CisKK3N0YXRpYyB2b2lk
IGNoZWNrVmVjdG9yc0FyZUVxdWFsKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY29tcHV0ZWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwZWN0ZWQpCit7CisgICAgRVhQRUNUX0VRKGNvbXB1dGVk
LnNpemUoKSwgZXhwZWN0ZWQuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0
ciA8IHN0ZDo6bWluKGNvbXB1dGVkLnNpemUoKSwgZXhwZWN0ZWQuc2l6ZSgpKTsgKytjcHRyKQor
ICAgICAgICBFWFBFQ1RfRVEoY29tcHV0ZWRbY3B0cl0sIGV4cGVjdGVkW2NwdHJdKTsKK30KKwor
VEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgQXV0aGVudGljYXRpb25LZXkpCit7CisgICAg
YXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBjaGVja1Zl
Y3RvcnNBcmVFcXVhbCh0cmFuc2Zvcm1lci0+YXV0aGVudGljYXRpb25LZXkoKSwgVmVjdG9yPHVp
bnQ4X3Q+Ojpmcm9tKAorICAgICAgICA5MiwKKyAgICAgICAgMjI4LAorICAgICAgICAxMzksCisg
ICAgICAgIDE5NSwKKyAgICAgICAgOTgsCisgICAgICAgIDE2LAorICAgICAgICA0LAorICAgICAg
ICAxOTMsCisgICAgICAgIDIyMSwKKyAgICAgICAgMjQ4LAorICAgICAgICAyMzIsCisgICAgICAg
IDE3OCwKKyAgICAgICAgMTM1LAorICAgICAgICAyMiwKKyAgICAgICAgMTQxLAorICAgICAgICAx
NTAsCisgICAgICAgIDE2NSwKKyAgICAgICAgMjQyLAorICAgICAgICA3MywKKyAgICAgICAgNzIs
CisgICAgICAgIDEwLAorICAgICAgICAxOTcsCisgICAgICAgIDE1LAorICAgICAgICA4NywKKyAg
ICAgICAgMTgxLAorICAgICAgICAzNCwKKyAgICAgICAgMTIwLAorICAgICAgICA3MSwKKyAgICAg
ICAgNDIsCisgICAgICAgIDE3NCwKKyAgICAgICAgMTMxLAorICAgICAgICA3MgorICAgICkpOwor
fQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0aW9uS2V5KQoreworICAg
IGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAgY2hlY2tW
ZWN0b3JzQXJlRXF1YWwodHJhbnNmb3JtZXItPmVuY3J5cHRpb25LZXkoKSwgVmVjdG9yPHVpbnQ4
X3Q+Ojpmcm9tKAorICAgICAgICAyMDcsCisgICAgICAgIDI1MSwKKyAgICAgICAgNTIsCisgICAg
ICAgIDIxLAorICAgICAgICAxMDEsCisgICAgICAgIDUwLAorICAgICAgICAyMzIsCisgICAgICAg
IDQ4LAorICAgICAgICAyMTEsCisgICAgICAgIDExNSwKKyAgICAgICAgMTEsCisgICAgICAgIDE1
NSwKKyAgICAgICAgMTAxLAorICAgICAgICAxMTYsCisgICAgICAgIDE1MywKKyAgICAgICAgNzEK
KyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgU2FsdEtleSkKK3sK
KyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGNo
ZWNrVmVjdG9yc0FyZUVxdWFsKHRyYW5zZm9ybWVyLT5zYWx0S2V5KCksIFZlY3Rvcjx1aW50OF90
Pjo6ZnJvbSgKKyAgICAgICAgMjI5LAorICAgICAgICAxOSwKKyAgICAgICAgNDIsCisgICAgICAg
IDkzLAorICAgICAgICAxNjQsCisgICAgICAgIDEwMywKKyAgICAgICAgMTIwLAorICAgICAgICA1
MywKKyAgICAgICAgMjUsCisgICAgICAgIDI2LAorICAgICAgICAyMzcsCisgICAgICAgIDIwNCwK
KyAgICAgICAgNzksCisgICAgICAgIDEzOCwKKyAgICAgICAgMTM4LAorICAgICAgICAyMzEKKyAg
ICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlwdERlY3J5cHQp
Cit7CisgICAgYXV0byBlbmNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAg
YXV0byBkZWNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKGZhbHNlKTsKKyAgICBhdXRv
IGZyYW1lID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKDEzNSwgODksIDUxLCAxNjYsIDI0OCwgMTI5
LCAxNTcsIDExMSwgMTkwLCAxMzQsIDIyMCk7CisKKyAgICBhdXRvIGVuY3J5cHRlZFJlc3VsdCA9
IGVuY3J5cHRvci0+dHJhbnNmb3JtKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoZW5jcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKworICAgIGF1dG8g
ZW5jcnlwdGVkID0gZW5jcnlwdGVkUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGF1
dG8gZGVjcnlwdGVkUmVzdWx0ID0gZGVjcnlwdG9yLT50cmFuc2Zvcm0oZW5jcnlwdGVkLmRhdGEo
KSwgZW5jcnlwdGVkLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGRlY3J5cHRlZFJlc3VsdC5o
YXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChkZWNyeXB0ZWRSZXN1
bHQucmV0dXJuVmFsdWUoKSwgZnJhbWUpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyLCBFbmNyeXB0RGVjcnlwdEtleUlEMCkKK3sKKyAgICBhdXRvIGVuY3J5cHRvciA9IGNyZWF0
ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBlbmNyeXB0b3ItPnNldEVuY3J5cHRpb25LZXkoZ2V0
UmF3S2V5KCksIDApOworCisgICAgYXV0byBkZWNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9y
bWVyKGZhbHNlKTsKKyAgICBkZWNyeXB0b3ItPnNldEVuY3J5cHRpb25LZXkoZ2V0UmF3S2V5KCks
IDApOworCisgICAgYXV0byBmcmFtZSA9IFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgxMzUsIDg5LCA1
MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjApOworCisgICAgYXV0byBl
bmNyeXB0ZWRSZXN1bHQgPSBlbmNyeXB0b3ItPnRyYW5zZm9ybShmcmFtZS5kYXRhKCksIGZyYW1l
LnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGVuY3J5cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24o
KSk7CisKKyAgICBhdXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRlZFJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKKyAgICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5cHRvci0+dHJhbnNmb3Jt
KGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOworICAgIEVYUEVDVF9GQUxTRShk
ZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hlY2tWZWN0b3JzQXJlRXF1
YWwoZGVjcnlwdGVkUmVzdWx0LnJldHVyblZhbHVlKCksIGZyYW1lKTsKK30KKworVEVTVChSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjApCit7CisgICAgYXV0byB0cmFu
c2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKworICAgIHVpbnQ4X3QgZnJhbWUx
W10gPSB7IDEzNSwgODksIDUxLCAxNjYsIDI0OCwgMTI5LCAxNTcsIDExMSwgMTkwLCAxMzQsIDIy
MCB9OworICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShmcmFtZTEsIHNp
emVvZihmcmFtZTEpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsK
KworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwg
VmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAxNSwKKyAgICAgICAgMTk4LAorICAgICAg
ICAzMSwKKyAgICAgICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAgIDQ4LAorICAgICAgICAx
MzksCisgICAgICAgIDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMCwKKyAgICAgICAgMjU0LAor
ICAgICAgICAxNzEsCisgICAgICAgIDE2OCwKKyAgICAgICAgMTI3LAorICAgICAgICAxNTgsCisg
ICAgICAgIDk3LAorICAgICAgICA3MCwKKyAgICAgICAgNCwKKyAgICAgICAgMjMzLAorICAgICAg
ICAxNTYsCisgICAgICAgIDEzNCwKKyAgICAgICAgMjIwLAorICAgICAgICA0NCwKKyAgICAgICAg
NTAsCisgICAgICAgIDkwLAorICAgICAgICAzLAorICAgICAgICA2OCwKKyAgICAgICAgMjAwLAor
ICAgICAgICAxMjcsCisgICAgICAgIDIyMywKKyAgICAgICAgNgorICAgICkpOworfQorCitURVNU
KFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1Db3VudGVyMjU2KQoreworICAgIGF1
dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisKKyAgICB1aW50OF90
IGZyYW1lMVtdID0geyA4LCAxNjQsIDE4OSwgMTgsIDYxLCAxMTcsIDEzMiwgNDMsIDExNywgMTY5
LCA0MiB9OworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcmVzdWx0
ID0gVmVjdG9yPHVpbnQ4X3Q+KCk7CisgICAgcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShmcmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0
ciA8IDI1NjsgKytjcHRyKSB7CisgICAgICAgIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zv
cm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpOworICAgIH0KKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMzEs
CisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAgICAgMTk3LAor
ICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAgNTEsCisgICAg
ICAgIDEsCisgICAgICAgIDAsCisgICAgICAgIDEyNCwKKyAgICAgICAgMjE4LAorICAgICAgICA2
MSwKKyAgICAgICAgMjMsCisgICAgICAgIDc4LAorICAgICAgICAxNSwKKyAgICAgICAgMTkwLAor
ICAgICAgICAzNSwKKyAgICAgICAgMjU1LAorICAgICAgICAyNTMsCisgICAgICAgIDEyMCwKKyAg
ICAgICAgNjQsCisgICAgICAgIDI4LAorICAgICAgICAxODMsCisgICAgICAgIDE3MiwKKyAgICAg
ICAgMTU0LAorICAgICAgICAxNDQsCisgICAgICAgIDE2LAorICAgICAgICAyMjksCisgICAgICAg
IDg3LAorICAgICAgICA1MgorICAgICkpOworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyLCBUcmFuc2Zvcm1Db3VudGVyNjU1MzYpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNy
ZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICB0cmFuc2Zvcm1lci0+c2V0Q291bnRlcig2NTUz
Nik7CisKKyAgICB1aW50OF90IGZyYW1lMVtdID0geyAwLCAzMywgMjQ0LCAyNCwgMjM2LCAxNTYs
IDEyNywgOCwgNDgsIDg4LCAyMjAgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50
cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgRVhQRUNUX0ZBTFNFKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgNDcsCisg
ICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAgICAgMTk3LAorICAg
ICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAgNTEsCisgICAgICAg
IDEsCisgICAgICAgIDAsCisgICAgICAgIDAsCisgICAgICAgIDk4LAorICAgICAgICAyMTIsCisg
ICAgICAgIDEzNywKKyAgICAgICAgMjQ0LAorICAgICAgICAyMDksCisgICAgICAgIDE2LAorICAg
ICAgICA4OSwKKyAgICAgICAgMjM0LAorICAgICAgICAyMSwKKyAgICAgICAgMTcxLAorICAgICAg
ICAxNSwKKyAgICAgICAgMTA3LAorICAgICAgICA1MCwKKyAgICAgICAgMTQ1LAorICAgICAgICA3
MywKKyAgICAgICAgMTA3LAorICAgICAgICAxNjUsCisgICAgICAgIDQ1LAorICAgICAgICAxOTAs
CisgICAgICAgIDI1LAorICAgICAgICA4MgorICAgICkpOworfQorCit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YjMzZmZlZTMzNzQ0NzU4OWUzZWQxZWEwYjJiNWRhZTdj
MTQ2NjI3Li45YTM2MjViZjJhZDcxZmM3NzJlM2U5ZWZiZmU3MWUyYTc4NmQyZTlkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjAtMTEtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIFdlYlJUQyBTRnJhbWUgdHJhbnNmb3JtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg3NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYnJ0Yy9hdWRpby1zZnJh
bWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvYXVkaW8tc2ZyYW1lLmh0
bWw6IEFkZGVkLgorCiAyMDIwLTExLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIFdlYlJUQyB0cmFuc2Zvcm1zCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY3MDZiNGM5MjVhZTJhOTIzMTc2NDllMjc4NzE1YWY2Yzk1YmJlODgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworCitQQVNTIEF1ZGlvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dl
YnJ0Yy9hdWRpby1zZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzZiNzUwYzBkZjU2N2RiZTQ5Y2Fl
YzEyYTBhNGZiZjI5Y2VkMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRj
L2F1ZGlvLXNmcmFtZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJhdWRpbyIg
YXV0b3BsYXkgcGxheXNJbmxpbmU+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0
aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25zdCBsb2NhbFN0
cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzog
dHJ1ZX0pOworICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJy
YXciLCBuZXcgVWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2
LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2
ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZp
cnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9u
LmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsK
KyAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOwor
ICAgICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKyAgICAgICAgICAg
IHNlbmRlci50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0
aW9uKSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tF
dmVudCkgPT4geworICAgICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5
KGtleSk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwor
ICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9Owor
ICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQg
b3V0IiksIDUwMDApOworICAgIH0pOworCisgICAgYXVkaW8uc3JjT2JqZWN0ID0gc3RyZWFtOwor
ICAgIGF3YWl0IGF1ZGlvLnBsYXkoKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgIGNvbnN0IHNlbmRlckNvdW50ZXIgPSBpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihzZW5k
ZXIudHJhbnNmb3JtKTsKKyAgICAgICAgY29uc3QgcmVjZWl2ZXJDb3VudGVyID0gaW50ZXJuYWxz
LnNmcmFtZUNvdW50ZXIocmVjZWl2ZXIudHJhbnNmb3JtKTsKKworICAgICAgICBsZXQgY291bnRl
ciA9IDA7CisgICAgICAgIHdoaWxlIChyZWNlaXZlckNvdW50ZXIgPT09IGludGVybmFscy5zZnJh
bWVDb3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSkgJiYgKytjb3VudGVyIDwgMTAwKQorICAgICAg
ICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUw
KSk7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHJl
Y2VpdmVyLnRyYW5zZm9ybSksIHJlY2VpdmVyQ291bnRlciwgInJlY2VpdmVyIik7CisgICAgICAg
IGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHNlbmRlci50cmFuc2Zv
cm0pLCBzZW5kZXJDb3VudGVyLCAic2VuZGVyIik7CisgICAgfQorfSwgIkF1ZGlvIGV4Y2hhbmdl
IHdpdGggU0ZyYW1lIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414071</attachid>
            <date>2020-11-13 11:44:02 -0800</date>
            <delta_ts>2020-11-15 05:38:43 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-218752-20201113204358.patch</filename>
            <type>text/plain</type>
            <size>80931</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhlNTM0NzkyY2FlMTU4
ZGU2OGNjY2Q5MmViY2FmYjRlZTZiMjU2NS4uYjFlOTRhNDlkZmU4MDBkMGIxMGYzNzVlNGIxN2Y5
ZjI0ZGRmNTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEludHJvZHVjZSBhIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB0aGF0IGltcGxlbWVudHMgdGhl
IFNGcmFtZSBmb3JtYXQuCisgICAgICAgIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBpcyBhIFJUQ1J0
cFRyYW5zZm9ybSB0aGF0IGNhbiBiZSBzZXQgdG8gUlRDUnRwIHNlbmRlciBhbmQgcmVjZWl2ZXIg
b2JqZWN0cy4KKyAgICAgICAgQVBJIHN1cHBvcnRzIHNldHRpbmcgZW5jcnlwdGlvbiBrZXkuCisg
ICAgICAgIE1pbm9yIHJlZmFjdG9yaW5nIHRvIHJldXNlIFdlYkNyeXB0byByb3V0aW5lcyBmb3Ig
ZW5jcnlwdGlvbi9kZWNyeXB0aW9uLgorCisgICAgICAgIFRlc3Q6IHdlYnJ0Yy9hdWRpby1zZnJh
bWUuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVU
cmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTRnJhbWVUcmFuc2Zvcm06On5SVENSdHBTRnJhbWVUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tl
bmRGb3JSZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNG
cmFtZVRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVJbnQ2NCk6CisgICAgICAgIChXZWJDb3JlOjpsZW5n
dGhPZlVJbnQ2NCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRmlyc3RIZWFkZXJCeXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJVik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNG
cmFtZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlU2FsdEtleSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUF1dGhlbnRpY2F0aW9u
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRl
RW5jcnlwdGlvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
cjo6ZGVjcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmVuY3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZSk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRJc1NlbmRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzUHJvY2Vzc2luZ0F1ZGlvKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29j
b2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlcml2ZUhES0ZTSEEyNTZCaXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFFU19DVFIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0
aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNy
eXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5j
cnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNv
bXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybURl
Y3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6IERlbGV0ZWQuCisg
ICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3JlOjpkZXJpdmVI
REtGU0hBMjU2Qml0cyk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2Nv
YS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6
CisKIDIwMjAtMTEtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBmb3IgV2ViUlRDIHRyYW5zZm9ybXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggYzI5OWQ4MzBjYjYxZTk0NDY5ZDhlNjJiNzJiZDg1N2UzMTQ4Y2JiMy4uOTRk
MDYyYmY5OTNkMWI0YzdjNDQ0MjRmYTRlOTE2NTdmNDAwN2VhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTQwMiw2ICs0MDIsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSdHhQYXJhbWV0ZXJzLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZFBhcmFtZXRlcnMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJh
bnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggNjY5
YjY4NjFiNmFmYTFkMGFjMDk3YjFiZDMxMDY0NDgzZWVjNzUxOS4uMzk2NWU2Y2QwNWQ0MmYzNjUw
YjI1N2UzOTc3NDk1NGYyMDViODA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMzYsNiArMjM2LDcgQEAgJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBQYXJhbWV0ZXJzLmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbAogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSdHhQYXJhbWV0ZXJzLmlkbAorJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAk
KFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNm
b3JtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
aWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IGRiNjcxMDA4OGVmMjQ1NDQ4MzAyNWUwMWU0YWE3Y2U1ZGZlYzMwNGMuLjI2ZDNjMTRh
MmE2OGI4OTE2NjllYjBkNTYwMjdjZTRmNWNlNzNjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0xNzA1LDYgKzE3MDUsOCBAQCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJlY2Vp
dmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNS
VENSdHBSZWNlaXZlci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5kUGFyYW1ldGVycy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5YWU0MGMxODc5Njg5
MzgxN2I4NDE2NTI3YzI0MGFmNzIzZThmMTE2Li5hNWZiNDViODBmYjAxZmQ5OTBiNDVmNjZjNzVi
MmRhYzU3OWY3Nzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI2Myw2ICsy
NjMsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kUGFyYW1ldGVycy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIFwKICAgICAkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVy
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2Vp
dmVyRGlyZWN0aW9uLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk3
NGM2NDBjOThhMWFlZmQxZTFiNmZhMjFkMTdhNmQ2NTBhNjYzNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
LmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiQ3J5cHRvS2V5
UmF3LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpSVENSdHBTRnJhbWVUcmFu
c2Zvcm0oKQorICAgIDogbV90cmFuc2Zvcm1lcihSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3Jl
YXRlKCkpCit7Cit9CisKK1JUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSgpCit7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9u
S2V5KENyeXB0b0tleSYga2V5LCBPcHRpb25hbDx1aW50NjRfdD4ga2V5SWQsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAgYXV0byBhbGdvcml0aG0gPSBrZXkuYWxn
b3JpdGhtKCk7CisgICAgaWYgKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPENyeXB0b0tleUFsZ29y
aXRobT4oYWxnb3JpdGhtKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJJbnZhbGlkIGtleSJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmIChXVEY6OmdldDxDcnlwdG9LZXlBbGdvcml0aG0+KGFsZ29yaXRobSkubmFtZSAhPSAi
SEtERiIpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAi
T25seSBIS0RGIGlzIHN1cHBvcnRlZCJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKKyAgICBwcm9t
aXNlLnNldHRsZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KHJhd0tleS5rZXkoKSwg
a2V5SWQpKTsKK30KKwordWludDY0X3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9y
VGVzdGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtZXItPmNvdW50ZXIoKTsK
K30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNpZGUpCit7CisgICAgbV90cmFu
c2Zvcm1lci0+c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5z
Zm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOworCisgICAgYmFja2VuZC5zZXRU
cmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBi
YWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7CisgICAgICAgIGF1dG8g
Y2h1bmsgPSBmcmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXIt
PnRyYW5zZm9ybShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKKworICAgICAgICBpZiAocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMs
ICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRyYW5zZm9ybWluZyBhIGZyYW1lIik7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmcmFtZS5zZXREYXRhKHsg
cmVzdWx0LnJldHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkg
fSk7CisKKyAgICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShm
cmFtZSkpOworICAgIH0pOworfQorCisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0
aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQp
Cit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsK
K30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2Vu
ZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRy
YW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tl
bmQpCit7CisgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFh
NTdmZmJjYTYxNGJhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5o
IgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENyeXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworCitjbGFz
cyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CisgICAgflJU
Q1J0cFNGcmFtZVRyYW5zZm9ybSgpOworCisgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0
b0tleSYsIE9wdGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKKworICAgIHZvaWQgaW5p
dGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7
CisgICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kJikgZmluYWw7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQmKSBmaW5hbDsKKworICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIg
fTsKKyAgICB2b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
JiwgU2lkZSk7CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3Jt
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIy
MmNlYzYwOWE4N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAg
KzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitb
CisgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0lu
c2VydGFibGVTdHJlYW1zLAorICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4
cG9zZWQ9V2luZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNl
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CisgICAgY29uc3RydWN0
b3IoKTsKKworICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tl
eSBrZXksIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CisgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBtaXNzaW5nIG1ldGhvZHMuCisgICAgLy8gUHJvbWlzZTx1bmRlZmlu
ZWQ+IHJhdGNoZXRFbmNyeXB0aW9uS2V5KCk7CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHNl
dFNpZ25pbmdLZXkoQ3J5cHRvS2V5IGtleSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45ODA4ZmQ5YWIyN2JjZTEwZjdjMTY1ZTNkZjkyZGIxNTk1MzkyNzFhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKQEAgLTAsMCArMSwzMDEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1
aW50OF90KiBkYXRhLCB1aW50NjRfdCB2YWx1ZSwgdWludDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVMZW5ndGg7ICsraSkKKyAgICAgICAgKmRh
dGErKyA9ICh2YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0gMSAtIGkpICogOCkpICYgMHhmZjsKK30K
Kworc3RhdGljIGlubGluZSB1aW50NjRfdCByZWFkVUludDY0KGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKQoreworICAgIHVpbnQ2NF90IHZhbHVlID0gMDsKKyAgICB3aGlsZSAoc2l6
ZS0tKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA4KSB8ICpkYXRhKys7CisgICAgcmV0dXJu
IHZhbHVlOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ4X3QgbGVuZ3RoT2ZVSW50NjQodWludDY0
X3QgdmFsdWUpCit7CisgICAgdWludDhfdCBsZW5ndGggPSAwOworICAgIGRvIHsKKyAgICAgICAg
KytsZW5ndGg7CisgICAgICAgIHZhbHVlID0gdmFsdWUgPj4gODsKKyAgICB9IHdoaWxlICh2YWx1
ZSk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworc3RhdGljIGlubGluZSB1aW50OF90IGNvbXB1
dGVGaXJzdEhlYWRlckJ5dGUodWludDY0X3Qga2V5SWQsIHVpbnQ2NF90IGNvdW50ZXIpCit7Cisg
ICAgdWludDhfdCB2YWx1ZSA9IDA7CisgICAgdmFsdWUgfD0gKGxlbmd0aE9mVUludDY0KGNvdW50
ZXIpIC0gMSkgPDwgNDsKKyAgICBpZiAoa2V5SWQgPCA4KQorICAgICAgICB2YWx1ZSB8PSBrZXlJ
ZDsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWUgfD0gKGxlbmd0aE9mVUludDY0KGtleUlkKSAt
IDEpOworICAgICAgICB2YWx1ZSB8PSAxIDw8IDM7CisgICAgfQorICAgIHJldHVybiB2YWx1ZTsK
K30KKworc3RhdGljIGlubGluZSBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUlWKHVpbnQ2NF90IGNv
dW50ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdEtleSkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gaXYoMTYpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA4OyArK2kpIHsKKyAg
ICAgICAgYXV0byB2YWx1ZSA9IChjb3VudGVyID4+ICgoNyAtIGkpICogOCkpICYgMHhmZjsKKyAg
ICAgICAgaXZbaV0gPSB2YWx1ZSBeIHNhbHRLZXlbaV07CisgICAgfQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDg7IGkgPCAxNjsgKytpKQorICAgICAgICBpdltpXSA9IHNhbHRLZXlbaV07CisgICAg
cmV0dXJuIGl2OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzU2lnbmF0dXJlKHVpbnQ4X3Qg
Zmlyc3RCeXRlKQoreworICAgIHJldHVybiBmaXJzdEJ5dGUgJiAweDgwOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgaGFzTG9uZ0tleUxlbmd0aCh1aW50OF90IGZpcnN0Qnl0ZSkKK3sKKyAgICBy
ZXR1cm4gZmlyc3RCeXRlICYgMHgwODsKK30KKworc3RydWN0IFNGcmFtZUhlYWRlckluZm8gewor
ICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBrZXlJZDsKKyAgICB1aW50NjRfdCBjb3Vu
dGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VT
RnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgYXV0
byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qga2V5SWQgPSAwOworICAgIHVpbnQ2NF90
IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5dGUgPSAqZGF0YSsrOworCisgICAgLy8g
U2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoaGFzU2lnbmF0dXJlKGZpcnN0Qnl0ZSkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBzaXplX3QgY291bnRlckxlbmd0aCA9ICgoZmlyc3RCeXRlID4+
IDQpICYgMHgwNykgKyAxOworCisgICAgaWYgKHNpemUgPCBjb3VudGVyTGVuZ3RoICsgMSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChoYXNMb25nS2V5TGVuZ3RoKGZpcnN0Qnl0ZSkp
IHsKKyAgICAgICAgc2l6ZV90IGtleUxlbmd0aCA9IChmaXJzdEJ5dGUgJiAweDA3KSArIDE7Cisg
ICAgICAgIGlmIChzaXplIDwgY291bnRlckxlbmd0aCArIGtleUxlbmd0aCArIDEpCisgICAgICAg
ICAgICByZXR1cm4geyB9OworCisgICAgICAgIGtleUlkID0gcmVhZFVJbnQ2NChkYXRhLCBrZXlM
ZW5ndGgpOworICAgICAgICBkYXRhICs9IGtleUxlbmd0aDsKKworICAgICAgICBjb3VudGVyID0g
cmVhZFVJbnQ2NChkYXRhLCBjb3VudGVyTGVuZ3RoKTsKKyAgICAgICAgZGF0YSArPSBjb3VudGVy
TGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAgIGtleUlkID0gZmlyc3RCeXRlICYgMHgwNzsK
KyAgICAgICAgY291bnRlciA9IHJlYWRVSW50NjQoZGF0YSwgY291bnRlckxlbmd0aCk7CisgICAg
ICAgIGRhdGEgKz0gY291bnRlckxlbmd0aDsKKyAgICB9CisgICAgdWludDhfdCBoZWFkZXJTaXpl
ID0gZGF0YSAtIHN0YXJ0OworICAgIHJldHVybiBTRnJhbWVIZWFkZXJJbmZvIHsgaGVhZGVyU2l6
ZSwga2V5SWQsIGNvdW50ZXIgfTsKK30KKworUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpKTsKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkKK3sKK30KKworUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpCit7Cit9CisKK0V4Y2VwdGlvbk9y
PHZvaWQ+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1aW50NjRfdD4ga2V5SWQpCit7CisgICAg
YXV0byBzYWx0S2V5UmVzdWx0ID0gY29tcHV0ZVNhbHRLZXkocmF3S2V5KTsKKyAgICBpZiAoc2Fs
dEtleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNhbHRLZXlSZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBhdXRoZW50aWNhdGlvbktleVJlc3VsdCA9
IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShyYXdLZXkpOworICAgIGlmIChhdXRoZW50aWNhdGlv
bktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9u
S2V5UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gZW5jcnlwdGlvbktleVJl
c3VsdCA9IGNvbXB1dGVFbmNyeXB0aW9uS2V5KHJhd0tleSk7CisgICAgaWYgKGVuY3J5cHRpb25L
ZXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBlbmNyeXB0aW9uS2V5UmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9r
ZXlMb2NrKTsKKworICAgIG1fc2FsdEtleSA9IHNhbHRLZXlSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgbV9hdXRoZW50aWNhdGlvbktleSA9IGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIG1fZW5jcnlwdGlvbktleSA9IGVuY3J5cHRpb25L
ZXlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICBpZiAoa2V5SWQpCisgICAgICAg
IG1fa2V5SWQgPSAqa2V5SWQ7CisKKyAgICBtX2hhc0tleSA9IHRydWU7CisgICAgcmV0dXJuIHsg
fTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1l
U2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAgICBhdXRvIGhlYWRlciA9IHBhcnNlU0Zy
YW1lSGVhZGVyKGZyYW1lRGF0YSwgZnJhbWVTaXplKTsKKworICAgIGlmICghaGVhZGVyKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKworICAgIGlmICho
ZWFkZXItPmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1fY291bnRlcikKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgbV9jb3VudGVyID0gaGVhZGVy
LT5jb3VudGVyOworCisgICAgaWYgKGhlYWRlci0+a2V5SWQgIT0gbV9rZXlJZCkgeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlYXJjaCBmb3Iga2V5cy4KKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgfQorCisgICAgLy8gQ29tcHV0ZSBz
aWduYXR1cmUKKyAgICBhdXRvKiB0cmFuc21pdHRlZFNpZ25hdHVyZSA9IGZyYW1lRGF0YSArIGZy
YW1lU2l6ZSAtIG1fYXV0aGVudGljYXRpb25TaXplOworICAgIGF1dG8gc2lnbmF0dXJlID0gY29t
cHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoZnJhbWVEYXRhLCBmcmFtZVNpemUgIC0gbV9hdXRo
ZW50aWNhdGlvblNpemUsIG1fYXV0aGVudGljYXRpb25LZXkpOworICAgIGZvciAoc2l6ZV90IGNw
dHIgPSAwOyBjcHRyIDwgbV9hdXRoZW50aWNhdGlvblNpemU7ICsrY3B0cikgeworICAgICAgICBp
ZiAoc2lnbmF0dXJlW2NwdHJdICE9IHRyYW5zbWl0dGVkU2lnbmF0dXJlW2NwdHJdKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSByYXRjaGV0aW5nLgorICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBEZWNyeXB0IGRhdGEKKyAgICBhdXRvIGl2ID0gY29tcHV0ZUlWKG1fY291bnRl
ciwgbV9zYWx0S2V5KTsKKyAgICBhdXRvIGRhdGFTaXplID0gZnJhbWVTaXplIC0gaGVhZGVyLT5z
aXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0RGF0
YShmcmFtZURhdGEgKyBoZWFkZXItPnNpemUsIGRhdGFTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5
KTsKKworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90
IGZyYW1lU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzaWduYXR1cmUuCisKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgTWF4SGVhZGVyU2l6ZSA9IDE3OworCisgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2tleUxvY2spOworCisgICAgYXV0byBpdiA9IGNvbXB1dGVJVihtX2Nv
dW50ZXIsIG1fc2FsdEtleSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdHJhbnNmb3JtZWREYXRh
OworICAgIHRyYW5zZm9ybWVkRGF0YS5yZXNpemUoZnJhbWVTaXplICsgTWF4SGVhZGVyU2l6ZSAr
IG1fYXV0aGVudGljYXRpb25TaXplKTsKKworICAgIC8vIEZpbGwgaGVhZGVyLgorICAgIHNpemVf
dCBoZWFkZXJTaXplID0gMTsKKyAgICB0cmFuc2Zvcm1lZERhdGFbMF0gPSBjb21wdXRlRmlyc3RI
ZWFkZXJCeXRlKG1fa2V5SWQsIG1fY291bnRlcik7CisgICAgaWYgKG1fa2V5SWQgPj0gOCkgewor
ICAgICAgICBhdXRvIGtleUlkTGVuZ3RoID0gbGVuZ3RoT2ZVSW50NjQobV9rZXlJZCk7CisgICAg
ICAgIHdyaXRlVUludDY0KHRyYW5zZm9ybWVkRGF0YS5kYXRhKCkgKyBoZWFkZXJTaXplLCBtX2tl
eUlkLCBrZXlJZExlbmd0aCk7CisgICAgICAgIGhlYWRlclNpemUgKz0ga2V5SWRMZW5ndGg7Cisg
ICAgfQorICAgIGF1dG8gY291bnRlckxlbmd0aCA9IGxlbmd0aE9mVUludDY0KG1fY291bnRlcik7
CisgICAgd3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRhLmRhdGEoKSArIGhlYWRlclNpemUsIG1f
Y291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgaGVhZGVyU2l6ZSArPSBjb3VudGVyTGVuZ3Ro
OworCisgICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShmcmFtZVNpemUgKyBoZWFkZXJTaXplICsg
bV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8gRmlsbCBlbmNyeXB0ZWQgZGF0YQorICAg
IGF1dG8gZW5jcnlwdGVkRGF0YSA9IGVuY3J5cHREYXRhKGZyYW1lRGF0YSwgZnJhbWVTaXplLCBp
diwgbV9lbmNyeXB0aW9uS2V5KTsKKyAgICBBU1NFUlQoIWVuY3J5cHRlZERhdGEuaGFzRXhjZXB0
aW9uKCkpOworICAgIGlmIChlbmNyeXB0ZWREYXRhLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZW5jcnlwdGVkRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBzdGQ6Om1lbWNw
eSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVyU2l6ZSwgZW5jcnlwdGVkRGF0YS5yZXR1
cm5WYWx1ZSgpLmRhdGEoKSwgZnJhbWVTaXplKTsKKworICAgIC8vIEZpbGwgc2lnbmF0dXJlCisg
ICAgYXV0byBzaWduYXR1cmUgPSBjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZSh0cmFuc2Zv
cm1lZERhdGEuZGF0YSgpLCBmcmFtZVNpemUgKyBoZWFkZXJTaXplLCBtX2F1dGhlbnRpY2F0aW9u
S2V5KTsKKyAgICBzdGQ6Om1lbWNweSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgZnJhbWVTaXpl
ICsgaGVhZGVyU2l6ZSwgc2lnbmF0dXJlLmRhdGEoKSwgbV9hdXRoZW50aWNhdGlvblNpemUpOwor
CisgICAgKyttX2NvdW50ZXI7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhOworfQorCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFu
c2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgaWYgKCFtX2hh
c0tleSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisK
KyAgICByZXR1cm4gbV9pc1NlbmRpbmcgPyBlbmNyeXB0RnJhbWUoZGF0YSwgc2l6ZSkgOiBkZWNy
eXB0RnJhbWUoZGF0YSwgc2l6ZSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlU2Fs
dEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdERh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZW5jcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShjb25zdCB1
aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mKQoreworICAgIHJldHVybiB7
IH07Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMzEyYjdjYTIxNGZkYTYyZjZlODljZjEyMDRiNTU5MDBhMzMyZmMwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
RnJhbWVUcmFuc2Zvcm1lci5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
KyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyeXB0b0tleTsKKworY2xhc3Mg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFdURjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKK3B1
YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIoKTsKKworICAgIHZvaWQgc2V0SXNTZW5kaW5nKGJvb2wpOworICAgIHZvaWQgc2V0SXNQcm9j
ZXNzaW5nQXVkaW8oYm9vbCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25h
bDx1aW50NjRfdD4pOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gdHJhbnNmb3JtKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworCisgICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVu
dGljYXRpb25LZXk7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGVuY3J5cHRpb25LZXko
KSBjb25zdCB7IHJldHVybiBtX2VuY3J5cHRpb25LZXk7IH0KKyAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHNhbHRLZXkoKSBjb25zdCB7IHJldHVybiBtX3NhbHRLZXk7IH0KKworICAgIHVpbnQ2
NF90IGNvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvdW50ZXI7IH0KKyAgICB2b2lkIHNldENv
dW50ZXIodWludDY0X3QgY291bnRlcikgeyBtX2NvdW50ZXIgPSBjb3VudGVyOyB9CisKK3ByaXZh
dGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKTsKKworICAg
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3Qq
LCBzaXplX3QpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZW5jcnlwdEZyYW1l
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworCisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShjb25zdCBWZWN0
b3I8dWludDhfdD4mKTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVF
bmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOworCisgICAgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7CisgICAg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNyeXB0RGF0YShjb25zdCB1aW50OF90Kiwg
c2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJl
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5KTsKKwor
ICAgIExvY2sgbV9rZXlMb2NrOworICAgIGJvb2wgbV9oYXNLZXkgeyBmYWxzZSB9OworICAgIFZl
Y3Rvcjx1aW50OF90PiBtX2F1dGhlbnRpY2F0aW9uS2V5OworICAgIFZlY3Rvcjx1aW50OF90PiBt
X2VuY3J5cHRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fc2FsdEtleTsKKworICAgIGJv
b2wgbV9pc1NlbmRpbmcgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fYXV0aGVudGljYXRpb25T
aXplIHsgMTAgfTsKKyAgICB1aW50NjRfdCBtX2tleUlkIHsgMCB9OworICAgIHVpbnQ2NF90IG1f
Y291bnRlciB7IDAgfTsKK307CisKK2lubGluZSB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpzZXRJc1NlbmRpbmcoYm9vbCBpc1NlbmRpbmcpCit7CisgICAgbV9pc1NlbmRpbmcgPSBpc1Nl
bmRpbmc7Cit9CisKK2lubGluZSB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRJc1By
b2Nlc3NpbmdBdWRpbyhib29sIGlzUHJvY2Vzc2luZ0F1ZGlvKQoreworICAgIG1fYXV0aGVudGlj
YXRpb25TaXplID0gaXNQcm9jZXNzaW5nQXVkaW8gPyA0IDogMTA7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNv
Y29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMzZDQyNDgwMmUxOTNjYWQ3MGQyMWJj
MjEzNzlmODUwZmIzNTc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKQEAgLTAsMCAr
MSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIgor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5o
IgorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyOjpjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd0tleSkKK3sK
KyAgICB1aW50OF90IHVzYWdlW10gPSAiU0ZyYW1lU2FsdEtleSI7CisgICAgcmV0dXJuIGRlcml2
ZUhES0ZTSEEyNTZCaXRzKHJhd0tleS5kYXRhKCksIDE2LCByYXdLZXkuZGF0YSgpICsgMTYsIHJh
d0tleS5zaXplKCkgLSAxNiwgdXNhZ2UsIHNpemVvZih1c2FnZSkgLSAxLCAxMjgpOworfQorCitF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21w
dXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkpCit7Cisg
ICAgdWludDhfdCB1c2FnZVtdID0gIlNGcmFtZUF1dGhlbnRpY2F0aW9uS2V5IjsKKyAgICByZXR1
cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkg
KyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDI1Nik7
Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmNvbXB1dGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5KQor
eworICAgIHVpbnQ4X3QgdXNhZ2VbXSA9ICJTRnJhbWVFbmNyeXB0aW9uS2V5IjsKKyAgICByZXR1
cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRhdGEoKSwgMTYsIHJhd0tleS5kYXRhKCkg
KyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwgc2l6ZW9mKHVzYWdlKSAtIDEsIDEyOCk7
Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSkKK3sKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBpdiwgaXYuc2l6ZSgpLCBrZXksIGRh
dGEsIHNpemUpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjplbmNyeXB0RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkp
Cit7CisgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgaXYsIGl2LnNpemUo
KSwga2V5LCBkYXRhLCBzaXplKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgQ0NIbWFj
KGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtleS5zaXplKCksIGRhdGEsIHNpemUsIHJl
c3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJU
cmFuc2Zvcm1CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaAppbmRleCA1YWU5
N2ZkMDEwZDU0ZDliYzdiYjFiMDAwZTNmMTc5OGM1NjAzZjNiLi40YTViY2JkMWMzMmYxYjZhNzUz
N2M3ZTAwYWFkNDM3MDZhMGNlY2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tl
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlclRyYW5zZm9ybUJhY2tlbmQuaApAQCAtMjcsNiArMjcsNyBAQAog
I2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQogCiAjaW5jbHVkZSAiTGliV2Vi
UlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogQUxMT1df
VU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDY0YTVkNWQ0ZDQ3MDY0NjkzYzA1ZmY4NzIxZWM1ZTM3YjA1
Mzk1NjUuLjEwZDA5ZjI3NGFmNTlhZTE4YjBiODE1MDA3ODFlNWZjNDA0NWE4ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CkBAIC0xNjMsNiArMTYzLDggQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VUcmFu
c3BvcnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lci5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zY2VpdmVyLmNwcApAQCAtMzMxOSw2ICszMzIxLDcgQEAgSlNSVENSdHBIZWFkZXJF
eHRlbnNpb25QYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBS
ZWNlaXZlci5jcHAKIEpTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKK0pTUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmNwcAogSlNSVENSdHBTZW5kUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNw
cAogSlNSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAppbmRleCAyYWQzM2E5NTUxOTJkOTA3NmViM2Q4YzE2MmNmZTM4NjIyZGZiMThjLi5mNTAyZTcx
YzRmODFlM2ZlNjVkNDBhMTAxOTgyMmYzYmJkNTMxYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKQEAgLTg5LDYgKzg5LDcgQEAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFy
eUl0ZW1zQ29jb2EubW0KIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9DbGlwYm9hcmRJ
bWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZElt
YWdlUmVhZGVyTWFjLm1tCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyQ29jb2EuY3BwCiBNb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQu
bW0KIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVz
L3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCkBAIC0xMjgsNiArMTI5
LDcgQEAgY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeU1hYy5jcHAKIGNyeXB0by9t
YWMvQ3J5cHRvS2V5RUNNYWMuY3BwCiBjcnlwdG8vbWFjL0NyeXB0b0tleU1hYy5jcHAKIGNyeXB0
by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAorY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2Nv
YS5jcHAKIGNyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KIGRvbS9EYXRh
VHJhbnNmZXJNYWMubW0KIGRvbS9pb3MvTW91c2VFdmVudElPUy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjOThkMTZhOTFi
OGMxY2QwNGY3MGFkY2VlNmZkZGZlYTRkOTE0ZDAzLi5mZDRiYjVhNWZlOWY0YWVlYzk2MWUxNGZl
MTVmMTBiMTdhNTY4NWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA5LDYgKzExMDksOCBAQAogCQk0MTgxQzVENjI1NTVD
MUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1v
Y2tSVENSdHBUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8q
IE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwICovOyB9OwogCQk0MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRD
UnRwVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENkYzRTkyMUMxRjg1NTUwMDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0u
Y3BwICovOyB9OworCQk0MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODFDNjQyMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQxODFDNjRB
MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAw
RDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4
MjZCRjIyM0ZCNTk3NzAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjZCRjEyM0ZCNTk3MDAwQjky
MkIxIC8qIERvY3VtZW50SWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQxODRGNTE2MUVBRjA1QTgwMEYxOEJGMCAvKiBPcmllbnRh
dGlvbk5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTg0RjUxNTFFQUYwNTk4MDBGMThCRjAgLyogT3JpZW50YXRpb25Ob3RpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzAyLDYg
Kzc3MDQsMTIgQEAKIAkJNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JUQ1J0
cFRyYW5zZm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUQ1MjU1
NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDE4MUM2MzYyNTVBRTI2MTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zv
cm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MTgxQzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE4MUM2NDEyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2NDIyNTVCNEMy
NjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQ0MjU1QjRDMjcwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxODFDNjQ1MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjA1NDUxRTUzQzhD
RDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgy
MDU0ODFFNTNFQUFEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE4MjZCRjEyM0ZCNTk3MDAwQjkyMkIxIC8qIERvY3VtZW50SWRlbnRp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MzUsNiArNzc0Myw4IEBACiAJ
CTQxOUJDMkRDMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2l0ZWRMaW5rU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlCQzJERDE2ODUzMjk5MDBENjRENkQgLyogVmlz
aXRlZExpbmtTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpdGVk
TGlua1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUJFNzUyMUJDN0Yz
REIwMEUxQzg1QiAvKiBXZWJDb3JlQnVpbHRpbk5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNvcmVCdWlsdGluTmFtZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE5RDkzMDUyNTVFODQyNzAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29h
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b1V0aWxpdGllc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxOUQ5MzA3MjU1RTg0MjgwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRp
ZXNDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOUZBRkFEMUFCQUJDRDUwMDVCMzU3MiAv
KiBSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJl
YWRhYmxlU3RyZWFtQllPQlJlYWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxOUZBRkFEMUFCQUJDRDUwMDVCODI4QiAvKiBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJD
RiAvKiBSZWFkYWJsZVN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVT
dHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwODksNiArMTcwOTks
MTIgQEAKIAkJCQk0MTNDOEIyRTI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybS5oICovLAogCQkJCTQxNEFEM0ZDMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBTZW5k
UGFyYW1ldGVycy5oICovLAogCQkJCTQxNEFEM0ZFMjE0OTg0MjAwMDUyMTY3NiAvKiBSVENSdHBT
ZW5kUGFyYW1ldGVycy5pZGwgKi8sCisJCQkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAgKi8sCisJCQkJNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oICovLAorCQkJCTQxODFDNjQzMjU1QjRDMjcwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsICovLAorCQkJCTQxODFDNjQxMjU1QjRD
MjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgKi8sCisJCQkJNDE4MUM2
NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi8sCisJCQkJ
NDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2Eu
Y3BwICovLAogCQkJCTQxNUUxQkI2MjE1MDE1MkEwMDIyREE5NiAvKiBSVENSdHBTeW5jaHJvbml6
YXRpb25Tb3VyY2UuaCAqLywKIAkJCQk0MTVFMUJCNzIxNTAxNTMwMDAyMkRBOTYgLyogUlRDUnRw
U3luY2hyb25pemF0aW9uU291cmNlLmlkbCAqLywKIAkJCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBE
ODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovLApAQCAtMjgyNTUsNiArMjgyNzEsOCBAQAog
CQkJCTU3NTBBOTdBMUU2OTE2MTYwMDcwNUM0QSAvKiBDcnlwdG9LZXlFQ01hYy5jcHAgKi8sCiAJ
CQkJRTE5QUMzRjgxODI1NjZGNzAwMzQ5NDI2IC8qIENyeXB0b0tleU1hYy5jcHAgKi8sCiAJCQkJ
RTE2NEZBQTQxODMxNUUxQTAwREI0RTYxIC8qIENyeXB0b0tleVJTQU1hYy5jcHAgKi8sCisJCQkJ
NDE5RDkzMDcyNTVFODQyODAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmNwcCAqLywK
KwkJCQk0MTlEOTMwNTI1NUU4NDI3MDBEQTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCAq
LywKIAkJCQlFMThERjMzNjE4QUFGMTREMDA3NzNFNTkgLyogU2VyaWFsaXplZENyeXB0b0tleVdy
YXBNYWMubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKQEAgLTM0MDkzLDYgKzM0MTExLDgg
QEAKIAkJCQk0MTNDOEIzNTI1NTJGMjdEMDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXJXaXRoVHJh
bnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM2MTFCQ0VFMzIzMDAwMUUyQkMgLyog
UlRDUnRwU2VuZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDOEIzMzI1NTJGMjdEMDBFNjUw
NTUgLyogUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDE4
MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDE4MUM2NDgyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyog
UlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRUI1NERGMUU3REM3NDQw
MEMxNjIzQiAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDEzQzhCMzQyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVp
bHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5h
bWVzLmgKaW5kZXggNWFlNzM0ZDkwOTBjMGQwZjc1NDRkMTRmNmNiYmQzMTMxMzRmMTJiOC4uMTRk
NmRmNDcyMTgyMWNlNTkxMmYxNThlYzQxMDAzMjlmMzZiZTAzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMjE5LDYgKzIxOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbikgXAog
ICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBS
ZWNlaXZlcikgXAorICAgIG1hY3JvKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSkgXAogICAgIG1hY3Jv
KFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCiAgICAgbWFj
cm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcAppbmRleCBjYzQxZGE2NWIwZGFjOWM4
YjVkYjFhMGU0MmZlMDIwMGI1MjhlYTM4Li43NTc5ZTQwYWUzN2NhY2U0MjJhMDZlM2ZlYzVlZWU2
NGYwMmYxYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUFFU19DVFJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKQEAgLTMxLDEwMCArMzEsMjMgQEAKIAogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0N0clBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFF
Uy5oIgotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KKyNpbmNsdWRlICJD
cnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVyYXRpb24g
b3BlcmF0aW9uLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNvdW50ZXIsIHNpemVfdCBjb3VudGVy
TGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBkYXRhKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoZSBmb2xsb3dpbmcg
aGFjayBvbmNlIDxyZGFyOi8vcHJvYmxlbS8zMTM2MTA1MD4gaXMgZml4ZWQuCi0gICAgLy8gY291
bnRlciA9IG5vbmNlICsgY291bnRlcgotICAgIC8vIENvbW1vbkNyeXB0byBjdXJyZW50bHkgY2Fu
IG5laXRoZXIgcmVzZXQgdGhlIGNvdW50ZXIgbm9yIGRldGVjdCBvdmVyZmxvdyBvbmNlIHRoZSBj
b3VudGVyIHJlYWNoZXMgaXRzIG1heCB2YWx1ZSByZXN0cmljdGVkCi0gICAgLy8gYnkgdGhlIGNv
dW50ZXJMZW5ndGguIEl0IHRoZW4gaW5jcmVtZW50cyB0aGUgbm9uY2Ugd2hpY2ggc2hvdWxkIHN0
YXkgc2FtZSBmb3IgdGhlIHdob2xlIG9wZXJhdGlvbi4gVG8gcmVtZWR5IHRoaXMgaXNzdWUsCi0g
ICAgLy8gd2UgZGV0ZWN0IHRoZSBvdmVyZmxvdyBhaGVhZCBhbmQgZGl2aWRlIHRoZSBvcGVyYXRp
b24gaW50byB0d28gcGFydHMuCi0gICAgc2l6ZV90IG51bWJlck9mQmxvY2tzID0gZGF0YS5zaXpl
KCkgJSBrQ0NCbG9ja1NpemVBRVMxMjggPyBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEy
OCArIDEgOiBkYXRhLnNpemUoKSAvIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKLQotICAgIC8vIERldGVj
dCBsb29wCi0gICAgaWYgKGNvdW50ZXJMZW5ndGggPCBzaXplb2Yoc2l6ZV90KSAqIDggJiYgbnVt
YmVyT2ZCbG9ja3MgPiAoc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBjb3VudGVyTGVuZ3RoKSkK
LSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICAvLyBD
YWxjdWxhdGUgY2FwYWNpdHkgYmVmb3JlIG92ZXJmbG93Ci0gICAgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6Q291bnRlckJsb2NrSGVscGVyIGNvdW50ZXJCbG9ja0hlbHBlcihjb3VudGVyLCBjb3Vu
dGVyTGVuZ3RoKTsKLSAgICBzaXplX3QgY2FwYWNpdHkgPSBjb3VudGVyQmxvY2tIZWxwZXIuY291
bnRUb092ZXJmbG93U2F0dXJhdGluZygpOwotCi0gICAgLy8gRGl2aWRlIGRhdGEgaW50byB0d28g
cGFydHMgaWYgbmVjZXNzYXJ5LgotICAgIHNpemVfdCBoZWFkU2l6ZSA9IGRhdGEuc2l6ZSgpOwot
ICAgIGlmIChjYXBhY2l0eSA8IG51bWJlck9mQmxvY2tzKQotICAgICAgICBoZWFkU2l6ZSA9IGNh
cGFjaXR5ICoga0NDQmxvY2tTaXplQUVTMTI4OwotCi0gICAgLy8gZmlyc3QgcGFydDogY29tcHV0
ZSB0aGUgZmlyc3Qgbj1jYXBhY2l0eSBibG9ja3Mgb2YgZGF0YSBpZiBjYXBhY2l0eSBpcyBpbnN1
ZmZpY2llbnQuIE90aGVyd2lzZSwgcmV0dXJuIHRoZSByZXN1bHQuCi0gICAgQ0NDcnlwdG9yUmVm
IGNyeXB0b3I7Ci0gICAgQ0NDcnlwdG9yU3RhdHVzIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdp
dGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFk
ZGluZywgY291bnRlci5kYXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtD
Q01vZGVPcHRpb25DVFJfQkUsICZjcnlwdG9yKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIFZlY3Rvcjx1aW50OF90
PiBoZWFkKENDQ3J5cHRvckdldE91dHB1dExlbmd0aChjcnlwdG9yLCBoZWFkU2l6ZSwgdHJ1ZSkp
OwotCi0gICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRh
dGUoY3J5cHRvciwgZGF0YS5kYXRhKCksIGhlYWRTaXplLCBoZWFkLmRhdGEoKSwgaGVhZC5zaXpl
KCksICZieXRlc1dyaXR0ZW4pOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgdWludDhfdCogcCA9IGhlYWQuZGF0YSgp
ICsgYnl0ZXNXcml0dGVuOwotICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAs
IGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBwICs9IGJ5dGVzV3JpdHRlbjsK
LSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKLQotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gaGVhZC5l
bmQoKSk7Ci0gICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4oKSk7Ci0KLSAgICBDQ0NyeXB0
b3JSZWxlYXNlKGNyeXB0b3IpOwotCi0gICAgaWYgKGNhcGFjaXR5ID49IG51bWJlck9mQmxvY2tz
KQotICAgICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKLQotICAgIC8vIHNlY29uZCBwYXJ0OiBj
b21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGhlYWQuCi0g
ICAgLy8gcmVzZXQgY291bnRlcgotICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5pbmdDb3VudGVy
ID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93KCk7Ci0gICAg
c3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBr
Q0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVyLmRhdGEoKSwg
a2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNy
eXB0b3IpOwotICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OwotCi0gICAgc2l6ZV90IHRhaWxTaXplID0gZGF0YS5zaXplKCkgLSBoZWFk
U2l6ZTsKLSAgICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgo
Y3J5cHRvciwgdGFpbFNpemUsIHRydWUpKTsKLQotICAgIHN0YXR1cyA9IENDQ3J5cHRvclVwZGF0
ZShjcnlwdG9yLCBkYXRhLmRhdGEoKSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCks
IHRhaWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIHAgPSB0YWlsLmRhdGEo
KSArIGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBw
LCB0YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7Ci0gICAgcCArPSBieXRlc1dyaXR0ZW47
Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVy
cm9yIH07Ci0KLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwu
ZW5kKCkpOwotICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJlZ2luKCkpOwotCi0gICAgQ0NDcnlw
dG9yUmVsZWFzZShjcnlwdG9yKTsKLQotICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOwotICAg
IHJldHVybiBXVEZNb3ZlKGhlYWQpOwotfQotCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBDcnlwdG9BbGdv
cml0aG1BZXNDdHJQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKICAgICBBU1NFUlQocGFyYW1ldGVy
cy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0
dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9y
KCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dCk7CisgICAgcmV0dXJu
IHRyYW5zZm9ybUFFU19DVFIoa0NDRW5jcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCks
IHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIHBsYWluVGV4dC5kYXRhKCksIHBsYWluVGV4
dC5zaXplKCkpOwogfQogCiBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobUFFU19DVFI6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDdHJQ
YXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFFUyYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNpcGhlclRleHQpCiB7Ci0gICAgICBBU1NFUlQocGFyYW1ldGVycy5jb3VudGVy
VmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7Ci0gICAgcmV0dXJuIHRyYW5z
Zm9ybUFFU19DVFIoa0NDRGVjcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9yKCksIHBhcmFt
ZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIGNpcGhlclRleHQpOworICAgIEFTU0VSVChwYXJhbWV0
ZXJzLmNvdW50ZXJWZWN0b3IoKS5zaXplKCkgPT0ga0NDQmxvY2tTaXplQUVTMTI4KTsKKyAgICBy
ZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0LCBwYXJhbWV0ZXJzLmNvdW50ZXJWZWN0
b3IoKSwgcGFyYW1ldGVycy5sZW5ndGgsIGtleS5rZXkoKSwgY2lwaGVyVGV4dC5kYXRhKCksIGNp
cGhlclRleHQuc2l6ZSgpKTsKIH0KIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwCmluZGV4IDZjYWE1ZjNjYmU1MzlmZTY1NGNi
N2E5ZmVmZWQ5NGI5YTcyZDU3MzEuLmQ4MDM3MTYxNmI4MzU2ZGY0ZTE4YzhmOWUxNjhkMzVkNGJl
MTcwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtSEtERk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1IS0RGTWFjLmNwcApAQCAtMjgsMjUgKzI4LDE4IEBACiAKICNpZiBFTkFCTEUoV0VCX0NS
WVBUTykKIAotI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNp
bmNsdWRlICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZv
cm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMmIHBhcmFtZXRlcnMs
IGNvbnN0IENyeXB0b0tleVJhdyYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7CiAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0
QWxnb3JpdGhtOwogICAgIGdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShwYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBkaWdlc3RBbGdvcml0aG0pOwogCi0gICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1
cnJlbnRseSwgd2hlbiBrZXkgZGF0YSBpcyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxs
IGJhaWwgb3V0LgotICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5kZXI6IFN3
aXRjaCB0byBDQ0Rlcml2ZUtleSBub3cgdGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlzIGRlcHJl
Y2F0ZWQuCi0gICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwg
ZGlnZXN0QWxnb3JpdGhtLCAwLCBrZXkua2V5KCkuZGF0YSgpLCBrZXkua2V5KCkuc2l6ZSgpLCAw
LCAwLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIHBhcmFtZXRlcnMuaW5mb1ZlY3Rv
cigpLnNpemUoKSwgMCwgMCwgcGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0
ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQot
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwor
ICAgIHJldHVybiBkZXJpdmVIREtGQml0cyhkaWdlc3RBbGdvcml0aG0sIGtleS5rZXkoKS5kYXRh
KCksIGtleS5rZXkoKS5zaXplKCksIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgcGFy
YW1ldGVycy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRh
KCksIHBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgbGVuZ3RoKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44N2YwYjBjZGQyYTY4OTc3ZmQ4ZTk4ZmJhYjhjNzllMzExZjU1N2YxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXND
b2NvYS5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCIKKworI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFF
U19DVFIuaCIKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm1B
RVNfQ1RSKENDT3BlcmF0aW9uIG9wZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3Vu
dGVyLCBzaXplX3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGhhY2sgb25jZSA8cmRhcjovL3Byb2JsZW0vMzEz
NjEwNTA+IGlzIGZpeGVkLgorICAgIC8vIGNvdW50ZXIgPSBub25jZSArIGNvdW50ZXIKKyAgICAv
LyBDb21tb25DcnlwdG8gY3VycmVudGx5IGNhbiBuZWl0aGVyIHJlc2V0IHRoZSBjb3VudGVyIG5v
ciBkZXRlY3Qgb3ZlcmZsb3cgb25jZSB0aGUgY291bnRlciByZWFjaGVzIGl0cyBtYXggdmFsdWUg
cmVzdHJpY3RlZAorICAgIC8vIGJ5IHRoZSBjb3VudGVyTGVuZ3RoLiBJdCB0aGVuIGluY3JlbWVu
dHMgdGhlIG5vbmNlIHdoaWNoIHNob3VsZCBzdGF5IHNhbWUgZm9yIHRoZSB3aG9sZSBvcGVyYXRp
b24uIFRvIHJlbWVkeSB0aGlzIGlzc3VlLAorICAgIC8vIHdlIGRldGVjdCB0aGUgb3ZlcmZsb3cg
YWhlYWQgYW5kIGRpdmlkZSB0aGUgb3BlcmF0aW9uIGludG8gdHdvIHBhcnRzLgorICAgIHNpemVf
dCBudW1iZXJPZkJsb2NrcyA9IGRhdGFTaXplICUga0NDQmxvY2tTaXplQUVTMTI4ID8gZGF0YVNp
emUgLyBrQ0NCbG9ja1NpemVBRVMxMjggKyAxIDogZGF0YVNpemUgLyBrQ0NCbG9ja1NpemVBRVMx
Mjg7CisKKyAgICAvLyBEZXRlY3QgbG9vcAorICAgIGlmIChjb3VudGVyTGVuZ3RoIDwgc2l6ZW9m
KHNpemVfdCkgKiA4ICYmIG51bWJlck9mQmxvY2tzID4gKHN0YXRpY19jYXN0PHNpemVfdD4oMSkg
PDwgY291bnRlckxlbmd0aCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OworCisgICAgLy8gQ2FsY3VsYXRlIGNhcGFjaXR5IGJlZm9yZSBvdmVyZmxvdworICAg
IENyeXB0b0FsZ29yaXRobUFFU19DVFI6OkNvdW50ZXJCbG9ja0hlbHBlciBjb3VudGVyQmxvY2tI
ZWxwZXIoY291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgc2l6ZV90IGNhcGFjaXR5ID0gY291
bnRlckJsb2NrSGVscGVyLmNvdW50VG9PdmVyZmxvd1NhdHVyYXRpbmcoKTsKKworICAgIC8vIERp
dmlkZSBkYXRhIGludG8gdHdvIHBhcnRzIGlmIG5lY2Vzc2FyeS4KKyAgICBzaXplX3QgaGVhZFNp
emUgPSBkYXRhU2l6ZTsKKyAgICBpZiAoY2FwYWNpdHkgPCBudW1iZXJPZkJsb2NrcykKKyAgICAg
ICAgaGVhZFNpemUgPSBjYXBhY2l0eSAqIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKKworICAgIC8vIGZp
cnN0IHBhcnQ6IGNvbXB1dGUgdGhlIGZpcnN0IG49Y2FwYWNpdHkgYmxvY2tzIG9mIGRhdGEgaWYg
Y2FwYWNpdHkgaXMgaW5zdWZmaWNpZW50LiBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0Lgor
ICAgIENDQ3J5cHRvclJlZiBjcnlwdG9yOworICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBD
Q0NyeXB0b3JDcmVhdGVXaXRoTW9kZShvcGVyYXRpb24sIGtDQ01vZGVDVFIsIGtDQ0FsZ29yaXRo
bUFFUzEyOCwgY2NOb1BhZGRpbmcsIGNvdW50ZXIuZGF0YSgpLCBrZXkuZGF0YSgpLCBrZXkuc2l6
ZSgpLCAwLCAwLCAwLCBrQ0NNb2RlT3B0aW9uQ1RSX0JFLCAmY3J5cHRvcik7CisgICAgaWYgKHN0
YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAg
ICBWZWN0b3I8dWludDhfdD4gaGVhZChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwg
aGVhZFNpemUsIHRydWUpKTsKKworICAgIHNpemVfdCBieXRlc1dyaXR0ZW47CisgICAgc3RhdHVz
ID0gQ0NDcnlwdG9yVXBkYXRlKGNyeXB0b3IsIGRhdGEsIGhlYWRTaXplLCBoZWFkLmRhdGEoKSwg
aGVhZC5zaXplKCksICZieXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgdWludDhfdCogcCA9IGhl
YWQuZGF0YSgpICsgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNy
eXB0b3IsIHAsIGhlYWQuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVz
V3JpdHRlbjsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKKworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAg
PD0gaGVhZC5lbmQoKSk7CisgICAgaGVhZC5zaHJpbmsocCAtIGhlYWQuYmVnaW4oKSk7CisKKyAg
ICBDQ0NyeXB0b3JSZWxlYXNlKGNyeXB0b3IpOworCisgICAgaWYgKGNhcGFjaXR5ID49IG51bWJl
ck9mQmxvY2tzKQorICAgICAgICByZXR1cm4gV1RGTW92ZShoZWFkKTsKKworICAgIC8vIHNlY29u
ZCBwYXJ0OiBjb21wdXRlIHRoZSByZW1haW5pbmcgZGF0YSBhbmQgYXBwZW5kIHRoZW0gdG8gdGhl
IGhlYWQuCisgICAgLy8gcmVzZXQgY291bnRlcgorICAgIFZlY3Rvcjx1aW50OF90PiByZW1haW5p
bmdDb3VudGVyID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50ZXJWZWN0b3JBZnRlck92ZXJmbG93
KCk7CisgICAgc3RhdHVzID0gQ0NDcnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NN
b2RlQ1RSLCBrQ0NBbGdvcml0aG1BRVMxMjgsIGNjTm9QYWRkaW5nLCByZW1haW5pbmdDb3VudGVy
LmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNU
Ul9CRSwgJmNyeXB0b3IpOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgc2l6ZV90IHRhaWxTaXplID0gZGF0YVNpemUg
LSBoZWFkU2l6ZTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGFpbChDQ0NyeXB0b3JHZXRPdXRwdXRM
ZW5ndGgoY3J5cHRvciwgdGFpbFNpemUsIHRydWUpKTsKKworICAgIHN0YXR1cyA9IENDQ3J5cHRv
clVwZGF0ZShjcnlwdG9yLCBkYXRhICsgaGVhZFNpemUsIHRhaWxTaXplLCB0YWlsLmRhdGEoKSwg
dGFpbC5zaXplKCksICZieXRlc1dyaXR0ZW4pOworICAgIGlmIChzdGF0dXMpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcCA9IHRhaWwuZGF0YSgp
ICsgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9IENDQ3J5cHRvckZpbmFsKGNyeXB0b3IsIHAs
IHRhaWwuZW5kKCkgLSBwLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBwICs9IGJ5dGVzV3JpdHRlbjsK
KyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKKworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHAgPD0gdGFpbC5l
bmQoKSk7CisgICAgdGFpbC5zaHJpbmsocCAtIHRhaWwuYmVnaW4oKSk7CisKKyAgICBDQ0NyeXB0
b3JSZWxlYXNlKGNyeXB0b3IpOworCisgICAgaGVhZC5hcHBlbmRWZWN0b3IodGFpbCk7CisgICAg
cmV0dXJuIFdURk1vdmUoaGVhZCk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4g
ZGVyaXZlSERLRkJpdHMoQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtLCBjb25zdCB1
aW50OF90KiBrZXksIHNpemVfdCBrZXlTaXplLCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qg
c2FsdFNpemUsIGNvbnN0IHVpbnQ4X3QqIGluZm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOworICAgIFZl
Y3Rvcjx1aW50OF90PiBpbmZvVmVjdG9yOworCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwg
d2hlbiBrZXkgZGF0YSBpcyBlbXB0eSwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0
LgorICAgIC8vIDxyZGFyOi8vcHJvYmxlbS80ODg5NjAyMT4gUmVtaW5kZXI6IFN3aXRjaCB0byBD
Q0Rlcml2ZUtleSBub3cgdGhhdCBDQ0tleURlcml2YXRpb25ITWFjIGlzIGRlcHJlY2F0ZWQuCisg
ICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwgZGlnZXN0QWxn
b3JpdGhtLCAwLCBrZXksIGtleVNpemUsIDAsIDAsIGluZm8sIGluZm9TaXplLCAwLCAwLCBzYWx0
LCBzYWx0U2l6ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAorICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVyaXZlSERLRlNIQTI1NkJpdHMoY29uc3QgdWludDhfdCog
a2V5LCBzaXplX3Qga2V5U2l6ZSwgY29uc3QgdWludDhfdCogc2FsdCwgc2l6ZV90IHNhbHRTaXpl
LCBjb25zdCB1aW50OF90KiBpbmZvLCBzaXplX3QgaW5mb1NpemUsIHNpemVfdCBsZW5ndGgpCit7
CisgICAgcmV0dXJuIGRlcml2ZUhES0ZCaXRzKGtDQ0RpZ2VzdFNIQTI1Niwga2V5LCBrZXlTaXpl
LCBzYWx0LCBzYWx0U2l6ZSwgaW5mbywgaW5mb1NpemUsIGxlbmd0aCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5oIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg3YmVmMTg3ZjU3OGY3MTcyNDc1NGU4NTJlOTM5ZDE3MDk5MGVhODUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b1V0aWxpdGllc0NvY29hLmgKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9DUllQVE8pIHx8IEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3R5cGVkZWYgdWludDMyX3QgQ0NEaWdlc3RBbGdv
cml0aG07Cit0eXBlZGVmIHVpbnQzMl90IENDT3BlcmF0aW9uOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVTX0NUUihDQ09w
ZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxl
bmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBkYXRhU2l6ZSk7CitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZC
aXRzKENDRGlnZXN0QWxnb3JpdGhtLCBjb25zdCB1aW50OF90KiBrZXksIHNpemVfdCBrZXlTaXpl
LCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qgc2FsdFNpemUsIGNvbnN0IHVpbnQ4X3QqIGlu
Zm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxlbmd0aCk7CitFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IGRlcml2ZUhES0ZTSEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3QqIGtleSwgc2l6ZV90
IGtleVNpemUsIGNvbnN0IHVpbnQ4X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6ZSwgY29uc3QgdWlu
dDhfdCogaW5mbywgc2l6ZV90IGluZm9TaXplLCBzaXplX3QgbGVuZ3RoKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9DUllQVE8pIHx8IEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDE2MWEyOGY0MTNm
MGVlMTJjYTBmYzIzYjUwN2JkNDQxNjkyOWIxM2UuLjA2YWUyNDM4NzJmMjczNTljYmJmNTY2MzUz
NWJkN2QzNDA3OTI0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE1
Myw2ICsxNTMsNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQcmludENv
bnRleHQuaCIKICNpbmNsdWRlICJQc2V1ZG9FbGVtZW50LmgiCisjaW5jbHVkZSAiUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0
cmVhbS5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCkBAIC0xNTg1LDYgKzE1
ODYsMTEgQEAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IEludGVybmFsczo6Y3JlYXRlTW9ja1JU
Q1J0cFRyYW5zZm9ybSgpCiAgICAgcmV0dXJuIE1vY2tSVENSdHBUcmFuc2Zvcm06OmNyZWF0ZSgp
OwogfQogCit1aW50NjRfdCBJbnRlcm5hbHM6OnNmcmFtZUNvdW50ZXIoY29uc3QgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgcmV0dXJuIHRyYW5zZm9ybS5jb3VudGVy
Rm9yVGVzdGluZygpOworfQorCiB2b2lkIEludGVybmFsczo6c2V0RW5hYmxlV2ViUlRDRW5jcnlw
dGlvbihib29sIHZhbHVlKQogewogI2lmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCAyNDg1ZTEzZDZkNDk1NjM3OWU2ODY2NTA4YjAxNmViMTQyNGZlNjZl
Li41MmQwNTJkYTY5M2ZlYmNlNzFiM2QyMmI3NWUzMzMyOWRhM2E5ZDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTEyNCw2ICsxMjQsMTAgQEAgY2xhc3MgVGV4dFRyYWNrQ3Vl
R2VuZXJpYzsKIGNsYXNzIFNlcnZpY2VXb3JrZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJf
UlRDKQorY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOworI2VuZGlmCisKICNpZiBFTkFCTEUo
V0VCWFIpCiBjbGFzcyBXZWJYUlRlc3Q7CiAjZW5kaWYKQEAgLTYwOCw2ICs2MTIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2wpOwogICAgIHZvaWQgc2V0V2Vi
UlRDVlA5VlRCU3VwcG9ydChib29sKTsKICAgICBSZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4gY3Jl
YXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOworICAgIHVpbnQ2NF90IHNmcmFtZUNvdW50ZXIoY29u
c3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtJik7CiAgICAgdm9pZCBzZXRFbmFibGVXZWJSVENFbmNy
eXB0aW9uKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlRFRMUzEwKGJvb2wpOwogICAgIHZvaWQgc2V0
VXNlR1BVUHJvY2Vzc0ZvcldlYlJUQyhib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAppbmRleCBiMDE1NGIyOTg1ODBiZmFkMzMzYTExNGFmMzg0ZDFkYTkwOWUxNjgyLi4xNDBh
NmE1MDRkYjVkMGU1NzBhNmJhM2U3NDgxZGVkY2ZlYTQ0OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCkBAIC04MDMsNiArODAzLDcgQEAgZW51bSBUcmVlVHlwZSB7CiAgICAg
W0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2xl
YW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJS
VENWUDlWVEJTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9S
VENdIE1vY2tSVENSdHBUcmFuc2Zvcm0gY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOworICAg
IFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bnNpZ25lZCBsb25nIGxvbmcgc2ZyYW1lQ291bnRlcihS
VENSdHBTRnJhbWVUcmFuc2Zvcm0gdHJhbnNmb3JtKTsKIAogICAgIFtDb25kaXRpb25hbD1NRURJ
QV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRNb2NrQXVkaW9UcmFja0NoYW5uZWxOdW1iZXIoTWVkaWFT
dHJlYW1UcmFjayB0cmFjaywgdW5zaWduZWQgc2hvcnQgY291bnQpOwogICAgIFtDb25kaXRpb25h
bD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRTaG91bGRJbnRlcnJ1cHRBdWRpb09uUGFnZVZp
c2liaWxpdHlDaGFuZ2UoYm9vbGVhbiBzaG91bGRJbnRlcnJ1cHQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwKaW5kZXggMDllYjBjM2NhMTVjNWYx
OTdmMzZjZmI0NzQ5YzExODA2ZThhYzc3Ny4uZGU2MzE4NzYwNTk0YjY5ZjI3YTAxZDY1ZTA4ODk4
MDVmMzM3NDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFu
c2Zvcm0uaWRsCkBAIC0yNiw2ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywK
ICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3Qs
CiAgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBNb2NrUlRDUnRwVHJh
bnNmb3JtIDogUlRDUnRwVHJhbnNmb3JtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBpc1Byb2Nlc3Npbmc7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggMzg1YTFiZWFjMWI4YjQ2Y2ZlYjZjNjJiODQwNzZlZTk3OGQyN2FkZC4uODk5
NGM5OWQ0MzJmZGJjNjI0MWMwNTE0NmIxYzk1OWE1OWVhYjI2MyAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTEx
LTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBX
ZWJSVEMgU0ZyYW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIHRoYXQgdmFsaWRhdGUgU0ZyYW1lIGdlbmVyYXRp
b24gYW5kIHBhcnNpbmcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHA6IEFkZGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6Z2V0UmF3S2V5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNy
ZWF0ZVZpZGVvVHJhbnNmb3JtZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tWZWN0
b3JzQXJlRXF1YWwpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTEt
MTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjI2OTUyNSk6IE1hbnkgbGF5b3V0IHRlc3RzIGNyYXNoIHdoZW4gcnVuIHVuZGVy
IEFTYW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTJjODAxMGNlZmFjMzVmMDZlOGMzYmNi
NDc4M2NkOTM3MTQ5NWY3Mi4uYjVmODJjNzU0NzRiMzIwYjY4Y2QzNDlhMzliY2MzOTI3YmViOTI5
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNiw2ICsyMzYsNyBAQAogCQk0MTM1RkI4
NTIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNUZCODYyMDExRkFC
RjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLzsgfTsKIAkJNDE0QUQ2
ODYyMjg1RDFDMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNEFENjg1MjI4NUQxQjAwMDc3N0YyRCAvKiBT
dG9yYWdlUXVvdGEubW0gKi87IH07CiAJCTQxNjYxQzY2MjM1NUU4NUUwMEQzM0MyNyAvKiBnZXRV
c2VyTWVkaWEtd2ViYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTY2MUM2NTIzNTVEOThCMDBEMzNDMjcgLyogZ2V0VXNlck1l
ZGlhLXdlYmF1ZGlvLmh0bWwgKi87IH07CisJCTQxODFDNjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCAqLzsgfTsKIAkJNDE4NDhGNDQyNDg5MTg3OTAwMEUy
NTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4NDhGNDMyNDg5
MTgxNTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwg
Ki87IH07CiAJCTQxODgyRjAzMjEwMTBDMEQwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODgyRjAy
MjEwMTBBNzAwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSAqLzsgfTsKIAkJNDQwNzdC
QjEyMzE0NEI1MDAwMTc5RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwNzdCQjAyMzE0NDlEMjAwMTc5
RTJEIC8qIERhdGFEZXRlY3RvcnNUZXN0SU9TLm1tICovOyB9OwpAQCAtMTk1NSw2ICsxOTU2LDcg
QEAKIAkJNDEzNUZCODYyMDExRkFCRjAwMzMyMTM5IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTQxNEFENjg1MjI4NUQxQjAw
MDc3N0YyRCAvKiBTdG9yYWdlUXVvdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9yYWdl
UXVvdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNjYxQzY1MjM1NUQ5OEIw
MEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lclRlc3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVy
bC13aXRoLWhvc3QuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLXdpbmRv
dy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1ByZVdhcm1pbmcu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxOTczQjVDMUFGMjI4NzUwMDZDN0Iz
NiAvKiBTaGFyZWRCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2hhcmVkQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1MTks
NiArMzUyMSw3IEBACiAJCQkJMDQxQTFFMzMyMTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZp
eC5jcHAgKi8sCiAJCQkJNkI0RTg2MUIyMjIwQTU1MjAwMjJGMzg5IC8qIFJlZ2lzdHJhYmxlRG9t
YWluLmNwcCAqLywKIAkJCQlGNDE4QkUxNDFGNzFCN0RDMDAxOTcwRTYgLyogUm91bmRlZFJlY3RU
ZXN0cy5jcHAgKi8sCisJCQkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovLAogCQkJCUNEQ0ZBN0E5MUU0NTEyMkYwMEMyNDMzRCAv
KiBTYW1wbGVNYXAuY3BwICovLAogCQkJCUNFMDZERjlBMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1
cml0eU9yaWdpbi5jcHAgKi8sCiAJCQkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJl
ZEJ1ZmZlci5jcHAgKi8sCkBAIC01NDA1LDYgKzU0MDgsNyBAQAogCQkJCTVDQ0IxMEUzMjEzNDU3
RDgwMEFDNUFGMCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24ubW0gaW4g
U291cmNlcyAqLywKIAkJCQk0NkU4MTZGODFFNzlFMjlDMDAzNzVBREMgLyogUmVzdG9yZVN0YXRl
QWZ0ZXJUZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0MThCRTE1MUY3MUI3REMw
MDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxODFD
NjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExODBDMEZBMUVFNjdERjAwMDQ2OEY0NyAvKiBSdW5PcGVuUGFu
ZWwubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQyOTg2RTIwRkVFNzM3MDA5MkQ2MzYgLyogUnVu
U2NyaXB0QWZ0ZXJEb2N1bWVudExvYWQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0E5ODU1MzIx
MTNDRjc4MDA1N0VCNkIgLyogU2FmZUJyb3dzaW5nLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NkMTM0NDAxOWEzODk0MDAz
OGI0OGQ2MzJiNDczMDFiYjY3ZTlkNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcApAQCAt
MCwwICsxLDM1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitWZWN0b3I8dWludDhfdD4gZ2V0UmF3S2V5KCkKK3sKKyAgICByZXR1cm4gVmVjdG9yPHVp
bnQ4X3Q+Ojpmcm9tKAorICAgICAgICAyNDksCisgICAgICAgIDE5NSwKKyAgICAgICAgMjAyLAor
ICAgICAgICAxNTksCisgICAgICAgIDU2LAorICAgICAgICAxOTEsCisgICAgICAgIDEwMywKKyAg
ICAgICAgMjQ3LAorICAgICAgICAyNDUsCisgICAgICAgIDIxMywKKyAgICAgICAgMjAsCisgICAg
ICAgIDY4LAorICAgICAgICA2NywKKyAgICAgICAgMjAsCisgICAgICAgIDE1MSwKKyAgICAgICAg
MTg1LAorICAgICAgICAyNDIsCisgICAgICAgIDc4LAorICAgICAgICAxNzYsCisgICAgICAgIDE1
OCwKKyAgICAgICAgOTEsCisgICAgICAgIDIwNSwKKyAgICAgICAgMTM4LAorICAgICAgICA1NSwK
KyAgICAgICAgMTc2LAorICAgICAgICAxNDcsCisgICAgICAgIDE5OCwKKyAgICAgICAgMjQzLAor
ICAgICAgICAxNDYsCisgICAgICAgIDIwNCwKKyAgICAgICAgMjQzLAorICAgICAgICAyMjAKKyAg
ICApOworfQorCitzdGF0aWMgUmVmPFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBj
cmVhdGVWaWRlb1RyYW5zZm9ybWVyKGJvb2wgaXNTZW5kaW5nID0gdHJ1ZSkKK3sKKyAgICBhdXRv
IHRyYW5zZm9ybWVyID0gV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNyZWF0ZSgp
OworICAgIHRyYW5zZm9ybWVyLT5zZXRJc1NlbmRpbmcoaXNTZW5kaW5nKTsKKyAgICB0cmFuc2Zv
cm1lci0+c2V0SXNQcm9jZXNzaW5nQXVkaW8oZmFsc2UpOworCisgICAgYXV0byBrZXlJZCA9IFZl
Y3Rvcjx1aW50OF90Pjo6ZnJvbSgxOTgsIDMxLCAyNTEsIDE5NywgNDgsIDEzOSwgOTEsIDUxKTsK
KyAgICB1aW50NjRfdCBrZXlJZFZhbHVlID0gMDsKKyAgICBmb3IgKGF1dG8gdmFsdWUgOiBrZXlJ
ZCkKKyAgICAgICAga2V5SWRWYWx1ZSA9IHZhbHVlICsgKGtleUlkVmFsdWUgPDwgOCk7CisKKyAg
ICBhdXRvIGtleVJlc3VsdCA9IHRyYW5zZm9ybWVyLT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tl
eSgpLCBrZXlJZFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa2V5UmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKTsKKworICAgIHJldHVybiB0cmFuc2Zvcm1lcjsKK30KKworc3RhdGljIHZvaWQgY2hlY2tW
ZWN0b3JzQXJlRXF1YWwoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb21wdXRlZCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBleHBlY3RlZCkKK3sKKyAgICBFWFBFQ1RfRVEoY29tcHV0ZWQuc2l6ZSgp
LCBleHBlY3RlZC5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgc3Rk
OjptaW4oY29tcHV0ZWQuc2l6ZSgpLCBleHBlY3RlZC5zaXplKCkpOyArK2NwdHIpCisgICAgICAg
IEVYUEVDVF9FUShjb21wdXRlZFtjcHRyXSwgZXhwZWN0ZWRbY3B0cl0pOworfQorCitURVNUKFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBBdXRoZW50aWNhdGlvbktleSkKK3sKKyAgICBhdXRvIHRy
YW5zZm9ybWVyID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGNoZWNrVmVjdG9yc0Fy
ZUVxdWFsKHRyYW5zZm9ybWVyLT5hdXRoZW50aWNhdGlvbktleSgpLCBWZWN0b3I8dWludDhfdD46
OmZyb20oCisgICAgICAgIDkyLAorICAgICAgICAyMjgsCisgICAgICAgIDEzOSwKKyAgICAgICAg
MTk1LAorICAgICAgICA5OCwKKyAgICAgICAgMTYsCisgICAgICAgIDQsCisgICAgICAgIDE5MywK
KyAgICAgICAgMjIxLAorICAgICAgICAyNDgsCisgICAgICAgIDIzMiwKKyAgICAgICAgMTc4LAor
ICAgICAgICAxMzUsCisgICAgICAgIDIyLAorICAgICAgICAxNDEsCisgICAgICAgIDE1MCwKKyAg
ICAgICAgMTY1LAorICAgICAgICAyNDIsCisgICAgICAgIDczLAorICAgICAgICA3MiwKKyAgICAg
ICAgMTAsCisgICAgICAgIDE5NywKKyAgICAgICAgMTUsCisgICAgICAgIDg3LAorICAgICAgICAx
ODEsCisgICAgICAgIDM0LAorICAgICAgICAxMjAsCisgICAgICAgIDcxLAorICAgICAgICA0MiwK
KyAgICAgICAgMTc0LAorICAgICAgICAxMzEsCisgICAgICAgIDcyCisgICAgKSk7Cit9CisKK1RF
U1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIEVuY3J5cHRpb25LZXkpCit7CisgICAgYXV0byB0
cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBjaGVja1ZlY3RvcnNB
cmVFcXVhbCh0cmFuc2Zvcm1lci0+ZW5jcnlwdGlvbktleSgpLCBWZWN0b3I8dWludDhfdD46OmZy
b20oCisgICAgICAgIDIwNywKKyAgICAgICAgMjUxLAorICAgICAgICA1MiwKKyAgICAgICAgMjEs
CisgICAgICAgIDEwMSwKKyAgICAgICAgNTAsCisgICAgICAgIDIzMiwKKyAgICAgICAgNDgsCisg
ICAgICAgIDIxMSwKKyAgICAgICAgMTE1LAorICAgICAgICAxMSwKKyAgICAgICAgMTU1LAorICAg
ICAgICAxMDEsCisgICAgICAgIDExNiwKKyAgICAgICAgMTUzLAorICAgICAgICA3MQorICAgICkp
OworfQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBTYWx0S2V5KQoreworICAgIGF1
dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAgY2hlY2tWZWN0
b3JzQXJlRXF1YWwodHJhbnNmb3JtZXItPnNhbHRLZXkoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9t
KAorICAgICAgICAyMjksCisgICAgICAgIDE5LAorICAgICAgICA0MiwKKyAgICAgICAgOTMsCisg
ICAgICAgIDE2NCwKKyAgICAgICAgMTAzLAorICAgICAgICAxMjAsCisgICAgICAgIDUzLAorICAg
ICAgICAyNSwKKyAgICAgICAgMjYsCisgICAgICAgIDIzNywKKyAgICAgICAgMjA0LAorICAgICAg
ICA3OSwKKyAgICAgICAgMTM4LAorICAgICAgICAxMzgsCisgICAgICAgIDIzMQorICAgICkpOwor
fQorCitURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0RGVjcnlwdCkKK3sKKyAg
ICBhdXRvIGVuY3J5cHRvciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBhdXRvIGRl
Y3J5cHRvciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoZmFsc2UpOworICAgIGF1dG8gZnJhbWUg
PSBWZWN0b3I8dWludDhfdD46OmZyb20oMTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjksIDE1Nywg
MTExLCAxOTAsIDEzNCwgMjIwKTsKKworICAgIGF1dG8gZW5jcnlwdGVkUmVzdWx0ID0gZW5jcnlw
dG9yLT50cmFuc2Zvcm0oZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOworICAgIEVYUEVDVF9G
QUxTRShlbmNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgYXV0byBlbmNyeXB0
ZWQgPSBlbmNyeXB0ZWRSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBkZWNy
eXB0ZWRSZXN1bHQgPSBkZWNyeXB0b3ItPnRyYW5zZm9ybShlbmNyeXB0ZWQuZGF0YSgpLCBlbmNy
eXB0ZWQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGVjcnlwdGVkUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKTsKKworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGRlY3J5cHRlZFJlc3VsdC5yZXR1
cm5WYWx1ZSgpLCBmcmFtZSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIEVu
Y3J5cHREZWNyeXB0S2V5SUQwKQoreworICAgIGF1dG8gZW5jcnlwdG9yID0gY3JlYXRlVmlkZW9U
cmFuc2Zvcm1lcigpOworICAgIGVuY3J5cHRvci0+c2V0RW5jcnlwdGlvbktleShnZXRSYXdLZXko
KSwgMCk7CisKKyAgICBhdXRvIGRlY3J5cHRvciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoZmFs
c2UpOworICAgIGRlY3J5cHRvci0+c2V0RW5jcnlwdGlvbktleShnZXRSYXdLZXkoKSwgMCk7CisK
KyAgICBhdXRvIGZyYW1lID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKDEzNSwgODksIDUxLCAxNjYs
IDI0OCwgMTI5LCAxNTcsIDExMSwgMTkwLCAxMzQsIDIyMCk7CisKKyAgICBhdXRvIGVuY3J5cHRl
ZFJlc3VsdCA9IGVuY3J5cHRvci0+dHJhbnNmb3JtKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoZW5jcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKwor
ICAgIGF1dG8gZW5jcnlwdGVkID0gZW5jcnlwdGVkUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OworICAgIGF1dG8gZGVjcnlwdGVkUmVzdWx0ID0gZGVjcnlwdG9yLT50cmFuc2Zvcm0oZW5jcnlw
dGVkLmRhdGEoKSwgZW5jcnlwdGVkLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGRlY3J5cHRl
ZFJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChkZWNy
eXB0ZWRSZXN1bHQucmV0dXJuVmFsdWUoKSwgZnJhbWUpOworfQorCitURVNUKFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLCBUcmFuc2Zvcm1Db3VudGVyMCkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVy
ID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworCisgICAgdWludDhfdCBmcmFtZTFbXSA9IHsg
MTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjksIDE1NywgMTExLCAxOTAsIDEzNCwgMjIwIH07Cisg
ICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZy
YW1lMSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAg
Y2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0b3I8
dWludDhfdD46OmZyb20oCisgICAgICAgIDE1LAorICAgICAgICAxOTgsCisgICAgICAgIDMxLAor
ICAgICAgICAyNTEsCisgICAgICAgIDE5NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwKKyAg
ICAgICAgOTEsCisgICAgICAgIDUxLAorICAgICAgICAwLAorICAgICAgICAyNTQsCisgICAgICAg
IDE3MSwKKyAgICAgICAgMTY4LAorICAgICAgICAxMjcsCisgICAgICAgIDE1OCwKKyAgICAgICAg
OTcsCisgICAgICAgIDcwLAorICAgICAgICA0LAorICAgICAgICAyMzMsCisgICAgICAgIDE1NiwK
KyAgICAgICAgMTM0LAorICAgICAgICAyMjAsCisgICAgICAgIDQ0LAorICAgICAgICA1MCwKKyAg
ICAgICAgOTAsCisgICAgICAgIDMsCisgICAgICAgIDY4LAorICAgICAgICAyMDAsCisgICAgICAg
IDEyNywKKyAgICAgICAgMjIzLAorICAgICAgICA2CisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5zZm9ybUNvdW50ZXIyNTYpCit7CisgICAgYXV0byB0cmFu
c2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKworICAgIHVpbnQ4X3QgZnJhbWUx
W10gPSB7IDgsIDE2NCwgMTg5LCAxOCwgNjEsIDExNywgMTMyLCA0MywgMTE3LCAxNjksIDQyIH07
CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQgPSBWZWN0
b3I8dWludDhfdD4oKTsKKyAgICByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1l
MSwgc2l6ZW9mKGZyYW1lMSkpOworICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgMjU2
OyArK2NwdHIpIHsKKyAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShmcmFt
ZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSk7CisgICAgfQorICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICAzMSwKKyAgICAg
ICAgMTk4LAorICAgICAgICAzMSwKKyAgICAgICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAg
IDQ4LAorICAgICAgICAxMzksCisgICAgICAgIDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMSwK
KyAgICAgICAgMCwKKyAgICAgICAgMTI0LAorICAgICAgICAyMTgsCisgICAgICAgIDYxLAorICAg
ICAgICAyMywKKyAgICAgICAgNzgsCisgICAgICAgIDE1LAorICAgICAgICAxOTAsCisgICAgICAg
IDM1LAorICAgICAgICAyNTUsCisgICAgICAgIDI1MywKKyAgICAgICAgMTIwLAorICAgICAgICA2
NCwKKyAgICAgICAgMjgsCisgICAgICAgIDE4MywKKyAgICAgICAgMTcyLAorICAgICAgICAxNTQs
CisgICAgICAgIDE0NCwKKyAgICAgICAgMTYsCisgICAgICAgIDIyOSwKKyAgICAgICAgODcsCisg
ICAgICAgIDUyCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRy
YW5zZm9ybUNvdW50ZXI2NTUzNikKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlk
ZW9UcmFuc2Zvcm1lcigpOworICAgIHRyYW5zZm9ybWVyLT5zZXRDb3VudGVyKDY1NTM2KTsKKwor
ICAgIHVpbnQ4X3QgZnJhbWUxW10gPSB7IDAsIDMzLCAyNDQsIDI0LCAyMzYsIDE1NiwgMTI3LCA4
LCA0OCwgODgsIDIyMCB9OworICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShmcmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKTsKKworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAorICAgICAgICA0NywKKyAgICAgICAg
MTk4LAorICAgICAgICAzMSwKKyAgICAgICAgMjUxLAorICAgICAgICAxOTcsCisgICAgICAgIDQ4
LAorICAgICAgICAxMzksCisgICAgICAgIDkxLAorICAgICAgICA1MSwKKyAgICAgICAgMSwKKyAg
ICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgOTgsCisgICAgICAgIDIxMiwKKyAgICAgICAg
MTM3LAorICAgICAgICAyNDQsCisgICAgICAgIDIwOSwKKyAgICAgICAgMTYsCisgICAgICAgIDg5
LAorICAgICAgICAyMzQsCisgICAgICAgIDIxLAorICAgICAgICAxNzEsCisgICAgICAgIDE1LAor
ICAgICAgICAxMDcsCisgICAgICAgIDUwLAorICAgICAgICAxNDUsCisgICAgICAgIDczLAorICAg
ICAgICAxMDcsCisgICAgICAgIDE2NSwKKyAgICAgICAgNDUsCisgICAgICAgIDE5MCwKKyAgICAg
ICAgMjUsCisgICAgICAgIDgyCisgICAgKSk7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDRiMzNmZmVlMzM3NDQ3NTg5ZTNlZDFlYTBiMmI1ZGFlN2MxNDY2Mjcu
LjJmYzMzZmViYjJlODAxYmI1Yzk3ZjVlYzUyYWI5NjhjNzAwOTIzYTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMC0xMS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGEgV2ViUlRDIFNGcmFtZSB0cmFuc2Zvcm0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc1MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHdlYnJ0Yy9hdWRpby1zZnJhbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWw6IEFkZGVk
LgorCiAyMDIwLTExLTEyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIFdlYlJUQyB0cmFuc2Zvcm1zCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MDZiNGM5
MjVhZTJhOTIzMTc2NDllMjc4NzE1YWY2Yzk1YmJlODgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAK
KworCitQQVNTIEF1ZGlvIGV4Y2hhbmdlIHdpdGggU0ZyYW1lCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRp
by1zZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzZiNzUwYzBkZjU2N2RiZTQ5Y2FlYzEyYTBhNGZi
ZjI5Y2VkMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNm
cmFtZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJhdWRpbyIgYXV0b3BsYXkg
cGxheXNJbmxpbmU+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3
YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOwor
ICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcg
VWludDhBcnJheShbMTQzLCA3NywgNDMsIDEwLCA3MiwgMTksIDM3LCA2NywgMjM2LCAyMTksIDI0
LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZhbHNlLCBbImRlcml2ZUJpdHMiLCAi
ZGVyaXZlS2V5Il0pOworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVj
dGlvbikgPT4geworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNr
KGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAg
ICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOworICAgICAgICAg
ICAgdHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5KTsKKyAgICAgICAgICAgIHNlbmRlci50
cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7
CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4g
eworICAgICAgICAgICAgICAgIGxldCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtOworICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSk7Cisg
ICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAg
ICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICBy
ZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9
KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUw
MDApOworICAgIH0pOworCisgICAgYXVkaW8uc3JjT2JqZWN0ID0gc3RyZWFtOworICAgIGF3YWl0
IGF1ZGlvLnBsYXkoKTsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGNv
bnN0IHNlbmRlckNvdW50ZXIgPSBpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihzZW5kZXIudHJhbnNm
b3JtKTsKKyAgICAgICAgY29uc3QgcmVjZWl2ZXJDb3VudGVyID0gaW50ZXJuYWxzLnNmcmFtZUNv
dW50ZXIocmVjZWl2ZXIudHJhbnNmb3JtKTsKKworICAgICAgICBsZXQgY291bnRlciA9IDA7Cisg
ICAgICAgIHdoaWxlIChyZWNlaXZlckNvdW50ZXIgPT09IGludGVybmFscy5zZnJhbWVDb3VudGVy
KHJlY2VpdmVyLnRyYW5zZm9ybSkgJiYgKytjb3VudGVyIDwgMTAwKQorICAgICAgICAgICAgYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7CisgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHJlY2VpdmVyLnRy
YW5zZm9ybSksIHJlY2VpdmVyQ291bnRlciwgInJlY2VpdmVyIik7CisgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGludGVybmFscy5zZnJhbWVDb3VudGVyKHNlbmRlci50cmFuc2Zvcm0pLCBzZW5k
ZXJDb3VudGVyLCAic2VuZGVyIik7CisgICAgfQorfSwgIkF1ZGlvIGV4Y2hhbmdlIHdpdGggU0Zy
YW1lIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414163</attachid>
            <date>2020-11-15 05:38:48 -0800</date>
            <delta_ts>2020-11-15 10:00:19 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-218752-20201115143845.patch</filename>
            <type>text/plain</type>
            <size>80275</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODRjODQ0ZmU4NmJlNGFk
ZGM0NDZhYzZmYjVkMWQ2M2E3OTQ2ODYwMi4uYjg2MzIwZGIyNjgyMzQyYTg4YzUyMTk5NGNjMDZh
MmZmYmQ1ZTkzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDIwLTExLTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJSVEMgU0Zy
YW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgIEludHJvZHVjZSBhIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB0aGF0IGltcGxlbWVudHMgdGhl
IFNGcmFtZSBmb3JtYXQuCisgICAgICAgIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBpcyBhIFJUQ1J0
cFRyYW5zZm9ybSB0aGF0IGNhbiBiZSBzZXQgdG8gUlRDUnRwIHNlbmRlciBhbmQgcmVjZWl2ZXIg
b2JqZWN0cy4KKyAgICAgICAgQVBJIHN1cHBvcnRzIHNldHRpbmcgZW5jcnlwdGlvbiBrZXkuCisg
ICAgICAgIE1pbm9yIHJlZmFjdG9yaW5nIHRvIHJldXNlIFdlYkNyeXB0byByb3V0aW5lcyBmb3Ig
ZW5jcnlwdGlvbi9kZWNyeXB0aW9uLgorCisgICAgICAgIFRlc3Q6IHdlYnJ0Yy9hdWRpby1zZnJh
bWUuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVU
cmFuc2Zvcm06OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTRnJhbWVUcmFuc2Zvcm06On5SVENSdHBTRnJhbWVUcmFuc2Zvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tl
bmRGb3JSZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNG
cmFtZVRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVVJbnQ2NCk6CisgICAgICAgIChXZWJDb3JlOjpsZW5n
dGhPZlVJbnQ2NCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRmlyc3RIZWFkZXJCeXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJVik6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNG
cmFtZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRFbmNyeXB0aW9uS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlU2FsdEtleSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUF1dGhlbnRpY2F0aW9u
S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRl
RW5jcnlwdGlvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
cjo6ZGVjcnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXI6OmVuY3J5cHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNpZ25hdHVyZSk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRJc1NlbmRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OnNldElzUHJvY2Vzc2luZ0F1ZGlvKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29j
b2EuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlcml2ZUhES0ZTSEEyNTZCaXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUFFU19DVFIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVTYWx0S2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0
aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpkZWNy
eXB0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5j
cnlwdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNv
bXB1dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DVFI6OnBsYXRmb3JtRW5jcnlw
dCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybURl
Y3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6IERlbGV0ZWQuCisg
ICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhbnNmb3JtQUVTX0NUUik6CisgICAgICAgIChXZWJDb3JlOjpkZXJpdmVI
REtGU0hBMjU2Qml0cyk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2Nv
YS5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6
CisKIDIwMjAtMTEtMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBET00gcmVuZGVyaW5nIHZpYSB0aGUg
R1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzI5OWQ4MzBjYjYxZTk0NDY5ZDhl
NjJiNzJiZDg1N2UzMTQ4Y2JiMy4uOTRkMDYyYmY5OTNkMWI0YzdjNDQ0MjRmYTRlOTE2NTdmNDAw
N2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQwMiw2ICs0MDIsNyBAQCBzZXQoV2ViQ29y
ZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2
ZXIrVHJhbnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIu
aWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSdHhQYXJhbWV0ZXJzLmlkbAorICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMuaWRsCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2VuZGVyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKaW5kZXggZGQ5Y2RlMzhhMDBiZmVhNTZkMjM4YzJmZmE4N2FmM2E5YzE0
NTZkYy4uYjE2ZDg4ZTg0NWNkNjZjZWM4Y2VjZDBlN2NiNDBmODQyY2NkOTYwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0yMzYsNiAr
MjM2LDcgQEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBQYXJhbWV0
ZXJzLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
citUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
dHhQYXJhbWV0ZXJzLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGRiNjcxMDA4OGVmMjQ1NDQ4MzAyNWUwMWU0
YWE3Y2U1ZGZlYzMwNGMuLjI2ZDNjMTRhMmE2OGI4OTE2NjllYjBkNTYwMjdjZTRmNWNlNzNjOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CkBAIC0xNzA1LDYgKzE3MDUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBSZWNlaXZlci5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBh
cmFtZXRlcnMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBT
ZW5kUGFyYW1ldGVycy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA2NTRhNTk4OGEwMjY3YjA1NTA3MDQxMDgxMWU1NjdmNmFmOGY1MDk2Li4yN2Fj
N2Q4MGVlYjEwMzU2NGQxYWU2NTMyMWVmMDA3NTcwYmVjY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTI2Myw2ICsyNjMsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1ldGVycy5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9y
bS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U3luY2hyb25pemF0aW9uU291cmNlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk3NGM2NDBjOThhMWFlZmQxZTFiNmZhMjFkMTdhNmQ2NTBh
NjYzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNm
b3JtYWJsZUZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKQorICAgIDogbV90cmFuc2Zvcm1lcihSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCkpCit7Cit9CisKK1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybTo6flJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpCit7Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYga2V5LCBPcHRpb25hbDx1aW50
NjRfdD4ga2V5SWQsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCit7CisgICAg
YXV0byBhbGdvcml0aG0gPSBrZXkuYWxnb3JpdGhtKCk7CisgICAgaWYgKCFXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKSkgeworICAgICAgICBwcm9t
aXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJJbnZhbGlkIGtleSJfcyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXVEY6OmdldDxDcnlwdG9LZXlBbGdvcml0
aG0+KGFsZ29yaXRobSkubmFtZSAhPSAiSEtERiIpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiT25seSBIS0RGIGlzIHN1cHBvcnRlZCJfcyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0
b0tleVJhdz4oa2V5KTsKKyAgICBwcm9taXNlLnNldHRsZShtX3RyYW5zZm9ybWVyLT5zZXRFbmNy
eXB0aW9uS2V5KHJhd0tleS5rZXkoKSwga2V5SWQpKTsKK30KKwordWludDY0X3QgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dHJhbnNmb3JtZXItPmNvdW50ZXIoKTsKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBT
aWRlIHNpZGUpCit7CisgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lk
ZTo6U2VuZGVyKTsKKyAgICBtX3RyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNr
ZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVk
aW8pOworCisgICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNm
b3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKV0oYXV0byYm
IGZyYW1lKSB7CisgICAgICAgIGF1dG8gY2h1bmsgPSBmcmFtZS5kYXRhKCk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShjaHVuay5kYXRhLCBjaHVuay5zaXpl
KTsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRy
YW5zZm9ybWluZyBhIGZyYW1lIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJldHVyblZhbHVlKCkuZGF0YSgpLCByZXN1
bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisKKyAgICAgICAgYmFja2VuZC0+cHJvY2Vzc1Ry
YW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZSkpOworICAgIH0pOworfQorCisKK3ZvaWQgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJh
Y2tlbmQsIFNpZGU6OlJlY2VpdmVyKTsKK30KKwordm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tl
bmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQsIFNpZGU6OlNlbmRlcik7
Cit9CisKK3ZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgYmFja2VuZC5jbGVhclRyYW5zZm9y
bWFibGVGcmFtZUNhbGxiYWNrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU4
MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYxNGJhYwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
LmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRl
ICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyeXB0b0tleTsKK2NsYXNzIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gZmluYWwgOiBw
dWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTRnJh
bWVUcmFuc2Zvcm0pOyB9CisgICAgflJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOworCisgICAgdm9p
ZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9wdGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgY291
bnRlckZvclRlc3RpbmcoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0oKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclNl
bmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7CisgICAgdm9pZCB3aWxsQ2xlYXJC
YWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsKKworICAgIGVudW0gY2xhc3Mg
U2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKKyAgICB2b2lkIGluaXRpYWxpemVUcmFuc2Zvcm1l
cihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7CisKKyAgICBSZWY8UlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4N2NhNzFhYjBhZTRiOTQxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKKyAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLAorICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2luZG93LAorICAgIEpTR2VuZXJhdGVUb05h
dGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRy
YW5zZm9ybSB7CisgICAgY29uc3RydWN0b3IoKTsKKworICAgIFByb21pc2U8dW5kZWZpbmVkPiBz
ZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9u
ZyBrZXlJRCk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBtaXNzaW5nIG1ldGhvZHMu
CisgICAgLy8gUHJvbWlzZTx1bmRlZmluZWQ+IHJhdGNoZXRFbmNyeXB0aW9uS2V5KCk7CisgICAg
Ly8gUHJvbWlzZTx1bmRlZmluZWQ+IHNldFNpZ25pbmdLZXkoQ3J5cHRvS2V5IGtleSk7Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODA4ZmQ5YWIyN2JjZTEwZjdj
MTY1ZTNkZjkyZGIxNTk1MzkyNzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAKQEAgLTAsMCAr
MSwzMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIK
KworI2lmIEVOQUJMRShXRUJfUlRDKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBp
bmxpbmUgdm9pZCB3cml0ZVVJbnQ2NCh1aW50OF90KiBkYXRhLCB1aW50NjRfdCB2YWx1ZSwgdWlu
dDhfdCB2YWx1ZUxlbmd0aCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVM
ZW5ndGg7ICsraSkKKyAgICAgICAgKmRhdGErKyA9ICh2YWx1ZSA+PiAoKHZhbHVlTGVuZ3RoIC0g
MSAtIGkpICogOCkpICYgMHhmZjsKK30KKworc3RhdGljIGlubGluZSB1aW50NjRfdCByZWFkVUlu
dDY0KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIHVpbnQ2NF90IHZh
bHVlID0gMDsKKyAgICB3aGlsZSAoc2l6ZS0tKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCA4
KSB8ICpkYXRhKys7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgaW5saW5lIHVpbnQ4
X3QgbGVuZ3RoT2ZVSW50NjQodWludDY0X3QgdmFsdWUpCit7CisgICAgdWludDhfdCBsZW5ndGgg
PSAwOworICAgIGRvIHsKKyAgICAgICAgKytsZW5ndGg7CisgICAgICAgIHZhbHVlID0gdmFsdWUg
Pj4gODsKKyAgICB9IHdoaWxlICh2YWx1ZSk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworc3Rh
dGljIGlubGluZSB1aW50OF90IGNvbXB1dGVGaXJzdEhlYWRlckJ5dGUodWludDY0X3Qga2V5SWQs
IHVpbnQ2NF90IGNvdW50ZXIpCit7CisgICAgdWludDhfdCB2YWx1ZSA9IDA7CisgICAgdmFsdWUg
fD0gKGxlbmd0aE9mVUludDY0KGNvdW50ZXIpIC0gMSkgPDwgNDsKKyAgICBpZiAoa2V5SWQgPCA4
KQorICAgICAgICB2YWx1ZSB8PSBrZXlJZDsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWUgfD0g
KGxlbmd0aE9mVUludDY0KGtleUlkKSAtIDEpOworICAgICAgICB2YWx1ZSB8PSAxIDw8IDM7Cisg
ICAgfQorICAgIHJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIGlubGluZSBWZWN0b3I8dWludDhf
dD4gY29tcHV0ZUlWKHVpbnQ2NF90IGNvdW50ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2Fs
dEtleSkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gaXYoMTYpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCA4OyArK2kpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IChjb3VudGVyID4+ICgo
NyAtIGkpICogOCkpICYgMHhmZjsKKyAgICAgICAgaXZbaV0gPSB2YWx1ZSBeIHNhbHRLZXlbaV07
CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDg7IGkgPCAxNjsgKytpKQorICAgICAgICBp
dltpXSA9IHNhbHRLZXlbaV07CisgICAgcmV0dXJuIGl2OworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgaGFzU2lnbmF0dXJlKHVpbnQ4X3QgZmlyc3RCeXRlKQoreworICAgIHJldHVybiBmaXJzdEJ5
dGUgJiAweDgwOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzTG9uZ0tleUxlbmd0aCh1aW50
OF90IGZpcnN0Qnl0ZSkKK3sKKyAgICByZXR1cm4gZmlyc3RCeXRlICYgMHgwODsKK30KKworc3Ry
dWN0IFNGcmFtZUhlYWRlckluZm8geworICAgIHVpbnQ4X3Qgc2l6ZTsKKyAgICB1aW50NjRfdCBr
ZXlJZDsKKyAgICB1aW50NjRfdCBjb3VudGVyOworfTsKK3N0YXRpYyBpbmxpbmUgT3B0aW9uYWw8
U0ZyYW1lSGVhZGVySW5mbz4gcGFyc2VTRnJhbWVIZWFkZXIoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCit7CisgICAgYXV0byogc3RhcnQgPSBkYXRhOworCisgICAgdWludDY0X3Qg
a2V5SWQgPSAwOworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSAwOworCisgICAgYXV0byBmaXJzdEJ5
dGUgPSAqZGF0YSsrOworCisgICAgLy8gU2lnbmF0dXJlIGJpdC4KKyAgICBpZiAoaGFzU2lnbmF0
dXJlKGZpcnN0Qnl0ZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBzaXplX3QgY291bnRl
ckxlbmd0aCA9ICgoZmlyc3RCeXRlID4+IDQpICYgMHgwNykgKyAxOworCisgICAgaWYgKHNpemUg
PCBjb3VudGVyTGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlmIChoYXNM
b25nS2V5TGVuZ3RoKGZpcnN0Qnl0ZSkpIHsKKyAgICAgICAgc2l6ZV90IGtleUxlbmd0aCA9IChm
aXJzdEJ5dGUgJiAweDA3KSArIDE7CisgICAgICAgIGlmIChzaXplIDwgY291bnRlckxlbmd0aCAr
IGtleUxlbmd0aCArIDEpCisgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgIGtleUlk
ID0gcmVhZFVJbnQ2NChkYXRhLCBrZXlMZW5ndGgpOworICAgICAgICBkYXRhICs9IGtleUxlbmd0
aDsKKworICAgICAgICBjb3VudGVyID0gcmVhZFVJbnQ2NChkYXRhLCBjb3VudGVyTGVuZ3RoKTsK
KyAgICAgICAgZGF0YSArPSBjb3VudGVyTGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAgIGtl
eUlkID0gZmlyc3RCeXRlICYgMHgwNzsKKyAgICAgICAgY291bnRlciA9IHJlYWRVSW50NjQoZGF0
YSwgY291bnRlckxlbmd0aCk7CisgICAgICAgIGRhdGEgKz0gY291bnRlckxlbmd0aDsKKyAgICB9
CisgICAgdWludDhfdCBoZWFkZXJTaXplID0gZGF0YSAtIHN0YXJ0OworICAgIHJldHVybiBTRnJh
bWVIZWFkZXJJbmZvIHsgaGVhZGVyU2l6ZSwga2V5SWQsIGNvdW50ZXIgfTsKK30KKworUmVmPFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcigpKTsK
K30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyKCkK
K3sKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1l
cigpCit7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpz
ZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1
aW50NjRfdD4ga2V5SWQpCit7CisgICAgYXV0byBzYWx0S2V5UmVzdWx0ID0gY29tcHV0ZVNhbHRL
ZXkocmF3S2V5KTsKKyAgICBpZiAoc2FsdEtleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIHNhbHRLZXlSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBh
dXRoZW50aWNhdGlvbktleVJlc3VsdCA9IGNvbXB1dGVBdXRoZW50aWNhdGlvbktleShyYXdLZXkp
OworICAgIGlmIChhdXRoZW50aWNhdGlvbktleVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKwor
ICAgIGF1dG8gZW5jcnlwdGlvbktleVJlc3VsdCA9IGNvbXB1dGVFbmNyeXB0aW9uS2V5KHJhd0tl
eSk7CisgICAgaWYgKGVuY3J5cHRpb25LZXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBlbmNyeXB0aW9uS2V5UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9rZXlMb2NrKTsKKworICAgIG1fc2FsdEtleSA9IHNhbHRL
ZXlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgbV9hdXRoZW50aWNhdGlvbktleSA9
IGF1dGhlbnRpY2F0aW9uS2V5UmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIG1fZW5j
cnlwdGlvbktleSA9IGVuY3J5cHRpb25LZXlSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisK
KyAgICBpZiAoa2V5SWQpCisgICAgICAgIG1fa2V5SWQgPSAqa2V5SWQ7CisKKyAgICBtX2hhc0tl
eSA9IHRydWU7CisgICAgcmV0dXJuIHsgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4
X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3Qq
IGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBz
aWduYXR1cmUuCisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fa2V5TG9jayk7CisKKyAg
ICBhdXRvIGhlYWRlciA9IHBhcnNlU0ZyYW1lSGVhZGVyKGZyYW1lRGF0YSwgZnJhbWVTaXplKTsK
KworICAgIGlmICghaGVhZGVyKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKKworICAgIGlmIChoZWFkZXItPmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1f
Y291bnRlcikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CisgICAgbV9jb3VudGVyID0gaGVhZGVyLT5jb3VudGVyOworCisgICAgaWYgKGhlYWRlci0+a2V5
SWQgIT0gbV9rZXlJZCkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHNlYXJjaCBmb3Ig
a2V5cy4KKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Cisg
ICAgfQorCisgICAgLy8gQ29tcHV0ZSBzaWduYXR1cmUKKyAgICBhdXRvKiB0cmFuc21pdHRlZFNp
Z25hdHVyZSA9IGZyYW1lRGF0YSArIGZyYW1lU2l6ZSAtIG1fYXV0aGVudGljYXRpb25TaXplOwor
ICAgIGF1dG8gc2lnbmF0dXJlID0gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoZnJhbWVE
YXRhLCBmcmFtZVNpemUgIC0gbV9hdXRoZW50aWNhdGlvblNpemUsIG1fYXV0aGVudGljYXRpb25L
ZXkpOworICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgbV9hdXRoZW50aWNhdGlvblNp
emU7ICsrY3B0cikgeworICAgICAgICBpZiAoc2lnbmF0dXJlW2NwdHJdICE9IHRyYW5zbWl0dGVk
U2lnbmF0dXJlW2NwdHJdKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSBy
YXRjaGV0aW5nLgorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yIH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBEZWNyeXB0IGRhdGEKKyAgICBhdXRv
IGl2ID0gY29tcHV0ZUlWKG1fY291bnRlciwgbV9zYWx0S2V5KTsKKyAgICBhdXRvIGRhdGFTaXpl
ID0gZnJhbWVTaXplIC0gaGVhZGVyLT5zaXplIC0gbV9hdXRoZW50aWNhdGlvblNpemU7CisgICAg
YXV0byByZXN1bHQgPSBkZWNyeXB0RGF0YShmcmFtZURhdGEgKyBoZWFkZXItPnNpemUsIGRhdGFT
aXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5KTsKKworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgcmV0
dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVp
bnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSkKK3sKKyAgICAvLyBGSVhNRTogU3Vw
cG9ydCBzaWduYXR1cmUuCisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWF4SGVhZGVyU2l6
ZSA9IDE3OworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2tleUxvY2spOworCisgICAg
YXV0byBpdiA9IGNvbXB1dGVJVihtX2NvdW50ZXIsIG1fc2FsdEtleSk7CisKKyAgICBWZWN0b3I8
dWludDhfdD4gdHJhbnNmb3JtZWREYXRhOworICAgIHRyYW5zZm9ybWVkRGF0YS5yZXNpemUoZnJh
bWVTaXplICsgTWF4SGVhZGVyU2l6ZSArIG1fYXV0aGVudGljYXRpb25TaXplKTsKKworICAgIC8v
IEZpbGwgaGVhZGVyLgorICAgIHNpemVfdCBoZWFkZXJTaXplID0gMTsKKyAgICB0cmFuc2Zvcm1l
ZERhdGFbMF0gPSBjb21wdXRlRmlyc3RIZWFkZXJCeXRlKG1fa2V5SWQsIG1fY291bnRlcik7Cisg
ICAgaWYgKG1fa2V5SWQgPj0gOCkgeworICAgICAgICBhdXRvIGtleUlkTGVuZ3RoID0gbGVuZ3Ro
T2ZVSW50NjQobV9rZXlJZCk7CisgICAgICAgIHdyaXRlVUludDY0KHRyYW5zZm9ybWVkRGF0YS5k
YXRhKCkgKyBoZWFkZXJTaXplLCBtX2tleUlkLCBrZXlJZExlbmd0aCk7CisgICAgICAgIGhlYWRl
clNpemUgKz0ga2V5SWRMZW5ndGg7CisgICAgfQorICAgIGF1dG8gY291bnRlckxlbmd0aCA9IGxl
bmd0aE9mVUludDY0KG1fY291bnRlcik7CisgICAgd3JpdGVVSW50NjQodHJhbnNmb3JtZWREYXRh
LmRhdGEoKSArIGhlYWRlclNpemUsIG1fY291bnRlciwgY291bnRlckxlbmd0aCk7CisgICAgaGVh
ZGVyU2l6ZSArPSBjb3VudGVyTGVuZ3RoOworCisgICAgdHJhbnNmb3JtZWREYXRhLnJlc2l6ZShm
cmFtZVNpemUgKyBoZWFkZXJTaXplICsgbV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgLy8g
RmlsbCBlbmNyeXB0ZWQgZGF0YQorICAgIGF1dG8gZW5jcnlwdGVkRGF0YSA9IGVuY3J5cHREYXRh
KGZyYW1lRGF0YSwgZnJhbWVTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5KTsKKyAgICBBU1NFUlQo
IWVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkpOworICAgIGlmIChlbmNyeXB0ZWREYXRhLmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZW5jcnlwdGVkRGF0YS5yZWxlYXNlRXhjZXB0
aW9uKCk7CisKKyAgICBzdGQ6Om1lbWNweSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpICsgaGVhZGVy
U2l6ZSwgZW5jcnlwdGVkRGF0YS5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgZnJhbWVTaXplKTsKKwor
ICAgIC8vIEZpbGwgc2lnbmF0dXJlCisgICAgYXV0byBzaWduYXR1cmUgPSBjb21wdXRlRW5jcnlw
dGVkRGF0YVNpZ25hdHVyZSh0cmFuc2Zvcm1lZERhdGEuZGF0YSgpLCBmcmFtZVNpemUgKyBoZWFk
ZXJTaXplLCBtX2F1dGhlbnRpY2F0aW9uS2V5KTsKKyAgICBzdGQ6Om1lbWNweSh0cmFuc2Zvcm1l
ZERhdGEuZGF0YSgpICsgZnJhbWVTaXplICsgaGVhZGVyU2l6ZSwgc2lnbmF0dXJlLmRhdGEoKSwg
bV9hdXRoZW50aWNhdGlvblNpemUpOworCisgICAgKyttX2NvdW50ZXI7CisKKyAgICByZXR1cm4g
dHJhbnNmb3JtZWREYXRhOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpCit7CisgICAgaWYgKCFtX2hhc0tleSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICByZXR1cm4gbV9pc1NlbmRpbmcgPyBlbmNyeXB0
RnJhbWUoZGF0YSwgc2l6ZSkgOiBkZWNyeXB0RnJhbWUoZGF0YSwgc2l6ZSk7Cit9CisKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjpjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mKQorewor
ICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworfQorCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0
aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y29tcHV0ZUVuY3J5cHRpb25LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9y
dGVkRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdERhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JikKK3sKKyAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdERhdGEoY29uc3QgdWlu
dDhfdCosIHNpemVfdCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JikKK3sKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKK30K
KworVmVjdG9yPHVpbnQ4X3Q+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlw
dGVkRGF0YVNpZ25hdHVyZShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mKQoreworICAgIHJldHVybiB7IH07Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09B
KQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMzEyYjdjYTIxNGZkYTYyZjZlODlj
ZjEyMDRiNTU5MDBhMzMyZmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCkBAIC0wLDAgKzEsOTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisj
aW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENyeXB0b0tleTsKKworY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBjcmVhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIoKTsKKworICAgIHZvaWQgc2V0SXNTZW5kaW5nKGJv
b2wpOworICAgIHZvaWQgc2V0SXNQcm9jZXNzaW5nQXVkaW8oYm9vbCk7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgcmF3S2V5LCBPcHRpb25hbDx1aW50NjRfdD4pOworICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpOworCisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhdXRoZW50aWNhdGlvbktleSgp
IGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRpb25LZXk7IH0KKyAgICBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGVuY3J5cHRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX2VuY3J5cHRpb25LZXk7
IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHRLZXkoKSBjb25zdCB7IHJldHVybiBt
X3NhbHRLZXk7IH0KKworICAgIHVpbnQ2NF90IGNvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
dW50ZXI7IH0KKyAgICB2b2lkIHNldENvdW50ZXIodWludDY0X3QgY291bnRlcikgeyBtX2NvdW50
ZXIgPSBjb3VudGVyOyB9CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIoKTsKKworICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVj
cnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOworCisgICAg
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBjb21wdXRlU2FsdEtleShjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGNvbXB1dGVBdXRo
ZW50aWNhdGlvbktleShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKKyAgICBFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IGNvbXB1dGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYpOworCisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBlbmNyeXB0RGF0YShjb25z
dCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSk7CisgICAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZWNy
eXB0RGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1
dGVFbmNyeXB0ZWREYXRhU2lnbmF0dXJlKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5KTsKKworICAgIExvY2sgbV9rZXlMb2NrOworICAgIGJvb2wgbV9o
YXNLZXkgeyBmYWxzZSB9OworICAgIFZlY3Rvcjx1aW50OF90PiBtX2F1dGhlbnRpY2F0aW9uS2V5
OworICAgIFZlY3Rvcjx1aW50OF90PiBtX2VuY3J5cHRpb25LZXk7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IG1fc2FsdEtleTsKKworICAgIGJvb2wgbV9pc1NlbmRpbmcgeyBmYWxzZSB9OworICAgIHVp
bnQ2NF90IG1fYXV0aGVudGljYXRpb25TaXplIHsgMTAgfTsKKyAgICB1aW50NjRfdCBtX2tleUlk
IHsgMCB9OworICAgIHVpbnQ2NF90IG1fY291bnRlciB7IDAgfTsKK307CisKK2lubGluZSB2b2lk
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpzZXRJc1NlbmRpbmcoYm9vbCBpc1NlbmRpbmcpCit7
CisgICAgbV9pc1NlbmRpbmcgPSBpc1NlbmRpbmc7Cit9CisKK2lubGluZSB2b2lkIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyOjpzZXRJc1Byb2Nlc3NpbmdBdWRpbyhib29sIGlzUHJvY2Vzc2luZ0F1
ZGlvKQoreworICAgIG1fYXV0aGVudGljYXRpb25TaXplID0gaXNQcm9jZXNzaW5nQXVkaW8gPyA0
IDogMTA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGMzZDQyNDgwMmUxOTNjYWQ3MGQyMWJjMjEzNzlmODUwZmIzNTc1YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXJDb2NvYS5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENS
dHBTRnJhbWVUcmFuc2Zvcm1lci5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRl
ICJDcnlwdG9VdGlsaXRpZXNDb2NvYS5oIgorI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25D
cnlwdG8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlU2FsdEtleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIHJhd0tleSkKK3sKKyAgICB1aW50OF90IHVzYWdlW10gPSAiU0ZyYW1lU2Fs
dEtleSI7CisgICAgcmV0dXJuIGRlcml2ZUhES0ZTSEEyNTZCaXRzKHJhd0tleS5kYXRhKCksIDE2
LCByYXdLZXkuZGF0YSgpICsgMTYsIHJhd0tleS5zaXplKCkgLSAxNiwgdXNhZ2UsIHNpemVvZih1
c2FnZSkgLSAxLCAxMjgpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlQXV0aGVudGljYXRpb25LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiByYXdLZXkpCit7CisgICAgdWludDhfdCB1c2FnZVtdID0gIlNGcmFtZUF1dGhl
bnRpY2F0aW9uS2V5IjsKKyAgICByZXR1cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRh
dGEoKSwgMTYsIHJhd0tleS5kYXRhKCkgKyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwg
c2l6ZW9mKHVzYWdlKSAtIDEsIDI1Nik7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmNvbXB1dGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgcmF3S2V5KQoreworICAgIHVpbnQ4X3QgdXNhZ2VbXSA9ICJTRnJhbWVF
bmNyeXB0aW9uS2V5IjsKKyAgICByZXR1cm4gZGVyaXZlSERLRlNIQTI1NkJpdHMocmF3S2V5LmRh
dGEoKSwgMTYsIHJhd0tleS5kYXRhKCkgKyAxNiwgcmF3S2V5LnNpemUoKSAtIDE2LCB1c2FnZSwg
c2l6ZW9mKHVzYWdlKSAtIDEsIDEyOCk7Cit9CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSkKK3sKKyAgICByZXR1cm4gdHJhbnNmb3JtQUVTX0NUUihrQ0NEZWNyeXB0
LCBpdiwgaXYuc2l6ZSgpLCBrZXksIGRhdGEsIHNpemUpOworfQorCitFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjplbmNyeXB0RGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpCit7CisgICAgcmV0dXJuIHRyYW5zZm9ybUFFU19DVFIo
a0NDRW5jcnlwdCwgaXYsIGl2LnNpemUoKSwga2V5LCBkYXRhLCBzaXplKTsKK30KKworVmVjdG9y
PHVpbnQ4X3Q+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpjb21wdXRlRW5jcnlwdGVkRGF0YVNp
Z25hdHVyZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXkpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChDQ19TSEEyNTZfRElH
RVNUX0xFTkdUSCk7CisgICAgQ0NIbWFjKGtDQ0htYWNBbGdTSEEyNTYsIGtleS5kYXRhKCksIGtl
eS5zaXplKCksIGRhdGEsIHNpemUsIHJlc3VsdC5kYXRhKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCAyMGM0MzY4ZDBkNjUyYmI5MDM4YjAwNmYyMTQ5YjQxZmExMTQ2
MjdkLi41ZGY4ZDVhYjRhMDBiN2IxMmFjNGYwZTQ0NDg1Y2U0NmQyNzQ5MDA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMTYzLDYgKzE2Myw4IEBAIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlVHJhbnNw
b3J0LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudC5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBUcmFuc2NlaXZlci5jcHAKQEAgLTMzMjAsNiArMzMyMiw3IEBAIEpTUlRDUnRwSGVhZGVyRXh0
ZW5zaW9uUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwUmVj
ZWl2ZXIuY3BwCiBKU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCitKU1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5jcHAKIEpTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNlbmRlci5jcHAK
IEpTUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggM2QyOGM3YjkyOGRiZmI5MmQzYmRmOThjNjVlNjgxMmI0NmVhN2FhZC4uMmIzM2M0YmNl
NzRkZGVhZDgxOGJhM2NiMmE0NDkzMTU0NmI1OWE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
CkBAIC04OSw2ICs4OSw3IEBAIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJ
dGVtc0NvY29hLm1tCiBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFn
ZVJlYWRlck1hYy5tbQorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ckNvY29hLmNwcAogTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1t
CiBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAogTW9kdWxlcy93
ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQpAQCAtMTI4LDYgKzEyOSw3
IEBAIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlNYWMuY3BwCiBjcnlwdG8vbWFj
L0NyeXB0b0tleUVDTWFjLmNwcAogY3J5cHRvL21hYy9DcnlwdG9LZXlNYWMuY3BwCiBjcnlwdG8v
bWFjL0NyeXB0b0tleVJTQU1hYy5jcHAKK2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2Eu
Y3BwCiBjcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCiBkb20vRGF0YVRy
YW5zZmVyTWFjLm1tCiBkb20vaW9zL01vdXNlRXZlbnRJT1MuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWM0MDg5N2Y1MDgy
ODIwNjc3NjVkZmMwNDQxOTAwYzE1OWVlYjM5Yy4uYTA0MTQ4Y2E4ZjI4ZjFkMjljMGMyNmIyZTVl
ZDE2NDIwM2JjMzZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTEwOCw2ICsxMTA4LDggQEAKIAkJNDE4MUM1RDYyNTU1QzFC
OTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNUQ1MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2Nr
UlRDUnRwVHJhbnNmb3JtLmggKi87IH07CiAJCTQxODFDNUQ3MjU1NUM0OUEwMEFFQjBGRiAvKiBN
b2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxODFDNUQzMjU1NUMxQjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNm
b3JtLmNwcCAqLzsgfTsKIAkJNDE4MUM2MzkyNTVBRTkwRjAwQUVCMEZGIC8qIEpTTW9ja1JUQ1J0
cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDZGM0U5MjFDMUY4NTU1MDA2MURCRTQgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNw
cCAqLzsgfTsKKwkJNDE4MUM2NDgyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTgxQzY0MjI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTgxQzY0QTI1
NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzY0NDI1NUI0QzI3MDBBRUIwRkYg
LyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggKi87IH07CiAJCTQxODIwNTQ3MUU1M0U5OEMwMEQ2
MjIwNyAvKiBSVENDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTgyMDU0NTFFNTNDOENEMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODI2
QkYyMjNGQjU5NzcwMEI5MjJCMSAvKiBEb2N1bWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODI2QkYxMjNGQjU5NzAwMEI5MjJC
MSAvKiBEb2N1bWVudElkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0MTg0RjUxNjFFQUYwNUE4MDBGMThCRjAgLyogT3JpZW50YXRp
b25Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4NEY1MTUxRUFGMDU5ODAwRjE4QkYwIC8qIE9yaWVudGF0aW9uTm90aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzY5OCw2ICs3
NzAwLDEyIEBACiAJCTQxODFDNUQzMjU1NUMxQjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNm
b3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSVENSdHBU
cmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzVENTI1NTVD
MUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxODFDNjM2MjU1QUUyNjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3Jt
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxODFDNjQxMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxODFDNjQyMjU1QjRDMjYw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTgxQzY0MzI1NUI0QzI3MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0u
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTgxQzY0NDI1NUI0QzI3MDBBRUIw
RkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTgxQzY0NTI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODIwNTQ1MUU1M0M4Q0Qw
MEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJUQ0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MjA1
NDgxRTUzRUFBRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUlRDQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxODI2QkYxMjNGQjU5NzAwMEI5MjJCMSAvKiBEb2N1bWVudElkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzMxLDYgKzc3MzksOCBAQAogCQk0
MTlCQzJEQzE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0
ZWRMaW5rU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaXRlZExp
bmtTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlCRTc1MjFCQzdGM0RC
MDBFMUM4NUIgLyogV2ViQ29yZUJ1aWx0aW5OYW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb3JlQnVpbHRpbk5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxOUQ5MzA1MjU1RTg0MjcwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRpZXNDb2NvYS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcnlwdG9VdGlsaXRpZXNDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTlEOTMwNzI1NUU4NDI4MDBEQTE5ODQgLyogQ3J5cHRvVXRpbGl0aWVz
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlGQUZBRDFBQkFCQ0Q1MDA1QjM1NzIgLyog
UmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFk
YWJsZVN0cmVhbUJZT0JSZWFkZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTlGQUZBRDFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwMjNFRDFBMzlEQjc5MDBGNzIyQ0Yg
LyogUmVhZGFibGVTdHJlYW0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlYWRhYmxlU3Ry
ZWFtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDg4LDYgKzE3MDk4LDEy
IEBACiAJCQkJNDEzQzhCMkUyNTUyRjI3QjAwRTY1MDU1IC8qIFJUQ1J0cFNlbmRlcldpdGhUcmFu
c2Zvcm0uaCAqLywKIAkJCQk0MTRBRDNGQzIxNDk4NDIwMDA1MjE2NzYgLyogUlRDUnRwU2VuZFBh
cmFtZXRlcnMuaCAqLywKIAkJCQk0MTRBRDNGRTIxNDk4NDIwMDA1MjE2NzYgLyogUlRDUnRwU2Vu
ZFBhcmFtZXRlcnMuaWRsICovLAorCQkJCTQxODFDNjQ1MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwICovLAorCQkJCTQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAv
KiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCAqLywKKwkJCQk0MTgxQzY0MzI1NUI0QzI3MDBBRUIw
RkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbCAqLywKKwkJCQk0MTgxQzY0MTI1NUI0QzI2
MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwICovLAorCQkJCTQxODFDNjQy
MjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovLAorCQkJCTQx
ODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNw
cCAqLywKIAkJCQk0MTVFMUJCNjIxNTAxNTJBMDAyMkRBOTYgLyogUlRDUnRwU3luY2hyb25pemF0
aW9uU291cmNlLmggKi8sCiAJCQkJNDE1RTFCQjcyMTUwMTUzMDAwMjJEQTk2IC8qIFJUQ1J0cFN5
bmNocm9uaXphdGlvblNvdXJjZS5pZGwgKi8sCiAJCQkJNUU1RTJCMTAxQ0ZDM0U0QjAwMEMwRDg1
IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNwcCAqLywKQEAgLTI4MjU1LDYgKzI4MjcxLDggQEAKIAkJ
CQk1NzUwQTk3QTFFNjkxNjE2MDA3MDVDNEEgLyogQ3J5cHRvS2V5RUNNYWMuY3BwICovLAogCQkJ
CUUxOUFDM0Y4MTgyNTY2RjcwMDM0OTQyNiAvKiBDcnlwdG9LZXlNYWMuY3BwICovLAogCQkJCUUx
NjRGQUE0MTgzMTVFMUEwMERCNEU2MSAvKiBDcnlwdG9LZXlSU0FNYWMuY3BwICovLAorCQkJCTQx
OUQ5MzA3MjU1RTg0MjgwMERBMTk4NCAvKiBDcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAgKi8sCisJ
CQkJNDE5RDkzMDUyNTVFODQyNzAwREExOTg0IC8qIENyeXB0b1V0aWxpdGllc0NvY29hLmggKi8s
CiAJCQkJRTE4REYzMzYxOEFBRjE0RDAwNzczRTU5IC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFw
TWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBAIC0zNDA5Myw2ICszNDExMSw4IEBA
CiAJCQkJNDEzQzhCMzUyNTUyRjI3RDAwRTY1MDU1IC8qIFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5z
Zm9ybS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUUyQzQzNjExQkNFRTMyMzAwMDFFMkJDIC8qIFJU
Q1J0cFNlbmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQzhCMzMyNTUyRjI3RDAwRTY1MDU1
IC8qIFJUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAorCQkJCTQxODFD
NjRBMjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQxODFDNjQ4MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUU1RTJCMTQxQ0ZDM0U3NTAwMEMwRDg1IC8qIFJU
Q1J0cFRyYW5zY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUVCNTRERjFFN0RDNzQ0MDBD
MTYyM0IgLyogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQxM0M4QjM0MjU1MkYyN0QwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCmluZGV4IDVhZTczNGQ5MDkwYzBkMGY3NTQ0ZDE0ZjZjYmJkMzEzMTM0ZjEyYjguLjE0ZDZk
ZjQ3MjE4MjFjZTU5MTJmMTU4ZWM0MTAwMzI5ZjM2YmUwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTIxOSw2ICsyMTksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb24pIFwKICAg
ICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSBcCiAgICAgbWFjcm8oUlRDUnRwUmVj
ZWl2ZXIpIFwKKyAgICBtYWNybyhSVENSdHBTRnJhbWVUcmFuc2Zvcm0pIFwKICAgICBtYWNybyhS
VENSdHBTZW5kZXIpIFwKICAgICBtYWNybyhSVENSdHBUcmFuc2NlaXZlcikgXAogICAgIG1hY3Jv
KFJUQ1J0cFRyYW5zZm9ybSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1BRVNfQ1RSTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUk1hYy5jcHAKaW5kZXggY2M0MWRhNjViMGRhYzljOGI1
ZGIxYTBlNDJmZTAyMDBiNTI4ZWEzOC4uNzU3OWU0MGFlMzdjYWNlNDIyYTA2ZTNmZWM1ZWVlNjRm
MDJmMWFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1BRVNfQ1RSTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUFFU19DVFJNYWMuY3BwCkBAIC0zMSwxMDAgKzMxLDIzIEBACiAKICNpbmNsdWRl
ICJDcnlwdG9BbGdvcml0aG1BZXNDdHJQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlBRVMu
aCIKLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisjaW5jbHVkZSAiQ3J5
cHRvVXRpbGl0aWVzQ29jb2EuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiB0cmFuc2Zvcm1BRVNfQ1RSKENDT3BlcmF0aW9uIG9w
ZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXplX3QgY291bnRlckxl
bmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKLXsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGhh
Y2sgb25jZSA8cmRhcjovL3Byb2JsZW0vMzEzNjEwNTA+IGlzIGZpeGVkLgotICAgIC8vIGNvdW50
ZXIgPSBub25jZSArIGNvdW50ZXIKLSAgICAvLyBDb21tb25DcnlwdG8gY3VycmVudGx5IGNhbiBu
ZWl0aGVyIHJlc2V0IHRoZSBjb3VudGVyIG5vciBkZXRlY3Qgb3ZlcmZsb3cgb25jZSB0aGUgY291
bnRlciByZWFjaGVzIGl0cyBtYXggdmFsdWUgcmVzdHJpY3RlZAotICAgIC8vIGJ5IHRoZSBjb3Vu
dGVyTGVuZ3RoLiBJdCB0aGVuIGluY3JlbWVudHMgdGhlIG5vbmNlIHdoaWNoIHNob3VsZCBzdGF5
IHNhbWUgZm9yIHRoZSB3aG9sZSBvcGVyYXRpb24uIFRvIHJlbWVkeSB0aGlzIGlzc3VlLAotICAg
IC8vIHdlIGRldGVjdCB0aGUgb3ZlcmZsb3cgYWhlYWQgYW5kIGRpdmlkZSB0aGUgb3BlcmF0aW9u
IGludG8gdHdvIHBhcnRzLgotICAgIHNpemVfdCBudW1iZXJPZkJsb2NrcyA9IGRhdGEuc2l6ZSgp
ICUga0NDQmxvY2tTaXplQUVTMTI4ID8gZGF0YS5zaXplKCkgLyBrQ0NCbG9ja1NpemVBRVMxMjgg
KyAxIDogZGF0YS5zaXplKCkgLyBrQ0NCbG9ja1NpemVBRVMxMjg7Ci0KLSAgICAvLyBEZXRlY3Qg
bG9vcAotICAgIGlmIChjb3VudGVyTGVuZ3RoIDwgc2l6ZW9mKHNpemVfdCkgKiA4ICYmIG51bWJl
ck9mQmxvY2tzID4gKHN0YXRpY19jYXN0PHNpemVfdD4oMSkgPDwgY291bnRlckxlbmd0aCkpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotCi0gICAgLy8gQ2Fs
Y3VsYXRlIGNhcGFjaXR5IGJlZm9yZSBvdmVyZmxvdwotICAgIENyeXB0b0FsZ29yaXRobUFFU19D
VFI6OkNvdW50ZXJCbG9ja0hlbHBlciBjb3VudGVyQmxvY2tIZWxwZXIoY291bnRlciwgY291bnRl
ckxlbmd0aCk7Ci0gICAgc2l6ZV90IGNhcGFjaXR5ID0gY291bnRlckJsb2NrSGVscGVyLmNvdW50
VG9PdmVyZmxvd1NhdHVyYXRpbmcoKTsKLQotICAgIC8vIERpdmlkZSBkYXRhIGludG8gdHdvIHBh
cnRzIGlmIG5lY2Vzc2FyeS4KLSAgICBzaXplX3QgaGVhZFNpemUgPSBkYXRhLnNpemUoKTsKLSAg
ICBpZiAoY2FwYWNpdHkgPCBudW1iZXJPZkJsb2NrcykKLSAgICAgICAgaGVhZFNpemUgPSBjYXBh
Y2l0eSAqIGtDQ0Jsb2NrU2l6ZUFFUzEyODsKLQotICAgIC8vIGZpcnN0IHBhcnQ6IGNvbXB1dGUg
dGhlIGZpcnN0IG49Y2FwYWNpdHkgYmxvY2tzIG9mIGRhdGEgaWYgY2FwYWNpdHkgaXMgaW5zdWZm
aWNpZW50LiBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0LgotICAgIENDQ3J5cHRvclJlZiBj
cnlwdG9yOwotICAgIENDQ3J5cHRvclN0YXR1cyBzdGF0dXMgPSBDQ0NyeXB0b3JDcmVhdGVXaXRo
TW9kZShvcGVyYXRpb24sIGtDQ01vZGVDVFIsIGtDQ0FsZ29yaXRobUFFUzEyOCwgY2NOb1BhZGRp
bmcsIGNvdW50ZXIuZGF0YSgpLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpLCAwLCAwLCAwLCBrQ0NN
b2RlT3B0aW9uQ1RSX0JFLCAmY3J5cHRvcik7Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICBWZWN0b3I8dWludDhfdD4g
aGVhZChDQ0NyeXB0b3JHZXRPdXRwdXRMZW5ndGgoY3J5cHRvciwgaGVhZFNpemUsIHRydWUpKTsK
LQotICAgIHNpemVfdCBieXRlc1dyaXR0ZW47Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yVXBkYXRl
KGNyeXB0b3IsIGRhdGEuZGF0YSgpLCBoZWFkU2l6ZSwgaGVhZC5kYXRhKCksIGhlYWQuc2l6ZSgp
LCAmYnl0ZXNXcml0dGVuKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLQotICAgIHVpbnQ4X3QqIHAgPSBoZWFkLmRhdGEoKSAr
IGJ5dGVzV3JpdHRlbjsKLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCBo
ZWFkLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7Ci0gICAgcCArPSBieXRlc1dyaXR0ZW47Ci0g
ICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07Ci0KLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IGhlYWQuZW5k
KCkpOwotICAgIGhlYWQuc2hyaW5rKHAgLSBoZWFkLmJlZ2luKCkpOwotCi0gICAgQ0NDcnlwdG9y
UmVsZWFzZShjcnlwdG9yKTsKLQotICAgIGlmIChjYXBhY2l0eSA+PSBudW1iZXJPZkJsb2NrcykK
LSAgICAgICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7Ci0KLSAgICAvLyBzZWNvbmQgcGFydDogY29t
cHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBoZWFkLgotICAg
IC8vIHJlc2V0IGNvdW50ZXIKLSAgICBWZWN0b3I8dWludDhfdD4gcmVtYWluaW5nQ291bnRlciA9
IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygpOwotICAgIHN0
YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9kZUNUUiwga0ND
QWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgcmVtYWluaW5nQ291bnRlci5kYXRhKCksIGtl
eS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtDQ01vZGVPcHRpb25DVFJfQkUsICZjcnlw
dG9yKTsKLSAgICBpZiAoc3RhdHVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKLQotICAgIHNpemVfdCB0YWlsU2l6ZSA9IGRhdGEuc2l6ZSgpIC0gaGVhZFNp
emU7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHRhaWwoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNy
eXB0b3IsIHRhaWxTaXplLCB0cnVlKSk7Ci0KLSAgICBzdGF0dXMgPSBDQ0NyeXB0b3JVcGRhdGUo
Y3J5cHRvciwgZGF0YS5kYXRhKCkgKyBoZWFkU2l6ZSwgdGFpbFNpemUsIHRhaWwuZGF0YSgpLCB0
YWlsLnNpemUoKSwgJmJ5dGVzV3JpdHRlbik7Ci0gICAgaWYgKHN0YXR1cykKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0KLSAgICBwID0gdGFpbC5kYXRhKCkg
KyBieXRlc1dyaXR0ZW47Ci0gICAgc3RhdHVzID0gQ0NDcnlwdG9yRmluYWwoY3J5cHRvciwgcCwg
dGFpbC5lbmQoKSAtIHAsICZieXRlc1dyaXR0ZW4pOwotICAgIHAgKz0gYnl0ZXNXcml0dGVuOwot
ICAgIGlmIChzdGF0dXMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJv
ciB9OwotCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocCA8PSB0YWlsLmVu
ZCgpKTsKLSAgICB0YWlsLnNocmluayhwIC0gdGFpbC5iZWdpbigpKTsKLQotICAgIENDQ3J5cHRv
clJlbGVhc2UoY3J5cHRvcik7Ci0KLSAgICBoZWFkLmFwcGVuZFZlY3Rvcih0YWlsKTsKLSAgICBy
ZXR1cm4gV1RGTW92ZShoZWFkKTsKLX0KLQogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBD
cnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpwbGF0Zm9ybUVuY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtQWVzQ3RyUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMu
Y291bnRlclZlY3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOwotICAgIHJldHVy
biB0cmFuc2Zvcm1BRVNfQ1RSKGtDQ0VuY3J5cHQsIHBhcmFtZXRlcnMuY291bnRlclZlY3Rvcigp
LCBwYXJhbWV0ZXJzLmxlbmd0aCwga2V5LmtleSgpLCBwbGFpblRleHQpOworICAgIHJldHVybiB0
cmFuc2Zvcm1BRVNfQ1RSKGtDQ0VuY3J5cHQsIHBhcmFtZXRlcnMuY291bnRlclZlY3RvcigpLCBw
YXJhbWV0ZXJzLmxlbmd0aCwga2V5LmtleSgpLCBwbGFpblRleHQuZGF0YSgpLCBwbGFpblRleHQu
c2l6ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1BRVNfQ1RSOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ3RyUGFy
YW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMmIGtleSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBjaXBoZXJUZXh0KQogewotICAgICAgQVNTRVJUKHBhcmFtZXRlcnMuY291bnRlclZl
Y3RvcigpLnNpemUoKSA9PSBrQ0NCbG9ja1NpemVBRVMxMjgpOwotICAgIHJldHVybiB0cmFuc2Zv
cm1BRVNfQ1RSKGtDQ0RlY3J5cHQsIHBhcmFtZXRlcnMuY291bnRlclZlY3RvcigpLCBwYXJhbWV0
ZXJzLmxlbmd0aCwga2V5LmtleSgpLCBjaXBoZXJUZXh0KTsKKyAgICBBU1NFUlQocGFyYW1ldGVy
cy5jb3VudGVyVmVjdG9yKCkuc2l6ZSgpID09IGtDQ0Jsb2NrU2l6ZUFFUzEyOCk7CisgICAgcmV0
dXJuIHRyYW5zZm9ybUFFU19DVFIoa0NDRGVjcnlwdCwgcGFyYW1ldGVycy5jb3VudGVyVmVjdG9y
KCksIHBhcmFtZXRlcnMubGVuZ3RoLCBrZXkua2V5KCksIGNpcGhlclRleHQuZGF0YSgpLCBjaXBo
ZXJUZXh0LnNpemUoKSk7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcAppbmRleCA2Y2FhNWYzY2JlNTM5ZmU2NTRjYjdh
OWZlZmVkOTRiOWE3MmQ1NzMxLi5kODAzNzE2MTZiODM1NmRmNGUxOGM4ZjllMTY4ZDM1ZDRiZTE3
MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bUhLREZNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtSEtERk1hYy5jcHAKQEAgLTI4LDI1ICsyOCwxOCBAQAogCiAjaWYgRU5BQkxFKFdFQl9DUllQ
VE8pCiAKLSNpbmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1Ia2RmUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5j
bHVkZSAiQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBF
eGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3Jt
RGVyaXZlQml0cyhjb25zdCBDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXlSYXcmIGtleSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOwogICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFs
Z29yaXRobTsKICAgICBnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0ocGFyYW1ldGVycy5o
YXNoSWRlbnRpZmllciwgZGlnZXN0QWxnb3JpdGhtKTsKIAotICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCi0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMyNDM5NDU1PiBDdXJy
ZW50bHksIHdoZW4ga2V5IGRhdGEgaXMgZW1wdHksIENDS2V5RGVyaXZhdGlvbkhNYWMgd2lsbCBi
YWlsIG91dC4KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vNDg4OTYwMjE+IFJlbWluZGVyOiBTd2l0
Y2ggdG8gQ0NEZXJpdmVLZXkgbm93IHRoYXQgQ0NLZXlEZXJpdmF0aW9uSE1hYyBpcyBkZXByZWNh
dGVkLgotICAgIGlmIChDQ0tleURlcml2YXRpb25ITWFjKGtDQ0tERkFsZ29yaXRobUhLREYsIGRp
Z2VzdEFsZ29yaXRobSwgMCwga2V5LmtleSgpLmRhdGEoKSwga2V5LmtleSgpLnNpemUoKSwgMCwg
MCwgcGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuZGF0YSgpLCBwYXJhbWV0ZXJzLmluZm9WZWN0b3Io
KS5zaXplKCksIDAsIDAsIHBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgcGFyYW1ldGVy
cy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKSkKLSAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKKyAg
ICByZXR1cm4gZGVyaXZlSERLRkJpdHMoZGlnZXN0QWxnb3JpdGhtLCBrZXkua2V5KCkuZGF0YSgp
LCBrZXkua2V5KCkuc2l6ZSgpLCBwYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCksIHBhcmFt
ZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuZGF0YSgp
LCBwYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5zaXplKCksIGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdmMGIwY2RkMmE2ODk3N2ZkOGU5OGZiYWI4Yzc5ZTMxMWY1NTdmMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29j
b2EuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNyeXB0b1V0aWxpdGllc0NvY29hLmgiCisKKyNpZiBFTkFCTEUoV0VCX0NS
WVBUTykgfHwgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BRVNf
Q1RSLmgiCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gdHJhbnNmb3JtQUVT
X0NUUihDQ09wZXJhdGlvbiBvcGVyYXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRl
ciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCit7CisgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBoYWNrIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzMxMzYx
MDUwPiBpcyBmaXhlZC4KKyAgICAvLyBjb3VudGVyID0gbm9uY2UgKyBjb3VudGVyCisgICAgLy8g
Q29tbW9uQ3J5cHRvIGN1cnJlbnRseSBjYW4gbmVpdGhlciByZXNldCB0aGUgY291bnRlciBub3Ig
ZGV0ZWN0IG92ZXJmbG93IG9uY2UgdGhlIGNvdW50ZXIgcmVhY2hlcyBpdHMgbWF4IHZhbHVlIHJl
c3RyaWN0ZWQKKyAgICAvLyBieSB0aGUgY291bnRlckxlbmd0aC4gSXQgdGhlbiBpbmNyZW1lbnRz
IHRoZSBub25jZSB3aGljaCBzaG91bGQgc3RheSBzYW1lIGZvciB0aGUgd2hvbGUgb3BlcmF0aW9u
LiBUbyByZW1lZHkgdGhpcyBpc3N1ZSwKKyAgICAvLyB3ZSBkZXRlY3QgdGhlIG92ZXJmbG93IGFo
ZWFkIGFuZCBkaXZpZGUgdGhlIG9wZXJhdGlvbiBpbnRvIHR3byBwYXJ0cy4KKyAgICBzaXplX3Qg
bnVtYmVyT2ZCbG9ja3MgPSBkYXRhU2l6ZSAlIGtDQ0Jsb2NrU2l6ZUFFUzEyOCA/IGRhdGFTaXpl
IC8ga0NDQmxvY2tTaXplQUVTMTI4ICsgMSA6IGRhdGFTaXplIC8ga0NDQmxvY2tTaXplQUVTMTI4
OworCisgICAgLy8gRGV0ZWN0IGxvb3AKKyAgICBpZiAoY291bnRlckxlbmd0aCA8IHNpemVvZihz
aXplX3QpICogOCAmJiBudW1iZXJPZkJsb2NrcyA+IChzdGF0aWNfY2FzdDxzaXplX3Q+KDEpIDw8
IGNvdW50ZXJMZW5ndGgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKKworICAgIC8vIENhbGN1bGF0ZSBjYXBhY2l0eSBiZWZvcmUgb3ZlcmZsb3cKKyAgICBD
cnlwdG9BbGdvcml0aG1BRVNfQ1RSOjpDb3VudGVyQmxvY2tIZWxwZXIgY291bnRlckJsb2NrSGVs
cGVyKGNvdW50ZXIsIGNvdW50ZXJMZW5ndGgpOworICAgIHNpemVfdCBjYXBhY2l0eSA9IGNvdW50
ZXJCbG9ja0hlbHBlci5jb3VudFRvT3ZlcmZsb3dTYXR1cmF0aW5nKCk7CisKKyAgICAvLyBEaXZp
ZGUgZGF0YSBpbnRvIHR3byBwYXJ0cyBpZiBuZWNlc3NhcnkuCisgICAgc2l6ZV90IGhlYWRTaXpl
ID0gZGF0YVNpemU7CisgICAgaWYgKGNhcGFjaXR5IDwgbnVtYmVyT2ZCbG9ja3MpCisgICAgICAg
IGhlYWRTaXplID0gY2FwYWNpdHkgKiBrQ0NCbG9ja1NpemVBRVMxMjg7CisKKyAgICAvLyBmaXJz
dCBwYXJ0OiBjb21wdXRlIHRoZSBmaXJzdCBuPWNhcGFjaXR5IGJsb2NrcyBvZiBkYXRhIGlmIGNh
cGFjaXR5IGlzIGluc3VmZmljaWVudC4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlc3VsdC4KKyAg
ICBDQ0NyeXB0b3JSZWYgY3J5cHRvcjsKKyAgICBDQ0NyeXB0b3JTdGF0dXMgc3RhdHVzID0gQ0ND
cnlwdG9yQ3JlYXRlV2l0aE1vZGUob3BlcmF0aW9uLCBrQ0NNb2RlQ1RSLCBrQ0NBbGdvcml0aG1B
RVMxMjgsIGNjTm9QYWRkaW5nLCBjb3VudGVyLmRhdGEoKSwga2V5LmRhdGEoKSwga2V5LnNpemUo
KSwgMCwgMCwgMCwga0NDTW9kZU9wdGlvbkNUUl9CRSwgJmNyeXB0b3IpOworICAgIGlmIChzdGF0
dXMpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IGhlYWQoQ0NDcnlwdG9yR2V0T3V0cHV0TGVuZ3RoKGNyeXB0b3IsIGhl
YWRTaXplLCB0cnVlKSk7CisKKyAgICBzaXplX3QgYnl0ZXNXcml0dGVuOworICAgIHN0YXR1cyA9
IENDQ3J5cHRvclVwZGF0ZShjcnlwdG9yLCBkYXRhLCBoZWFkU2l6ZSwgaGVhZC5kYXRhKCksIGhl
YWQuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHVpbnQ4X3QqIHAgPSBoZWFk
LmRhdGEoKSArIGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlw
dG9yLCBwLCBoZWFkLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7CisgICAgcCArPSBieXRlc1dy
aXR0ZW47CisgICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yIH07CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9
IGhlYWQuZW5kKCkpOworICAgIGhlYWQuc2hyaW5rKHAgLSBoZWFkLmJlZ2luKCkpOworCisgICAg
Q0NDcnlwdG9yUmVsZWFzZShjcnlwdG9yKTsKKworICAgIGlmIChjYXBhY2l0eSA+PSBudW1iZXJP
ZkJsb2NrcykKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaGVhZCk7CisKKyAgICAvLyBzZWNvbmQg
cGFydDogY29tcHV0ZSB0aGUgcmVtYWluaW5nIGRhdGEgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBo
ZWFkLgorICAgIC8vIHJlc2V0IGNvdW50ZXIKKyAgICBWZWN0b3I8dWludDhfdD4gcmVtYWluaW5n
Q291bnRlciA9IGNvdW50ZXJCbG9ja0hlbHBlci5jb3VudGVyVmVjdG9yQWZ0ZXJPdmVyZmxvdygp
OworICAgIHN0YXR1cyA9IENDQ3J5cHRvckNyZWF0ZVdpdGhNb2RlKG9wZXJhdGlvbiwga0NDTW9k
ZUNUUiwga0NDQWxnb3JpdGhtQUVTMTI4LCBjY05vUGFkZGluZywgcmVtYWluaW5nQ291bnRlci5k
YXRhKCksIGtleS5kYXRhKCksIGtleS5zaXplKCksIDAsIDAsIDAsIGtDQ01vZGVPcHRpb25DVFJf
QkUsICZjcnlwdG9yKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHNpemVfdCB0YWlsU2l6ZSA9IGRhdGFTaXplIC0g
aGVhZFNpemU7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHRhaWwoQ0NDcnlwdG9yR2V0T3V0cHV0TGVu
Z3RoKGNyeXB0b3IsIHRhaWxTaXplLCB0cnVlKSk7CisKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JV
cGRhdGUoY3J5cHRvciwgZGF0YSArIGhlYWRTaXplLCB0YWlsU2l6ZSwgdGFpbC5kYXRhKCksIHRh
aWwuc2l6ZSgpLCAmYnl0ZXNXcml0dGVuKTsKKyAgICBpZiAoc3RhdHVzKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHAgPSB0YWlsLmRhdGEoKSAr
IGJ5dGVzV3JpdHRlbjsKKyAgICBzdGF0dXMgPSBDQ0NyeXB0b3JGaW5hbChjcnlwdG9yLCBwLCB0
YWlsLmVuZCgpIC0gcCwgJmJ5dGVzV3JpdHRlbik7CisgICAgcCArPSBieXRlc1dyaXR0ZW47Cisg
ICAgaWYgKHN0YXR1cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CisKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwIDw9IHRhaWwuZW5k
KCkpOworICAgIHRhaWwuc2hyaW5rKHAgLSB0YWlsLmJlZ2luKCkpOworCisgICAgQ0NDcnlwdG9y
UmVsZWFzZShjcnlwdG9yKTsKKworICAgIGhlYWQuYXBwZW5kVmVjdG9yKHRhaWwpOworICAgIHJl
dHVybiBXVEZNb3ZlKGhlYWQpOworfQorCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IGRl
cml2ZUhES0ZCaXRzKENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobSwgY29uc3QgdWlu
dDhfdCoga2V5LCBzaXplX3Qga2V5U2l6ZSwgY29uc3QgdWludDhfdCogc2FsdCwgc2l6ZV90IHNh
bHRTaXplLCBjb25zdCB1aW50OF90KiBpbmZvLCBzaXplX3QgaW5mb1NpemUsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKKyAgICBWZWN0
b3I8dWludDhfdD4gaW5mb1ZlY3RvcjsKKworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMyNDM5NDU1PiBDdXJyZW50bHksIHdo
ZW4ga2V5IGRhdGEgaXMgZW1wdHksIENDS2V5RGVyaXZhdGlvbkhNYWMgd2lsbCBiYWlsIG91dC4K
KyAgICAvLyA8cmRhcjovL3Byb2JsZW0vNDg4OTYwMjE+IFJlbWluZGVyOiBTd2l0Y2ggdG8gQ0NE
ZXJpdmVLZXkgbm93IHRoYXQgQ0NLZXlEZXJpdmF0aW9uSE1hYyBpcyBkZXByZWNhdGVkLgorICAg
IGlmIChDQ0tleURlcml2YXRpb25ITWFjKGtDQ0tERkFsZ29yaXRobUhLREYsIGRpZ2VzdEFsZ29y
aXRobSwgMCwga2V5LCBrZXlTaXplLCAwLCAwLCBpbmZvLCBpbmZvU2l6ZSwgMCwgMCwgc2FsdCwg
c2FsdFNpemUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworfQorCitFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IGRlcml2ZUhES0ZTSEEyNTZCaXRzKGNvbnN0IHVpbnQ4X3QqIGtl
eSwgc2l6ZV90IGtleVNpemUsIGNvbnN0IHVpbnQ4X3QqIHNhbHQsIHNpemVfdCBzYWx0U2l6ZSwg
Y29uc3QgdWludDhfdCogaW5mbywgc2l6ZV90IGluZm9TaXplLCBzaXplX3QgbGVuZ3RoKQorewor
ICAgIHJldHVybiBkZXJpdmVIREtGQml0cyhrQ0NEaWdlc3RTSEEyNTYsIGtleSwga2V5U2l6ZSwg
c2FsdCwgc2FsdFNpemUsIGluZm8sIGluZm9TaXplLCBsZW5ndGgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0NSWVBUTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvVXRpbGl0aWVzQ29jb2EuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
N2JlZjE4N2Y1NzhmNzE3MjQ3NTRlODUyZTkzOWQxNzA5OTBlYTg1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9VdGlsaXRpZXNDb2NvYS5oCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJf
Q1JZUFRPKSB8fCBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit0eXBlZGVmIHVpbnQzMl90IENDRGlnZXN0QWxnb3Jp
dGhtOwordHlwZWRlZiB1aW50MzJfdCBDQ09wZXJhdGlvbjsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybUFFU19DVFIoQ0NPcGVy
YXRpb24sIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5n
dGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3QgZGF0YVNpemUpOworRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBkZXJpdmVIREtGQml0
cyhDQ0RpZ2VzdEFsZ29yaXRobSwgY29uc3QgdWludDhfdCoga2V5LCBzaXplX3Qga2V5U2l6ZSwg
Y29uc3QgdWludDhfdCogc2FsdCwgc2l6ZV90IHNhbHRTaXplLCBjb25zdCB1aW50OF90KiBpbmZv
LCBzaXplX3QgaW5mb1NpemUsIHNpemVfdCBsZW5ndGgpOworRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBkZXJpdmVIREtGU0hBMjU2Qml0cyhjb25zdCB1aW50OF90KiBrZXksIHNpemVfdCBr
ZXlTaXplLCBjb25zdCB1aW50OF90KiBzYWx0LCBzaXplX3Qgc2FsdFNpemUsIGNvbnN0IHVpbnQ4
X3QqIGluZm8sIHNpemVfdCBpbmZvU2l6ZSwgc2l6ZV90IGxlbmd0aCk7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQ1JZUFRPKSB8fCBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA2NWRmODJhMmI0N2Nh
Y2VkZWVmODgwMGRmOTA0NzUzMGE0YTM5MzA0Li5lM2RmZTc5NTE2YzM1OWFkODQwNzdiZjVmZTg1
MmZiOTFmN2UzZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNTMs
NiArMTUzLDcgQEAKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUHJpbnRDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW0uaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgpAQCAtMTU4MSw2ICsxNTgy
LDExIEBAIFJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBJbnRlcm5hbHM6OmNyZWF0ZU1vY2tSVENS
dHBUcmFuc2Zvcm0oKQogICAgIHJldHVybiBNb2NrUlRDUnRwVHJhbnNmb3JtOjpjcmVhdGUoKTsK
IH0KIAordWludDY0X3QgSW50ZXJuYWxzOjpzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIHJldHVybiB0cmFuc2Zvcm0uY291bnRlckZv
clRlc3RpbmcoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6OnNldEVuYWJsZVdlYlJUQ0VuY3J5cHRp
b24oYm9vbCB2YWx1ZSkKIHsKICNpZiBVU0UoTElCV0VCUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggZThiNTdhYmU4MjQ3YjVkYjJmNDJhMTFhOTVjYTI0MjNkNmE2NjUyMS4u
YjgzN2MzYjNhMDRkMzYwMzA1N2RlMjc1NDAyM2FlNzI3ZmVlYTkyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC0xMjQsNiArMTI0LDEwIEBAIGNsYXNzIFRleHRUcmFja0N1ZUdl
bmVyaWM7CiBjbGFzcyBTZXJ2aWNlV29ya2VyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JU
QykKK2NsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdF
QlhSKQogY2xhc3MgV2ViWFJUZXN0OwogI2VuZGlmCkBAIC02MDcsNiArNjExLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sKTsKICAgICB2b2lkIHNldFdlYlJU
Q1ZQOVZUQlN1cHBvcnQoYm9vbCk7CiAgICAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IGNyZWF0
ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKKyAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVyKGNvbnN0
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgc2V0RW5hYmxlV2ViUlRDRW5jcnlw
dGlvbihib29sKTsKICAgICB2b2lkIHNldFVzZURUTFMxMChib29sKTsKICAgICB2b2lkIHNldFVz
ZUdQVVByb2Nlc3NGb3JXZWJSVEMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKaW5kZXggNzI0Zjg3MmJhNjgyM2QwNmVlMDM5ODMyMmQ2OGM1NDVjYmQ0MjZiMC4uYWUzYTYx
ZmNhMDNkYzRiNjY3NDczZDAwNWY4MjhlMTVlMGI5OTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbApAQCAtODAzLDYgKzgwMyw3IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtD
b25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sZWFu
IGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRD
VlA5VlRCU3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRD
XSBNb2NrUlRDUnRwVHJhbnNmb3JtIGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKKyAgICBb
Q29uZGl0aW9uYWw9V0VCX1JUQ10gdW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtIHRyYW5zZm9ybSk7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNXSB1bmRlZmluZWQgc2V0TW9ja0F1ZGlvVHJhY2tDaGFubmVsTnVtYmVyKE1lZGlhU3Ry
ZWFtVHJhY2sgdHJhY2ssIHVuc2lnbmVkIHNob3J0IGNvdW50KTsKICAgICBbQ29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0U2hvdWxkSW50ZXJydXB0QXVkaW9PblBhZ2VWaXNp
YmlsaXR5Q2hhbmdlKGJvb2xlYW4gc2hvdWxkSW50ZXJydXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsCmluZGV4IDA5ZWIwYzNjYTE1YzVmMTk3
ZjM2Y2ZiNDc0OWMxMTgwNmU4YWM3NzcuLmRlNjMxODc2MDU5NGI2OWYyN2EwMWQ2NWUwODg5ODA1
ZjMzNzQxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNm
b3JtLmlkbApAQCAtMjYsNiArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCiAg
ICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAog
ICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgTW9ja1JUQ1J0cFRyYW5z
Zm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aXNQcm9jZXNzaW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDc1MzhkZjYyY2M0N2NkZjFmZTExYjM4YjIwZGExMzI3MzYyOWI5OTYuLmYyYTRi
MzU1NzM1ZWRiYjNjZDY2YzRiMTkyNWMwMTFmMWE2NmZlM2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0xMS0x
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgV2Vi
UlRDIFNGcmFtZSB0cmFuc2Zvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICBBZGQgdW5pdCB0ZXN0cyB0aGF0IHZhbGlkYXRlIFNGcmFtZSBnZW5lcmF0aW9u
IGFuZCBwYXJzaW5nLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmdldFJhd0tleSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVh
dGVWaWRlb1RyYW5zZm9ybWVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVmVjdG9y
c0FyZUVxdWFsKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTExLTEz
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBi
YXNpYyBwZXJtaXNzaW9uIGNoZWNrIGZvciBTcGVlY2hSZWNvZ25pdGlvbgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1MDQ2N2RkZWQ2ODYwYmYxNTI3MWYzMzg4NWY5MDk5YmQ0ZWIwMDk0Li5i
MTA5ZTYwYTEzNGVmOWFlMjAzYTEzOWYxY2ZiMTgwZjU5NTEwMjk4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjM2LDYgKzIzNiw3IEBACiAJCTQxMzVGQjg1MjAxMUZBQkYwMDMzMjEzOSAv
KiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkI4NjIwMTFGQUJGMDAzMzIxMzkgLyogbGliV2Vi
Q29yZVRlc3RTdXBwb3J0LmR5bGliICovOyB9OwogCQk0MTRBRDY4NjIyODVEMUMwMDA3NzdGMkQg
LyogU3RvcmFnZVF1b3RhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VRdW90YS5tbSAqLzsg
fTsKIAkJNDE2NjFDNjYyMzU1RTg1RTAwRDMzQzI3IC8qIGdldFVzZXJNZWRpYS13ZWJhdWRpby5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxNjYxQzY1MjM1NUQ5OEIwMEQzM0MyNyAvKiBnZXRVc2VyTWVkaWEtd2ViYXVkaW8uaHRtbCAq
LzsgfTsKKwkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVz
dHMuY3BwICovOyB9OwogCQk0MTg0OEY0NDI0ODkxODc5MDAwRTI1ODggLyogb3Blbi13aW5kb3ct
d2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Bl
bi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCAqLzsgfTsKIAkJNDE4ODJGMDMy
MTAxMEMwRDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8q
IFByb2Nlc3NQcmVXYXJtaW5nLm1tICovOyB9OwogCQk0NDA3N0JCMTIzMTQ0QjUwMDAxNzlFMkQg
LyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NDA3N0JCMDIzMTQ0OUQyMDAxNzlFMkQgLyogRGF0YURldGVjdG9y
c1Rlc3RJT1MubW0gKi87IH07CkBAIC0xOTYyLDYgKzE5NjMsNyBAQAogCQk0MTM1RkI4NjIwMTFG
QUJGMDAzMzIxMzkgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNDE0QUQ2ODUyMjg1RDFCMDAwNzc3RjJEIC8qIFN0b3JhZ2VR
dW90YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3JhZ2VRdW90YS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE2NjFDNjUyMzU1RDk4QjAwRDMzQzI3IC8qIGdldFVzZXJN
ZWRpYS13ZWJhdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImdldFVzZXJN
ZWRpYS13ZWJhdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4MUM2
MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXJUZXN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODQ4RjQzMjQ4OTE4
MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0
aC1ob3N0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MkYwMjIxMDEw
QTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNoYXJlZEJ1ZmZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRCdWZmZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzUzNCw2ICszNTM2LDcgQEAKIAkJCQkw
NDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCAqLywKIAkJCQk2QjRF
ODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwICovLAogCQkJCUY0
MThCRTE0MUY3MUI3REMwMDE5NzBFNiAvKiBSb3VuZGVkUmVjdFRlc3RzLmNwcCAqLywKKwkJCQk0
MTgxQzYyQzI1NUE4OTExMDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5j
cHAgKi8sCiAJCQkJQ0RDRkE3QTkxRTQ1MTIyRjAwQzI0MzNEIC8qIFNhbXBsZU1hcC5jcHAgKi8s
CiAJCQkJQ0UwNkRGOUExRTE4NTFGMjAwRTU3MEM5IC8qIFNlY3VyaXR5T3JpZ2luLmNwcCAqLywK
IAkJCQk0MTk3M0I1QzFBRjIyODc1MDA2QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKQEAg
LTU0MjIsNiArNTQyNSw3IEBACiAJCQkJNUNDQjEwRTMyMTM0NTdEODAwQUM1QUYwIC8qIFJlc3Rv
cmVTZXNzaW9uU3RhdGVXaXRob3V0TmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2
RTgxNkY4MUU3OUUyOUMwMDM3NUFEQyAvKiBSZXN0b3JlU3RhdGVBZnRlclRlcm1pbmF0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjQxOEJFMTUxRjcxQjdEQzAwMTk3MEU2IC8qIFJvdW5kZWRS
ZWN0VGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTE4MEMwRkExRUU2N0RGMDAwNDY4RjQ3IC8qIFJ1bk9wZW5QYW5lbC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUY0RDI5ODZFMjBGRUU3MzcwMDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRvY3VtZW50
TG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQTk4NTUzMjExM0NGNzgwMDU3RUI2QiAvKiBT
YWZlQnJvd3NpbmcubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRl
c3RzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zY2QxMzQ0MDE5YTM4OTQwMDM4YjQ4ZDYzMmI0NzMwMWJiNjdl
OWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwCkBAIC0wLDAgKzEsMzU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1ZlY3Rvcjx1aW50OF90
PiBnZXRSYXdLZXkoKQoreworICAgIHJldHVybiBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAg
ICAgIDI0OSwKKyAgICAgICAgMTk1LAorICAgICAgICAyMDIsCisgICAgICAgIDE1OSwKKyAgICAg
ICAgNTYsCisgICAgICAgIDE5MSwKKyAgICAgICAgMTAzLAorICAgICAgICAyNDcsCisgICAgICAg
IDI0NSwKKyAgICAgICAgMjEzLAorICAgICAgICAyMCwKKyAgICAgICAgNjgsCisgICAgICAgIDY3
LAorICAgICAgICAyMCwKKyAgICAgICAgMTUxLAorICAgICAgICAxODUsCisgICAgICAgIDI0MiwK
KyAgICAgICAgNzgsCisgICAgICAgIDE3NiwKKyAgICAgICAgMTU4LAorICAgICAgICA5MSwKKyAg
ICAgICAgMjA1LAorICAgICAgICAxMzgsCisgICAgICAgIDU1LAorICAgICAgICAxNzYsCisgICAg
ICAgIDE0NywKKyAgICAgICAgMTk4LAorICAgICAgICAyNDMsCisgICAgICAgIDE0NiwKKyAgICAg
ICAgMjA0LAorICAgICAgICAyNDMsCisgICAgICAgIDIyMAorICAgICk7Cit9CisKK3N0YXRpYyBS
ZWY8V2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IGNyZWF0ZVZpZGVvVHJhbnNmb3Jt
ZXIoYm9vbCBpc1NlbmRpbmcgPSB0cnVlKQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBXZWJD
b3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6Y3JlYXRlKCk7CisgICAgdHJhbnNmb3JtZXIt
PnNldElzU2VuZGluZyhpc1NlbmRpbmcpOworICAgIHRyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3Np
bmdBdWRpbyhmYWxzZSk7CisKKyAgICBhdXRvIGtleUlkID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9t
KDE5OCwgMzEsIDI1MSwgMTk3LCA0OCwgMTM5LCA5MSwgNTEpOworICAgIHVpbnQ2NF90IGtleUlk
VmFsdWUgPSAwOworICAgIGZvciAoYXV0byB2YWx1ZSA6IGtleUlkKQorICAgICAgICBrZXlJZFZh
bHVlID0gdmFsdWUgKyAoa2V5SWRWYWx1ZSA8PCA4KTsKKworICAgIGF1dG8ga2V5UmVzdWx0ID0g
dHJhbnNmb3JtZXItPnNldEVuY3J5cHRpb25LZXkoZ2V0UmF3S2V5KCksIGtleUlkVmFsdWUpOwor
ICAgIEVYUEVDVF9GQUxTRShrZXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgcmV0dXJu
IHRyYW5zZm9ybWVyOworfQorCitzdGF0aWMgdm9pZCBjaGVja1ZlY3RvcnNBcmVFcXVhbChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNvbXB1dGVkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGV4cGVj
dGVkKQoreworICAgIEVYUEVDVF9FUShjb21wdXRlZC5zaXplKCksIGV4cGVjdGVkLnNpemUoKSk7
CisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBzdGQ6Om1pbihjb21wdXRlZC5zaXpl
KCksIGV4cGVjdGVkLnNpemUoKSk7ICsrY3B0cikKKyAgICAgICAgRVhQRUNUX0VRKGNvbXB1dGVk
W2NwdHJdLCBleHBlY3RlZFtjcHRyXSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIsIEF1dGhlbnRpY2F0aW9uS2V5KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVW
aWRlb1RyYW5zZm9ybWVyKCk7CisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwodHJhbnNmb3JtZXIt
PmF1dGhlbnRpY2F0aW9uS2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgOTIs
CisgICAgICAgIDIyOCwKKyAgICAgICAgMTM5LAorICAgICAgICAxOTUsCisgICAgICAgIDk4LAor
ICAgICAgICAxNiwKKyAgICAgICAgNCwKKyAgICAgICAgMTkzLAorICAgICAgICAyMjEsCisgICAg
ICAgIDI0OCwKKyAgICAgICAgMjMyLAorICAgICAgICAxNzgsCisgICAgICAgIDEzNSwKKyAgICAg
ICAgMjIsCisgICAgICAgIDE0MSwKKyAgICAgICAgMTUwLAorICAgICAgICAxNjUsCisgICAgICAg
IDI0MiwKKyAgICAgICAgNzMsCisgICAgICAgIDcyLAorICAgICAgICAxMCwKKyAgICAgICAgMTk3
LAorICAgICAgICAxNSwKKyAgICAgICAgODcsCisgICAgICAgIDE4MSwKKyAgICAgICAgMzQsCisg
ICAgICAgIDEyMCwKKyAgICAgICAgNzEsCisgICAgICAgIDQyLAorICAgICAgICAxNzQsCisgICAg
ICAgIDEzMSwKKyAgICAgICAgNzIKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lciwgRW5jcnlwdGlvbktleSkKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRl
VmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKHRyYW5zZm9ybWVy
LT5lbmNyeXB0aW9uS2V5KCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICAgICAgMjA3LAor
ICAgICAgICAyNTEsCisgICAgICAgIDUyLAorICAgICAgICAyMSwKKyAgICAgICAgMTAxLAorICAg
ICAgICA1MCwKKyAgICAgICAgMjMyLAorICAgICAgICA0OCwKKyAgICAgICAgMjExLAorICAgICAg
ICAxMTUsCisgICAgICAgIDExLAorICAgICAgICAxNTUsCisgICAgICAgIDEwMSwKKyAgICAgICAg
MTE2LAorICAgICAgICAxNTMsCisgICAgICAgIDcxCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXIsIFNhbHRLZXkpCit7CisgICAgYXV0byB0cmFuc2Zvcm1lciA9IGNy
ZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbCh0cmFuc2Zv
cm1lci0+c2FsdEtleSgpLCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDIyOSwKKyAg
ICAgICAgMTksCisgICAgICAgIDQyLAorICAgICAgICA5MywKKyAgICAgICAgMTY0LAorICAgICAg
ICAxMDMsCisgICAgICAgIDEyMCwKKyAgICAgICAgNTMsCisgICAgICAgIDI1LAorICAgICAgICAy
NiwKKyAgICAgICAgMjM3LAorICAgICAgICAyMDQsCisgICAgICAgIDc5LAorICAgICAgICAxMzgs
CisgICAgICAgIDEzOCwKKyAgICAgICAgMjMxCisgICAgKSk7Cit9CisKK1RFU1QoUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIsIEVuY3J5cHREZWNyeXB0KQoreworICAgIGF1dG8gZW5jcnlwdG9yID0g
Y3JlYXRlVmlkZW9UcmFuc2Zvcm1lcigpOworICAgIGF1dG8gZGVjcnlwdG9yID0gY3JlYXRlVmlk
ZW9UcmFuc2Zvcm1lcihmYWxzZSk7CisgICAgYXV0byBmcmFtZSA9IFZlY3Rvcjx1aW50OF90Pjo6
ZnJvbSgxMzUsIDg5LCA1MSwgMTY2LCAyNDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjAp
OworCisgICAgYXV0byBlbmNyeXB0ZWRSZXN1bHQgPSBlbmNyeXB0b3ItPnRyYW5zZm9ybShmcmFt
ZS5kYXRhKCksIGZyYW1lLnNpemUoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGVuY3J5cHRlZFJlc3Vs
dC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBhdXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRlZFJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5
cHRvci0+dHJhbnNmb3JtKGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOworICAg
IEVYUEVDVF9GQUxTRShkZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgY2hl
Y2tWZWN0b3JzQXJlRXF1YWwoZGVjcnlwdGVkUmVzdWx0LnJldHVyblZhbHVlKCksIGZyYW1lKTsK
K30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlwdERlY3J5cHRLZXlJRDAp
Cit7CisgICAgYXV0byBlbmNyeXB0b3IgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7CisgICAg
ZW5jcnlwdG9yLT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tleSgpLCAwKTsKKworICAgIGF1dG8g
ZGVjcnlwdG9yID0gY3JlYXRlVmlkZW9UcmFuc2Zvcm1lcihmYWxzZSk7CisgICAgZGVjcnlwdG9y
LT5zZXRFbmNyeXB0aW9uS2V5KGdldFJhd0tleSgpLCAwKTsKKworICAgIGF1dG8gZnJhbWUgPSBW
ZWN0b3I8dWludDhfdD46OmZyb20oMTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjksIDE1NywgMTEx
LCAxOTAsIDEzNCwgMjIwKTsKKworICAgIGF1dG8gZW5jcnlwdGVkUmVzdWx0ID0gZW5jcnlwdG9y
LT50cmFuc2Zvcm0oZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOworICAgIEVYUEVDVF9GQUxT
RShlbmNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAgYXV0byBlbmNyeXB0ZWQg
PSBlbmNyeXB0ZWRSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBkZWNyeXB0
ZWRSZXN1bHQgPSBkZWNyeXB0b3ItPnRyYW5zZm9ybShlbmNyeXB0ZWQuZGF0YSgpLCBlbmNyeXB0
ZWQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGVjcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKTsKKworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGRlY3J5cHRlZFJlc3VsdC5yZXR1cm5W
YWx1ZSgpLCBmcmFtZSk7Cit9CisKK1RFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5z
Zm9ybUNvdW50ZXIwKQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5z
Zm9ybWVyKCk7CisKKyAgICB1aW50OF90IGZyYW1lMVtdID0geyAxMzUsIDg5LCA1MSwgMTY2LCAy
NDgsIDEyOSwgMTU3LCAxMTEsIDE5MCwgMTM0LCAyMjAgfTsKKyAgICBhdXRvIHJlc3VsdCA9IHRy
YW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisKKyAgICBjaGVja1ZlY3RvcnNBcmVFcXVh
bChyZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAg
ICAgICAgMTUsCisgICAgICAgIDE5OCwKKyAgICAgICAgMzEsCisgICAgICAgIDI1MSwKKyAgICAg
ICAgMTk3LAorICAgICAgICA0OCwKKyAgICAgICAgMTM5LAorICAgICAgICA5MSwKKyAgICAgICAg
NTEsCisgICAgICAgIDAsCisgICAgICAgIDI1NCwKKyAgICAgICAgMTcxLAorICAgICAgICAxNjgs
CisgICAgICAgIDEyNywKKyAgICAgICAgMTU4LAorICAgICAgICA5NywKKyAgICAgICAgNzAsCisg
ICAgICAgIDQsCisgICAgICAgIDIzMywKKyAgICAgICAgMTU2LAorICAgICAgICAxMzQsCisgICAg
ICAgIDIyMCwKKyAgICAgICAgNDQsCisgICAgICAgIDUwLAorICAgICAgICA5MCwKKyAgICAgICAg
MywKKyAgICAgICAgNjgsCisgICAgICAgIDIwMCwKKyAgICAgICAgMTI3LAorICAgICAgICAyMjMs
CisgICAgICAgIDYKKyAgICApKTsKK30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwg
VHJhbnNmb3JtQ291bnRlcjI1NikKK3sKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gY3JlYXRlVmlk
ZW9UcmFuc2Zvcm1lcigpOworCisgICAgdWludDhfdCBmcmFtZTFbXSA9IHsgOCwgMTY0LCAxODks
IDE4LCA2MSwgMTE3LCAxMzIsIDQzLCAxMTcsIDE2OSwgNDIgfTsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IFZlY3Rvcjx1aW50OF90PigpOworICAg
IHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oZnJhbWUxLCBzaXplb2YoZnJhbWUxKSk7
CisgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCAyNTY7ICsrY3B0cikgeworICAgICAg
ICByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICB9Cisg
ICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0
b3I8dWludDhfdD46OmZyb20oCisgICAgICAgIDMxLAorICAgICAgICAxOTgsCisgICAgICAgIDMx
LAorICAgICAgICAyNTEsCisgICAgICAgIDE5NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwK
KyAgICAgICAgOTEsCisgICAgICAgIDUxLAorICAgICAgICAxLAorICAgICAgICAwLAorICAgICAg
ICAxMjQsCisgICAgICAgIDIxOCwKKyAgICAgICAgNjEsCisgICAgICAgIDIzLAorICAgICAgICA3
OCwKKyAgICAgICAgMTUsCisgICAgICAgIDE5MCwKKyAgICAgICAgMzUsCisgICAgICAgIDI1NSwK
KyAgICAgICAgMjUzLAorICAgICAgICAxMjAsCisgICAgICAgIDY0LAorICAgICAgICAyOCwKKyAg
ICAgICAgMTgzLAorICAgICAgICAxNzIsCisgICAgICAgIDE1NCwKKyAgICAgICAgMTQ0LAorICAg
ICAgICAxNiwKKyAgICAgICAgMjI5LAorICAgICAgICA4NywKKyAgICAgICAgNTIKKyAgICApKTsK
K30KKworVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjY1NTM2
KQoreworICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBjcmVhdGVWaWRlb1RyYW5zZm9ybWVyKCk7Cisg
ICAgdHJhbnNmb3JtZXItPnNldENvdW50ZXIoNjU1MzYpOworCisgICAgdWludDhfdCBmcmFtZTFb
XSA9IHsgMCwgMzMsIDI0NCwgMjQsIDIzNiwgMTU2LCAxMjcsIDgsIDQ4LCA4OCwgMjIwIH07Cisg
ICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZy
YW1lMSkpOworICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworCisgICAg
Y2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBWZWN0b3I8
dWludDhfdD46OmZyb20oCisgICAgICAgIDQ3LAorICAgICAgICAxOTgsCisgICAgICAgIDMxLAor
ICAgICAgICAyNTEsCisgICAgICAgIDE5NywKKyAgICAgICAgNDgsCisgICAgICAgIDEzOSwKKyAg
ICAgICAgOTEsCisgICAgICAgIDUxLAorICAgICAgICAxLAorICAgICAgICAwLAorICAgICAgICAw
LAorICAgICAgICA5OCwKKyAgICAgICAgMjEyLAorICAgICAgICAxMzcsCisgICAgICAgIDI0NCwK
KyAgICAgICAgMjA5LAorICAgICAgICAxNiwKKyAgICAgICAgODksCisgICAgICAgIDIzNCwKKyAg
ICAgICAgMjEsCisgICAgICAgIDE3MSwKKyAgICAgICAgMTUsCisgICAgICAgIDEwNywKKyAgICAg
ICAgNTAsCisgICAgICAgIDE0NSwKKyAgICAgICAgNzMsCisgICAgICAgIDEwNywKKyAgICAgICAg
MTY1LAorICAgICAgICA0NSwKKyAgICAgICAgMTkwLAorICAgICAgICAyNSwKKyAgICAgICAgODIK
KyAgICApKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjU3
ZGU1OGEyMjQyOGQyOGRiOWI4NDg1YWE5NWIxM2Y2NWJkNDc5My4uNWIyZmJiMWY0NThkNjFjMDgy
ZTQ1MWQyYzZhOGM3YzUyNGNlMjZlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTExLTE1
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBXZWJS
VEMgU0ZyYW1lIHRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgICogd2VicnRjL2F1ZGlvLXNmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMjAtMTEtMTQgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW1vdmUgLXdlYmtpdC1hc3Bl
Y3QtcmF0aW8gc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNm
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NzA2YjRjOTI1YWUyYTkyMzE3NjQ5ZTI3ODcxNWFmNmM5NWJi
ZTg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL2F1ZGlvLXNmcmFtZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKKworUEFTUyBBdWRpbyBleGNoYW5nZSB3aXRo
IFNGcmFtZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvYXVkaW8tc2ZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM2
Yjc1MGMwZGY1NjdkYmU0OWNhZWMxMmEwYTRmYmYyOWNlZDJjNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbApAQCAtMCwwICsxLDUwIEBACis8
IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0
PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDx2aWRlbyBpZD0iYXVkaW8iIGF1dG9wbGF5IHBsYXlzSW5saW5lPjwvdmlkZW8+CisgICAgICAg
IDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7
CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8u
c3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwg
NzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhL
REYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKyAgICBjb25zdCBzdHJl
YW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNy
ZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlbmRl
ciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygp
WzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBsZXQgdHJhbnNmb3JtID0gbmV3IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybTsKKyAgICAgICAgICAgIHRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5
KGtleSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgICAg
ICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlv
bi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgdHJhbnNm
b3JtID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICB0cmFuc2Zv
cm0uc2V0RW5jcnlwdGlvbktleShrZXkpOworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJh
Y2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSB0
cmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0p
OworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g
cmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGF1ZGlvLnNy
Y09iamVjdCA9IHN0cmVhbTsKKyAgICBhd2FpdCBhdWRpby5wbGF5KCk7CisKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykgeworICAgICAgICBjb25zdCBzZW5kZXJDb3VudGVyID0gaW50ZXJuYWxz
LnNmcmFtZUNvdW50ZXIoc2VuZGVyLnRyYW5zZm9ybSk7CisgICAgICAgIGNvbnN0IHJlY2VpdmVy
Q291bnRlciA9IGludGVybmFscy5zZnJhbWVDb3VudGVyKHJlY2VpdmVyLnRyYW5zZm9ybSk7CisK
KyAgICAgICAgbGV0IGNvdW50ZXIgPSAwOworICAgICAgICB3aGlsZSAocmVjZWl2ZXJDb3VudGVy
ID09PSBpbnRlcm5hbHMuc2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zvcm0pICYmICsrY291
bnRlciA8IDEwMCkKKyAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0
VGltZW91dChyZXNvbHZlLCA1MCkpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnRlcm5h
bHMuc2ZyYW1lQ291bnRlcihyZWNlaXZlci50cmFuc2Zvcm0pLCByZWNlaXZlckNvdW50ZXIsICJy
ZWNlaXZlciIpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnRlcm5hbHMuc2ZyYW1lQ291
bnRlcihzZW5kZXIudHJhbnNmb3JtKSwgc2VuZGVyQ291bnRlciwgInNlbmRlciIpOworICAgIH0K
K30sICJBdWRpbyBleGNoYW5nZSB3aXRoIFNGcmFtZSIpOworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>