<?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>228947</bug_id>
          
          <creation_ts>2021-08-10 02:53:44 -0700</creation_ts>
          <short_desc>Implement SFrameTransform error handling</short_desc>
          <delta_ts>2021-08-12 15:28:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229055</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="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>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</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>1783141</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-10 02:53:44 -0700</bug_when>
    <thetext>Implement SFrameTransform error handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783153</commentid>
    <comment_count>1</comment_count>
      <attachid>435253</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-10 06:46:04 -0700</bug_when>
    <thetext>Created attachment 435253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783178</commentid>
    <comment_count>2</comment_count>
      <attachid>435262</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-10 08:53:59 -0700</bug_when>
    <thetext>Created attachment 435262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783487</commentid>
    <comment_count>3</comment_count>
      <attachid>435262</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-11 07:02:40 -0700</bug_when>
    <thetext>Comment on attachment 435262
Patch

bot error is unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783543</commentid>
    <comment_count>4</comment_count>
      <attachid>435262</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-08-11 10:11:45 -0700</bug_when>
    <thetext>Comment on attachment 435262
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:118
&gt; +static std::optional&lt;Vector&lt;uint8_t&gt;&gt; processFrame(const uint8_t* data, size_t size, RTCRtpSFrameTransformer&amp; transformer, ScriptExecutionContextIdentifier identifier, const WeakPtr&lt;RTCRtpSFrameTransform&gt;&amp; weakTransform)

It might be worth using Span here and the other places you pass around { uint8_t*, size_t } in these classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783757</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-12 02:14:57 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #4)
&gt; Comment on attachment 435262 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435262&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSFrameTransform.cpp:118
&gt; &gt; +static std::optional&lt;Vector&lt;uint8_t&gt;&gt; processFrame(const uint8_t* data, size_t size, RTCRtpSFrameTransformer&amp; transformer, ScriptExecutionContextIdentifier identifier, const WeakPtr&lt;RTCRtpSFrameTransform&gt;&amp; weakTransform)
&gt; 
&gt; It might be worth using Span here and the other places you pass around {
&gt; uint8_t*, size_t } in these classes.

Good idea, I&apos;ll do the refactoring in a follow-up as this entails changes to transformer and frame classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783760</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-12 02:37:14 -0700</bug_when>
    <thetext>Committed r280958 (240464@main): &lt;https://commits.webkit.org/240464@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435262.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783761</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-12 02:38:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/81837525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783764</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-08-12 02:46:32 -0700</bug_when>
    <thetext>&gt; Good idea, I&apos;ll do the refactoring in a follow-up as this entails changes to
&gt; transformer and frame classes.

https://bugs.webkit.org/show_bug.cgi?id=229029</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435253</attachid>
            <date>2021-08-10 06:46:04 -0700</date>
            <delta_ts>2021-08-10 08:53:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228947-20210810154602.patch</filename>
            <type>text/plain</type>
            <size>49317</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhOGY2YTA2NzU2YTI5
YzY0ZDM1ZTIyMWQ4ZTE3YTY2ODBkNTBmYi4uYmNiMzM2YzQ3YjYwZDM2NzVhNmRhMDM5ODEwNTI5
Y2FjY2UwZGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA4LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU0ZyYW1l
VHJhbnNmb3JtIGVycm9yIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjg5NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJy
b3JFdmVudC4KKyAgICAgICAgV2hlbiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciBlbmNvdW50ZXJz
IGFuIGlzc3VlLCBkaXNwYXRjaCBhIHRhc2sgdG8gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGNvbnRl
eHQgYW5kIGZpcmUgYSBjb3JyZXNwb25kaW5nIGV2ZW50LgorICAgICAgICBUaGlzIGZvbGxvd3Mg
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS8jc2ZyYW1lLXRy
YW5zZm9ybS1hbGdvcml0aG0sIGV4Y2VwdCB0aGF0OgorICAgICAgICAtIHdlIGFyZSBub3QgeWV0
IGV4cG9zaW5nIHNvbWUgZmllbGRzIGluIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQu
CisgICAgICAgIC0gd2UgYXJlIHVzaW5nIGVycm9yVHlwZSBpbnN0ZWFkIG9mIHR5cGUgd2hpY2gg
c2hvdWxkIGJlIGZpeGVkIGluIHRoZSBzcGVjLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFu
c2Zvcm0tZXJyb3IuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmVycm9yVHlwZUZyb21JbmZvcm1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpwcm9jZXNzRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjpoYXNLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
OjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6d3JpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50OjpSVENSdHBT
RnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmV2ZW50SW50ZXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuaDogQWRk
ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1F
cnJvckV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6aGFzS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1l
cy5pbjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorCiAyMDIxLTA4LTAz
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgRmly
c3RXaXRoRE9NV2luZG93UmV1c2VSZXN0cmljdGlvbiBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2sg
dG8gbGF0ZXN0IE1hY09TL2lPUyBiZXRhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjODg0ODAy
YzJmNmQwZjE4MzhjNThlY2RiYjNlYTk4YTA3MGZhZDU4Li42ZDMzNjgyN2Y5ZDA0ZWExZWQwZWQ3
YmZkMjQwOWI5NjExMTU2N2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDEyLDYgKzQxMiw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBh
cmFtZXRlcnMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJv
ckV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlk
ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5p
ZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IDc3Mzk0Yjc2YzQ1ZjZiYWU5N2EwNTAxYWMxYmEyMGVmMTA0YmExYmMuLjFiMjQyYjM3NGI2
ZmQwMzE1ODMyZDcwYTU4ZWMxMzBiNGFiMWIyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjU2LDYgKzI1Niw3IEBAICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUnR4UGFyYW1ldGVycy5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1FcnJvckV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZjQ3ZTU5OTQy
MDliYTcyNjU5YjgyNTQ5MTkwMjMzNWE2Mjg1YjI0OS4uZDQyNmEwMmZmMWM1NjRkZWY4NjBlODc4
YjcyMzcxYjYwOWM0ZWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2OTcsNiArMTY5Nyw4IEBAICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFy
YW1ldGVycy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJy
b3JFdmVudC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCBmMTMzMmMwZDNmOTIzYmEwYTJhNzUzM2RhM2I5ODAzMzk3NDgzOThkLi4y
YmRjOGQ1OTM5ODk5NGYxODkyOTNjMjBmYTNjMzIwZDNhZjkzNTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTI4Myw2ICsyODMsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtRXJyb3JFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRs
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCA1MmUyODgwYjgyMDdmNTljOGNmNzBhM2I5
MmQxNzU4OWUxN2NjNGU0Li4yYzMwZjZmNjgxOTY3YTYxNzYzNTVhZmE5YWYyMDU1ZDA4N2M4ZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZWRBdWRpb0ZyYW1lLmgiCiAjaW5jbHVkZSAi
UlRDRW5jb2RlZFZpZGVvRnJhbWUuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm1F
cnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKICNpbmNs
dWRlICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lLmgiCkBAIC00MywxMyArNDQsMTggQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJXcml0YWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFt
U2luay5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSk7CisKIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbnMgb3B0aW9ucykKLSAgICA6IENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZjb250ZXh0KQogICAgICwgbV90cmFuc2Zvcm1lcihSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y3JlYXRlKG9wdGlvbnMuY29tcGF0aWJpbGl0eU1vZGUpKQogeworICAgIHN1c3BlbmRJZk5lZWRl
ZCgpOworCiAgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNFbmNyeXB0aW5nKG9wdGlvbnMucm9sZSA9
PSBSb2xlOjpFbmNyeXB0KTsKICAgICBtX3RyYW5zZm9ybWVyLT5zZXRBdXRoZW50aWNhdGlvblNp
emUob3B0aW9ucy5hdXRoZW50aWNhdGlvblNpemUpOwogfQpAQCAtOTUsMTAgKzEwMSw1MyBAQCBi
b29sIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRhY2hlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNBdHRhY2hlZCB8fCAobV9yZWFkYWJsZSAmJiBtX3JlYWRhYmxlLT5pc0xvY2tlZCgpKSB8
fCAobV93cml0YWJsZSAmJiBtX3dyaXRhYmxlLT5pc0xvY2tlZCgpKTsKIH0KIAorc3RhdGljIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OlR5cGUgZXJyb3JUeXBlRnJvbUluZm9ybWF0
aW9uKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpFcnJvckluZm9ybWF0aW9uJiBlcnJv
ckluZm9ybWF0aW9uKQoreworICAgIHN3aXRjaCAoZXJyb3JJbmZvcm1hdGlvbi5lcnJvcikgewor
ICAgIGNhc2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9yOjpLZXlJRDoKKyAgICAgICAg
cmV0dXJuIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OlR5cGU6OktleUlEOworICAg
IGNhc2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9yOjpBdXRoZW50aWNhdGlvbjoKKyAg
ICAgICAgcmV0dXJuIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OlR5cGU6OkF1dGhl
bnRpY2F0aW9uOworICAgIGNhc2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9yOjpTeW50
YXg6CisgICAgICAgIHJldHVybiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50OjpUeXBl
OjpTeW50YXg7CisgICAgY2FzZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6RXJyb3I6Ok90aGVy
OgorICAgICAgICByZXR1cm4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudDo6VHlwZTo6
T3RoZXI7CisgICAgfQorfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IHByb2Nlc3NGcmFtZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXImIHRyYW5zZm9ybWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHdl
YWtUcmFuc2Zvcm0pCit7CisgICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1lci50cmFuc2Zvcm0o
ZGF0YSwgc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgYXV0
byBlcnJvckluZm9ybWF0aW9uID0gV1RGTW92ZShyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgIGVy
cm9ySW5mb3JtYXRpb24ubWVzc2FnZSA9IHsgfTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
V2ViUlRDLCAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGZhaWxlZCB0cmFuc2Zvcm1pbmcgYSBmcmFt
ZSB3aXRoIGVycm9yICVkIiwgZXJyb3JJbmZvcm1hdGlvbi5lcnJvcik7CisgICAgICAgIC8vIENh
bGwgdGhlIGVycm9yIGV2ZW50IGhhbmRsZXIuCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2Vycm9ySW5mb3JtYXRpb24sIHdlYWtUcmFuc2Zv
cm1dKGF1dG8mJikgeworICAgICAgICAgICAgaWYgKCF3ZWFrVHJhbnNmb3JtIHx8IHdlYWtUcmFu
c2Zvcm0tPmlzQ29udGV4dFN0b3BwZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBpZiAoZXJyb3JJbmZvcm1hdGlvbi5lcnJvciA9PSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6RXJyb3I6OktleUlEICYmIHdlYWtUcmFuc2Zvcm0tPmhhc0tleShlcnJvckluZm9ybWF0
aW9uLmtleUlkKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB3ZWFrVHJh
bnNmb3JtLT5kaXNwYXRjaEV2ZW50KFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmNy
ZWF0ZShFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIGVycm9y
VHlwZUZyb21JbmZvcm1hdGlvbihlcnJvckluZm9ybWF0aW9uKSkpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0LnZhbHVl
KCkpOworfQorCitib29sIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aGFzS2V5KHVpbnQ2NF90IGtl
eUlEKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYW5zZm9ybWVyLT5oYXNLZXkoa2V5SUQpOwor
fQorCiB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJU
Q1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQsIFNpZGUgc2lkZSkKIHsKICAgICBBU1NFUlQo
IWlzQXR0YWNoZWQoKSk7CiAKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9pc0F0
dGFjaGVkID0gdHJ1ZTsKICAgICBpZiAobV9yZWFkYWJsZSkKICAgICAgICAgbV9yZWFkYWJsZS0+
bG9jaygpOwpAQCAtMTA4LDE2ICsxNTcsMTYgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW4KICAg
ICBtX3RyYW5zZm9ybWVyLT5zZXRJc0VuY3J5cHRpbmcoc2lkZSA9PSBTaWRlOjpTZW5kZXIpOwog
ICAgIG1fdHJhbnNmb3JtZXItPnNldE1lZGlhVHlwZShiYWNrZW5kLm1lZGlhVHlwZSgpKTsKIAot
ICAgIGJhY2tlbmQuc2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3RyYW5zZm9ybWVyID0g
bV90cmFuc2Zvcm1lciwgYmFja2VuZCA9IG1ha2VSZWYoYmFja2VuZCldKGF1dG8mJiBmcmFtZSkg
eworICAgIGJhY2tlbmQuc2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3RyYW5zZm9ybWVy
ID0gbV90cmFuc2Zvcm1lciwgaWRlbnRpZmllciA9IGNvbnRleHQtPmNvbnRleHRJZGVudGlmaWVy
KCksIGJhY2tlbmQgPSBtYWtlUmVmKGJhY2tlbmQpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXShhdXRvJiYgZnJhbWUpIHsKICAgICAgICAgYXV0byBjaHVuayA9IGZyYW1lLT5kYXRhKCk7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShjaHVuay5kYXRh
LCBjaHVuay5zaXplKTsKKyAgICAgICAgaWYgKCFjaHVuay5kYXRhIHx8ICFjaHVuay5zaXplKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHJlc3VsdCA9IHByb2Nlc3NGcmFtZShj
aHVuay5kYXRhLCBjaHVuay5zaXplLCB0cmFuc2Zvcm1lci5nZXQoKSwgaWRlbnRpZmllciwgd2Vh
a1RoaXMpOwogCi0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBmYWls
ZWQgdHJhbnNmb3JtaW5nIGEgZnJhbWUiKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICBmcmFtZS0+c2V0RGF0YSh7IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgpIH0pOwor
ICAgICAgICBmcmFtZS0+c2V0RGF0YSh7IHJlc3VsdC52YWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnZh
bHVlKCkuc2l6ZSgpIH0pOwogCiAgICAgICAgIGJhY2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZy
YW1lKGZyYW1lLmdldCgpKTsKICAgICB9KTsKQEAgLTEzOCwzMSArMTg3LDI1IEBAIHZvaWQgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmIGJhY2tlbmQpCiAgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNr
KCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybUZyYW1lKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lciYgdHJhbnNmb3JtZXIsIFNpbXBsZVJlYWRhYmxlU3RyZWFtU291cmNlJiBz
b3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFdlYWtQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgd2Vha1RyYW5zZm9ybSkKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IHByb2Nlc3NGcmFtZShkYXRhLCBzaXplLCB0cmFuc2Zvcm1lciwgaWRlbnRp
Zmllciwgd2Vha1RyYW5zZm9ybSk7CisgICAgYXV0byBidWZmZXIgPSByZXN1bHQgPyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpyZXN1bHQpKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgc291cmNlLmVucXVldWUodG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBi
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkuZ2V0KCkpKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgRnJhbWU+Ci12b2lkIHRyYW5zZm9ybUZyYW1lKEZyYW1lJiBmcmFtZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXImIHRyYW5zZm9y
bWVyLCBTaW1wbGVSZWFkYWJsZVN0cmVhbVNvdXJjZSYgc291cmNlKQordm9pZCB0cmFuc2Zvcm1G
cmFtZShGcmFtZSYgZnJhbWUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyJiB0cmFuc2Zvcm1lciwgU2ltcGxlUmVhZGFibGVTdHJlYW1Tb3Vy
Y2UmIHNvdXJjZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgV2Vha1B0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiB3ZWFrVHJhbnNmb3JtKQogewog
ICAgIGF1dG8gY2h1bmsgPSBmcmFtZS5ydGNGcmFtZSgpLmRhdGEoKTsKLSAgICBhdXRvIHJlc3Vs
dCA9IHRyYW5zZm9ybWVyLnRyYW5zZm9ybShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihyZXN1bHQuaGFzRXhjZXB0aW9uKCksIFdlYlJUQywgIlJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSBmYWlsZWQgdHJhbnNmb3JtaW5nIGEgZnJhbWUiKTsKLQorICAgIGF1
dG8gcmVzdWx0ID0gcHJvY2Vzc0ZyYW1lKGNodW5rLmRhdGEsIGNodW5rLnNpemUsIHRyYW5zZm9y
bWVyLCBpZGVudGlmaWVyLCB3ZWFrVHJhbnNmb3JtKTsKICAgICBSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWU6OkRhdGEgdHJhbnNmb3JtZWRDaHVuazsKLSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCB3
ZSBqdXN0IHBhc3MgYWxvbmcgdGhlIGZyYW1lIHdpdGggZW1wdHkgZGF0YS4KLSAgICBpZiAoIXJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgdHJhbnNmb3JtZWRDaHVuayA9IHsgcmVzdWx0
LnJldHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfTsKLQor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIHRyYW5zZm9ybWVkQ2h1bmsgPSB7IHJlc3VsdC0+ZGF0
YSgpLCByZXN1bHQtPnNpemUoKSB9OwogICAgIGZyYW1lLnJ0Y0ZyYW1lKCkuc2V0RGF0YSh0cmFu
c2Zvcm1lZENodW5rKTsKICAgICBzb3VyY2UuZW5xdWV1ZSh0b0pTKCZnbG9iYWxPYmplY3QsICZn
bG9iYWxPYmplY3QsIGZyYW1lKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUZyYW1lKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciYgdHJhbnNmb3JtZXIsIFNpbXBsZVJlYWRh
YmxlU3RyZWFtU291cmNlJiBzb3VyY2UpCi17Ci0gICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1l
ci50cmFuc2Zvcm0oZGF0YSwgc2l6ZSk7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUYocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpLCBXZWJSVEMsICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRy
YW5zZm9ybWluZyBhIGZyYW1lIik7Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IHJlc3VsdC5oYXNFeGNl
cHRpb24oKSA/IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgIHNvdXJjZS5lbnF1ZXVlKHRvSlMoJmds
b2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
LmdldCgpKSk7Ci19Ci0KIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1z
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlID0gU2ltcGxlUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSgpOwpAQCAtMTcw
LDcgKzIxMyw3IEBAIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICBpZiAocmVhZGFibGUuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdGFibGUgPSBXcml0YWJs
ZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpj
cmVhdGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2Ug
PSBtX3JlYWRhYmxlU3RyZWFtU291cmNlXShhdXRvJiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBF
eGNlcHRpb25Pcjx2b2lkPiB7CisgICAgYXV0byB3cml0YWJsZSA9IFdyaXRhYmxlU3RyZWFtOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBTaW1wbGVXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShbdHJh
bnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCByZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIGNvbnRl
eHQsIGF1dG8gdmFsdWUpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKICAgICAgICAgaWYgKCFjb250
ZXh0Lmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CiAgICAgICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGNvbnRleHQuZ2xvYmFsT2JqZWN0KCkpOwpAQCAtMTgyLDEz
ICsyMjUsMTMgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMoSlND
OjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiAgICAgICAgIC8vIFdlIGRvIG5vdCB3
YW50IHRvIHRocm93IGFueSBleGNlcHRpb24gaW4gdGhlIHRyYW5zZm9ybSB0byBtYWtlIHN1cmUg
d2UgZG8gbm90IGVycm9yIHRoZSB0cmFuc2Zvcm0uCiAgICAgICAgIFdURjo6c3dpdGNoT24oZnJh
bWUsIFsmXShSZWZQdHI8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+JiB2YWx1ZSkgewotICAgICAgICAg
ICAgdHJhbnNmb3JtRnJhbWUoKnZhbHVlLCBnbG9iYWxPYmplY3QsIHRyYW5zZm9ybWVyLmdldCgp
LCAqcmVhZGFibGVTdHJlYW1Tb3VyY2UpOworICAgICAgICAgICAgdHJhbnNmb3JtRnJhbWUoKnZh
bHVlLCBnbG9iYWxPYmplY3QsIHRyYW5zZm9ybWVyLmdldCgpLCAqcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UsIGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKSwgd2Vha1RoaXMpOwogICAgICAgICB9LCBb
Jl0oUmVmUHRyPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiYgdmFsdWUpIHsKLSAgICAgICAgICAgIHRy
YW5zZm9ybUZyYW1lKCp2YWx1ZSwgZ2xvYmFsT2JqZWN0LCB0cmFuc2Zvcm1lci5nZXQoKSwgKnJl
YWRhYmxlU3RyZWFtU291cmNlKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybUZyYW1lKCp2YWx1ZSwg
Z2xvYmFsT2JqZWN0LCB0cmFuc2Zvcm1lci5nZXQoKSwgKnJlYWRhYmxlU3RyZWFtU291cmNlLCBj
b250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCksIHdlYWtUaGlzKTsKICAgICAgICAgfSwgWyZdKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mIHZhbHVlKSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1GcmFtZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmRhdGEoKSksIHZhbHVlLT5ieXRlTGVu
Z3RoKCksIGdsb2JhbE9iamVjdCwgdHJhbnNmb3JtZXIuZ2V0KCksICpyZWFkYWJsZVN0cmVhbVNv
dXJjZSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1GcmFtZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4odmFsdWUtPmRhdGEoKSksIHZhbHVlLT5ieXRlTGVuZ3RoKCksIGdsb2JhbE9iamVjdCwg
dHJhbnNmb3JtZXIuZ2V0KCksICpyZWFkYWJsZVN0cmVhbVNvdXJjZSwgY29udGV4dC5jb250ZXh0
SWRlbnRpZmllcigpLCB3ZWFrVGhpcyk7CiAgICAgICAgIH0sIFsmXShSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiYgdmFsdWUpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybUZyYW1lKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgdmFsdWUtPmJ5dGVMZW5ndGgoKSwgZ2xv
YmFsT2JqZWN0LCB0cmFuc2Zvcm1lci5nZXQoKSwgKnJlYWRhYmxlU3RyZWFtU291cmNlKTsKKyAg
ICAgICAgICAgIHRyYW5zZm9ybUZyYW1lKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1
ZS0+ZGF0YSgpKSwgdmFsdWUtPmJ5dGVMZW5ndGgoKSwgZ2xvYmFsT2JqZWN0LCB0cmFuc2Zvcm1l
ci5nZXQoKSwgKnJlYWRhYmxlU3RyZWFtU291cmNlLCBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCksIHdlYWtUaGlzKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfSkp
OwpAQCAtMjMyLDkgKzI3NSwxNSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8V3JpdGFibGVTdHJlYW0+
PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OndyaXRhYmxlKCkKICAgICBpZiAoIW1fd3JpdGFibGUp
CiAgICAgICAgIGNyZWF0ZVN0cmVhbXMoKmdsb2JhbE9iamVjdCk7CiAKKyAgICBtX2hhc1dyaXRh
YmxlID0gdHJ1ZTsKICAgICByZXR1cm4gbV93cml0YWJsZS5jb3B5UmVmKCk7CiB9CiAKK2Jvb2wg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gKG1faXNBdHRhY2hlZCB8fCBtX2hhc1dyaXRhYmxlKSAmJiBoYXNFdmVu
dExpc3RlbmVycygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCmluZGV4IDZiNzhiYmY1YzY1ZDJjNTdm
ZWZiYzY5ODRiMDgyODhiY2I4ZWZmYzAuLmI1YTVlYmU0OTRhNjFkOTc4MTg4MWJhZWEzNDE4ZjU1
YmE3YjA5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaApAQCAtMjcsOSArMjcsMTEgQEAKIAogI2lm
IEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIu
aCIKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwpAQCAtNDMsNyArNDUsOCBAQCBjbGFzcyBSZWFk
YWJsZVN0cmVhbTsKIGNsYXNzIFNpbXBsZVJlYWRhYmxlU3RyZWFtU291cmNlOwogY2xhc3MgV3Jp
dGFibGVTdHJlYW07CiAKLWNsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIgeworY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogcHVibGljIFJlZkNvdW50
ZWQ8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFJvbGUgeyBF
bmNyeXB0LCBEZWNyeXB0IH07CiAgICAgdXNpbmcgQ29tcGF0aWJpbGl0eU1vZGUgPSBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lcjo6Q29tcGF0aWJpbGl0eU1vZGU7CkBAIC03MCwxNCArNzMsMzAgQEAg
cHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4+IHJlYWRhYmxl
KCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdyaXRhYmxlU3RyZWFtPj4gd3JpdGFibGUoKTsK
IAorICAgIGJvb2wgaGFzS2V5KHVpbnQ2NF90KSBjb25zdDsKKworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtPjo6ZGVyZWY7CisKIHByaXZhdGU6CiAgICAgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25zKTsKIAorICAgIC8vIEFj
dGl2ZURPTU9iamVjdAorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIjsgfQorICAgIGJvb2wgdmly
dHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQorCiAgICAgZW51bSBjbGFzcyBTaWRlIHsgU2VuZGVyLCBSZWNlaXZl
ciB9OwogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmLCBTaWRlKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoSlNDOjpKU0dsb2JhbE9iamVjdCYp
OwogCiAgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNXcml0
YWJsZSB7IGZhbHNlIH07CiAgICAgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBtX3RyYW5z
Zm9ybWVyOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gbV9yZWFkYWJsZTsKICAgICBSZWZQ
dHI8V3JpdGFibGVTdHJlYW0+IG1fd3JpdGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKaW5k
ZXggNmZjY2Q2YmM5YTAxNTdiNjgzMDc1MTgzZTMyMzdmNDIzODhlMzY1NS4uYTllNTM1N2EzZTRi
ZjhkYjg1MjQ2ZTc4N2U5MTExMDEyNTE0MWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbApA
QCAtNDEsMTMgKzQxLDE0IEBAIGRpY3Rpb25hcnkgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtT3B0aW9u
cyB7CiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQl9S
VEMsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKICAgICBF
eHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPShXaW5kb3csRGVkaWNhdGVk
V29ya2VyKSwKICAgICBJbnRlcmZhY2VOYW1lPVNGcmFtZVRyYW5zZm9ybSwKICAgICBKU0dlbmVy
YXRlVG9OYXRpdmVPYmplY3QsCi1dIGludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gewor
XSBpbnRlcmZhY2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogRXZlbnRUYXJnZXQgewogICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1PcHRpb25zIG9wdGlvbnMpOwogCiAgICAgW0N1c3RvbV0gUHJvbWlz
ZTx1bmRlZmluZWQ+IHNldEVuY3J5cHRpb25LZXkoQ3J5cHRvS2V5IGtleSwgb3B0aW9uYWwgYW55
IGtleUlEKTsKQEAgLTU3LDQgKzU4LDYgQEAgZGljdGlvbmFyeSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1PcHRpb25zIHsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbSByZWFk
YWJsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV3JpdGFibGVTdHJlYW0gd3JpdGFibGU7CisK
KyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZXJyb3I7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJv
ckV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtRXJyb3JFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5NGIyZWYyZTBjMzI5MWZk
NzkwMzU3ZDZhYTJjN2RjODg5OGExYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5jcHAK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zv
cm1FcnJvckV2ZW50LmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSVENSdHBTRnJhbWVUcmFu
c2Zvcm1FcnJvckV2ZW50KTsKKworUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmNyZWF0ZShDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBUeXBlIGVycm9yVHlwZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50KGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50LCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXJyb3JUeXBlKSk7
Cit9CisKK1JlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1FcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYm
IGluaXQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
RXJyb3JFdmVudCh0eXBlLCBpbml0LmJ1YmJsZXMgPyBDYW5CdWJibGU6OlllcyA6IENhbkJ1YmJs
ZTo6Tm8sCisgICAgICAgIGluaXQuY2FuY2VsYWJsZSA/IElzQ2FuY2VsYWJsZTo6WWVzIDogSXND
YW5jZWxhYmxlOjpObywgaW5pdC5lcnJvclR5cGUpKTsKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtRXJyb3JFdmVudDo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudChjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJs
ZSwgVHlwZSBlcnJvclR5cGUpCisgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUpCisgICAgLCBtX2Vycm9yVHlwZShlcnJvclR5cGUpCit7Cit9CisKK1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybUVycm9yRXZlbnQ6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50KCkgPSBk
ZWZhdWx0OworCitFdmVudEludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50
OjpldmVudEludGVyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybUVycm9yRXZlbnRJbnRlcmZhY2VUeXBlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1F
cnJvckV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2EzNTU1YjM4MjlkZGQxNzAwM2E3M2Y1ODhkMTRmMjdm
Yjk3ZDE5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5oCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50IGZp
bmFsIDogcHVibGljIEV2ZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybUVycm9yRXZlbnQpOworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ1J0cFNG
cmFtZVRyYW5zZm9ybUVycm9yRXZlbnQoKTsKKworICAgIGVudW0gVHlwZSB7IEF1dGhlbnRpY2F0
aW9uLCBLZXlJRCwgT3RoZXIsIFN5bnRheCB9OworCisgICAgc3RydWN0IEluaXQgOiBFdmVudElu
aXQgeworICAgICAgICBUeXBlIGVycm9yVHlwZTsKKyAgICB9OworCisgICAgc3RhdGljIFJlZjxS
VENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgSW5pdCYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9y
RXZlbnQ+IGNyZWF0ZShDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgVHlwZSk7CisKKyAgICBUeXBl
IGVycm9yVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JUeXBlOyB9CisKKyAgICB2aXJ0dWFs
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBD
YW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgVHlwZSk7CisKKyAgICBUeXBlIG1fZXJyb3JUeXBlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OGU1OTQzZjdiODk1ODljNmFiMDc3OWMzZGQzZGI1ZjQyODc4M2EwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm1FcnJvckV2ZW50LmlkbApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2
ZW50VHlwZSB7CisgICAgImF1dGhlbnRpY2F0aW9uIiwKKyAgICAia2V5SUQiLAorICAgICJvdGhl
ciIsCisgICAgInN5bnRheCIKK307CisKK2RpY3Rpb25hcnkgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
RXJyb3JFdmVudEluaXQgOiBFdmVudEluaXQgeworICAgIHJlcXVpcmVkIFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybUVycm9yRXZlbnRUeXBlIGVycm9yVHlwZTsKK307CisKK1sKKyAgICBDb25kaXRpb25h
bD1XRUJfUlRDLAorICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMs
CisgICAgRXhwb3NlZD0oV2luZG93LERlZGljYXRlZFdvcmtlciksCisgICAgSW50ZXJmYWNlTmFt
ZT1TRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50CitdIGludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1FcnJvckV2ZW50IDogRXZlbnQgeworICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBl
LCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50SW5pdCBldmVudEluaXREaWN0KTsKKwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50VHlw
ZSBlcnJvclR5cGU7CisgICAgLy8gRklYTUU6IEFkZCBiZWxvdyBmaWVsZHMKKyAgICAvLyByZWFk
b25seSBhdHRyaWJ1dGUgQ3J5cHRvS2V5SUQ/IGtleUlEOworICAgIC8vIHJlYWRvbmx5IGF0dHJp
YnV0ZSBhbnkgZnJhbWU7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAppbmRleCA2MDMw
MGRlY2QzZTkyNDEyMjQyN2FlY2E5ZTliZTgyOTcwYmY1MzZjLi43YmExNTg5ZGIyNWUzNmVlNzM5
NjQyM2QwYjAzZGVjOGUxOGQ4N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiU0ZyYW1lVXRp
bHMuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE2MCw2ICsxNjEsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3QKICAgICByZXR1
cm4gdXBkYXRlRW5jcnlwdGlvbktleShyYXdLZXksIGtleUlkLCBTaG91bGRVcGRhdGVLZXlzOjpZ
ZXMpOwogfQogCitib29sIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpoYXNLZXkodWludDY0X3Qg
a2V5SWQpIGNvbnN0Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fa2V5TG9jayB9OworICAgIHJl
dHVybiBXVEY6OmFueU9mKG1fa2V5cywgW2tleUlkXShhdXRvJiBrZXkpIHsgcmV0dXJuIGtleUlk
ID09IGtleS5rZXlJZDsgfSk7Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp1cGRhdGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3
S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgU2hvdWxkVXBkYXRlS2V5cyBzaG91
bGRVcGRhdGVLZXlzKQogewogICAgIEFTU0VSVChtX2tleUxvY2suaXNMb2NrZWQoKSk7CkBAIC0x
OTksNyArMjA2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6
OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQKICAgICByZXR1cm4geyB9Owog
fQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXpl
KQorUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlRyYW5zZm9ybVJlc3VsdCBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90
IGZyYW1lU2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIHN3aXRjaCAo
bV9jb21wYXRpYmlsaXR5TW9kZSkgewpAQCAtMjI5LDIzICsyMzYsMjMgQEAgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKGNv
bnN0IHVpbnQ4X3QKICAgICBhdXRvIGhlYWRlciA9IHBhcnNlU0ZyYW1lSGVhZGVyKGZyYW1lRGF0
YSwgZnJhbWVTaXplKTsKIAogICAgIGlmICghaGVhZGVyKQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9ySW5mb3JtYXRpb24ge0Vycm9yOjpTeW50YXgsICJJbnZhbGlkIGhlYWRlciJfcywgMCB9
KTsKIAogICAgIGlmIChoZWFkZXItPmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1fY291bnRlcikK
LSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvckluZm9ybWF0aW9uIHtFcnJvcjo6U3ludGF4LCAi
SW52YWxpZCBjb3VudGVyIl9zLCAwIH0pOwogICAgIG1fY291bnRlciA9IGhlYWRlci0+Y291bnRl
cjsKIAogICAgIGlmIChoZWFkZXItPmtleUlkICE9IG1fa2V5SWQpIHsKICAgICAgICAgYXV0byBw
b3NpdGlvbiA9IG1fa2V5cy5maW5kTWF0Y2hpbmcoW2tleUlkID0gaGVhZGVyLT5rZXlJZF0oYXV0
byYgaXRlbSkgeyByZXR1cm4gaXRlbS5rZXlJZCA9PSBrZXlJZDsgfSk7CiAgICAgICAgIGlmIChw
b3NpdGlvbiA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRh
RXJyb3IsICJLZXkgSUQgaXMgdW5rbm93biIgfTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvckluZm9ybWF0aW9uIHsgRXJyb3I6OktleUlELCAgIktleSBJRCBpcyB1bmtu
b3duIl9zLCBoZWFkZXItPmtleUlkIH0pOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHVwZGF0ZUVu
Y3J5cHRpb25LZXkobV9rZXlzW3Bvc2l0aW9uXS5rZXlEYXRhLCBoZWFkZXItPmtleUlkLCBTaG91
bGRVcGRhdGVLZXlzOjpObyk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvckluZm9ybWF0aW9uIHtFcnJvcjo6T3RoZXIsIHJl
c3VsdC5leGNlcHRpb24oKS5tZXNzYWdlKCksIDAgfSk7CiAgICAgfQogCiAgICAgaWYgKGZyYW1l
U2l6ZSA8IChoZWFkZXItPnNpemUgKyBtX2F1dGhlbnRpY2F0aW9uU2l6ZSkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IsICJDaHVuayBpcyB0b28gc21hbGwgZm9yIGF1dGhl
bnRpY2F0aW9uIHNpemUiIH07CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcklu
Zm9ybWF0aW9uIHsgRXJyb3I6OlN5bnRheCwgIkNodW5rIGlzIHRvbyBzbWFsbCBmb3IgYXV0aGVu
dGljYXRpb24gc2l6ZSJfcywgMCB9KTsKIAogICAgIGF1dG8gaXYgPSBjb21wdXRlSVYobV9jb3Vu
dGVyLCBtX3NhbHRLZXkpOwogCkBAIC0yNTUsNyArMjYyLDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVp
bnQ4X3QKICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IG1fYXV0aGVudGljYXRpb25T
aXplOyArK2NwdHIpIHsKICAgICAgICAgaWYgKHNpZ25hdHVyZVtjcHRyXSAhPSB0cmFuc21pdHRl
ZFNpZ25hdHVyZVtjcHRyXSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkg
cmF0Y2hldGluZy4KLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9ySW5mb3JtYXRp
b24geyBFcnJvcjo6QXV0aGVudGljYXRpb24sICJBdXRoZW50aWNhdGlvbiBmYWlsZWQiX3MsIDAg
fSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI2NCwxMiArMjcxLDEyIEBAIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZShj
b25zdCB1aW50OF90CiAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0RGF0YShmcmFtZURhdGEgKyBo
ZWFkZXItPnNpemUsIGRhdGFTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5KTsKIAogICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3JJbmZvcm1hdGlvbiB7
IEVycm9yOjpPdGhlciwgcmVzdWx0LmV4Y2VwdGlvbigpLm1lc3NhZ2UoKSwgMCB9KTsKIAogICAg
IHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZShjb25z
dCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCitSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6VHJhbnNmb3JtUmVzdWx0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjplbmNyeXB0
RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQogewogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CiAKQEAgLTMxNCw3ICsz
MjEsNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgIGF1dG8gZW5jcnlwdGVkRGF0YSA9
IGVuY3J5cHREYXRhKGZyYW1lRGF0YSwgZnJhbWVTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5KTsK
ICAgICBBU1NFUlQoIWVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkpOwogICAgIGlmIChlbmNy
eXB0ZWREYXRhLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZW5jcnlwdGVkRGF0YS5y
ZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcklu
Zm9ybWF0aW9uIHsgRXJyb3I6Ok90aGVyLCBlbmNyeXB0ZWREYXRhLmV4Y2VwdGlvbigpLm1lc3Nh
Z2UoKSwgMCB9KTsKIAogICAgIHN0ZDo6bWVtY3B5KG5ld0RhdGFQb2ludGVyICsgaGVhZGVyU2l6
ZSwgZW5jcnlwdGVkRGF0YS5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgZnJhbWVTaXplKTsKIApAQCAt
MzMwLDEwICszMzcsMTAgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QKICAgICByZXR1cm4gdHJh
bnNmb3JtZWREYXRhOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCitSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6VHJhbnNmb3JtUmVzdWx0IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiB7CiAgICAgaWYgKCFtX2hhc0tleSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiS2V5IGlzIG5vdCBpbml0aWFsaXplZCJfcyB9OworICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3JJbmZvcm1hdGlvbiB7IEVycm9yOjpLZXlJRCwgICJLZXkg
aXMgbm90IGluaXRpYWxpemVkIiwgMCB9KTsKIAogICAgIHJldHVybiBtX2lzRW5jcnlwdGluZyA/
IGVuY3J5cHRGcmFtZShkYXRhLCBzaXplKSA6IGRlY3J5cHRGcmFtZShkYXRhLCBzaXplKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaAppbmRleCAxOTg4NDk1YWE5ZDY0ZTAzNTA5YTJlMWM5ZTM1
ZjYyYjg3ZDU3YzYxLi42MmIwMWI1Mzg5MGFmYTVhNzNmNWUxNmVjNDNlY2NjZGQxMGMxMWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCkBAIC00OCw3ICs0OCwxNSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRNZWRpYVR5cGUoUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6TWVkaWFUeXBlKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEVuY3J5cHRpb25LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybShj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKworICAgIGVudW0gY2xhc3MgRXJyb3IgeyBLZXlJRCwg
QXV0aGVudGljYXRpb24sIFN5bnRheCwgT3RoZXIgfTsKKyAgICBzdHJ1Y3QgRXJyb3JJbmZvcm1h
dGlvbiB7CisgICAgICAgIEVycm9yIGVycm9yOworICAgICAgICBTdHJpbmcgbWVzc2FnZTsKKyAg
ICAgICAgdWludDY0X3Qga2V5SWQgeyAwIH07CisgICAgfTsKKyAgICB1c2luZyBUcmFuc2Zvcm1S
ZXN1bHQgPSBFeHBlY3RlZDxWZWN0b3I8dWludDhfdD4sIEVycm9ySW5mb3JtYXRpb24+OworICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybVJlc3VsdCB0cmFuc2Zvcm0oY29uc3QgdWludDhfdCos
IHNpemVfdCk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0aW9uS2V5
KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbktleTsgfQogICAgIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZW5jcnlwdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jcnlwdGlvbktl
eTsgfQpAQCAtNTgsMTEgKzY2LDEzIEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBjb3VudGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9CiAgICAgdm9pZCBzZXRDb3VudGVyKHVpbnQ2NF90
IGNvdW50ZXIpIHsgbV9jb3VudGVyID0gY291bnRlcjsgfQogCisgICAgYm9vbCBoYXNLZXkodWlu
dDY0X3QpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKENvbXBhdGliaWxpdHlNb2RlKTsKIAotICAgIEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwotICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZW5jcnlwdEZyYW1lKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOworICAgIFRyYW5zZm9ybVJlc3VsdCBkZWNyeXB0RnJhbWUoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7CisgICAgVHJhbnNmb3JtUmVzdWx0IGVuY3J5cHRGcmFtZShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlS2V5cyB7
IE5vLCBZZXMgfTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVFbmNyeXB0aW9uS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgU2hv
dWxkVXBkYXRlS2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6OlllcykgV1RGX1JFUVVJUkVTX0xPQ0so
bV9rZXlMb2NrKTsKQEAgLTc2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhf
dD4gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBu
b25jZSwgY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgaGVhZGVyU2l6ZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7
CiAgICAgdm9pZCB1cGRhdGVBdXRoZW50aWNhdGlvblNpemUoKTsKIAotICAgIExvY2sgbV9rZXlM
b2NrOworICAgIG11dGFibGUgTG9jayBtX2tleUxvY2s7CiAgICAgYm9vbCBtX2hhc0tleSB7IGZh
bHNlIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYXV0aGVudGljYXRpb25LZXk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG1fZW5jcnlwdGlvbktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZTM4NDAwMDRi
NmZlYjdkYTFkYmYzNGFhZGNhMzllMjFhN2RiOTNlMi4uZjEwM2NjNmE2YzFkYzAzYjE1ZDhkZWY0
Yjg5ZmE0ZTY3OTczZjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MSw2ICsxNzEsNyBAQCBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAK
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwCkBAIC0zMzI1
LDYgKzMzMjYsNyBAQCBKU1JUQ1J0cFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFJlY2VpdmVyLmNw
cAogSlNSVENSdHBSdHhQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3Bw
CitKU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuY3BwCiBKU1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybS5jcHAKIEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwCiBKU1JUQ1J0cFNlbmRQ
YXJhbWV0ZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDgyM2ViMmI3ODliZjNlOTRmM2Y2N2MwOWRmZDljYWQxOTkwZjQ5
OWIuLmU4ZTVjMTAzOTQ1YTRmYzRlY2I0OTAyMmViYzU1NjgyZTNjMTM2YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5ODQs
NiArNzk4NCw5IEBACiAJCTQxQjJBNjI1MUVGMUJGNjAwMDJCOUQ3QSAvKiBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCNDU5REExRjRDQURCOTAwMDBGNkZEIC8qIFJl
YWRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjQ1OUVEMUY1NUVCQzcw
MDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxQjZBQTRGMjZCOTk1RjgwMEFBREZBNyAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJv
ckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybUVycm9yRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFCNkFB
NTEyNkI5OTVGODAwQUFERkE3IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUI2QUE1MjI2Qjk5NUY5MDBBQURG
QTcgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCODc3NjAyM0RFMTA0MjAwMzYzOEI4
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQjkxMzc2MjM1ODREMEUwMDI1QkZBMyAvKiBNb2NrQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFC
OTEzNzgyMzU4NEQwRjAwMjVCRkEzIC8qIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzIzNiw2ICsxNzIzOSw5
IEBACiAJCQkJNDE4MUM2NDUyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAgKi8sCiAJCQkJNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5oICovLAogCQkJCTQxODFDNjQzMjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaWRsICovLAorCQkJCTQxQjZBQTUyMjZCOTk1RjkwMEFBREZBNyAvKiBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50LmNwcCAqLywKKwkJCQk0MUI2QUE0RjI2Qjk5NUY4
MDBBQURGQTcgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5oICovLAorCQkJCTQx
QjZBQTUxMjZCOTk1RjgwMEFBREZBNyAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50
LmlkbCAqLywKIAkJCQk0MTgxQzY0MTI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIuY3BwICovLAogCQkJCTQxODFDNjQyMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lci5oICovLAogCQkJCTQxODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAvKiBS
VENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAppbmRleCAwYTg0NzE1NDQ5OTA1NDEy
Nzg2Y2YxOWJjNWNhN2VkMmNmOGQyOTQ3Li42NTRlNmZmMDM2NGJiMjBhZTE0ZjZiZGM5YzA0NzU2
MjEyOTc3OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oCkBAIC0yMTksNiArMjE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IG1hY3JvKFJlcXVlc3QpIFwKICAgICBtYWNybyhSZXNwb25zZSkgXAogICAgIG1hY3JvKFNGcmFt
ZVRyYW5zZm9ybSkgXAorICAgIG1hY3JvKFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQpIFwKICAg
ICBtYWNybyhTY3JlZW5MdW1pbmFuY2UpIFwKICAgICBtYWNybyhTZXJ2aWNlV29ya2VyKSBcCiAg
ICAgbWFjcm8oU2VydmljZVdvcmtlckNvbnRhaW5lcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5p
bgppbmRleCAyYmNkNzNjM2I4MzgwNmJkMWI3ZTEwOWU2ZmM4OTY3YjFiY2Y5OWE3Li4zODc4MTMw
MGFmYWZlNTgzMWNmMWVjYTY0OGFkYTJlZDM0YmNmNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5pbgpAQCAtNjQsNiArNjQsNyBAQCBSVENQZWVyQ29ubmVjdGlvbkljZUVycm9yRXZlbnQgY29u
ZGl0aW9uYWw9V0VCX1JUQwogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCBjb25kaXRpb25hbD1X
RUJfUlRDCiBSVENEYXRhQ2hhbm5lbEV2ZW50IGNvbmRpdGlvbmFsPVdFQl9SVEMKIFJUQ0RUTUZU
b25lQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9V0VCX1JUQworUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
RXJyb3JFdmVudCBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENUcmFja0V2ZW50IGNvbmRpdGlvbmFs
PVdFQl9SVEMKIFJUQ1RyYW5zZm9ybUV2ZW50IGNvbmRpdGlvbmFsPVdFQl9SVEMKIFNwZWVjaFJl
Y29nbml0aW9uRXJyb3JFdmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KaW5kZXggMWQ4YmE2NTQ5OGNmNjc3N2MyN2I4MTgwODNjODRlYzljNDNkMjUwZi4uZjc2ZmZk
MGVlMGI1MDkyOTA0NDVkNTU2MmFmMzAxNzdiYzMyYWI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC00MCw2ICs0MCw3IEBAIFJlbW90ZVBsYXliYWNrIGNv
bmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVAogUlRDRGF0YUNoYW5uZWwgY29uZGl0
aW9uYWw9V0VCX1JUQwogUlRDRFRNRlNlbmRlciBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENQZWVy
Q29ubmVjdGlvbiBjb25kaXRpb25hbD1XRUJfUlRDCitSVENSdHBTRnJhbWVUcmFuc2Zvcm0gY29u
ZGl0aW9uYWw9V0VCX1JUQwogUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGNvbmRpdGlvbmFsPVdFQl9S
VEMKIFNlcnZpY2VXb3JrZXIgY29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIKIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIgY29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOGZjMTU0NjFi
NTU4MGFhYWY2NDBjNzI0Y2ZiNzgzMTkyMzNkZjdkLi45MTg2MzZjZDljZjVmZTdlZmJkMDVhMzkw
NjZkOGIxNzRmMDA0ZGZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMTAgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTRnJhbWVU
cmFuc2Zvcm0gZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyODk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tZXJyb3It
d29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9ucnRjdHJhbnNmb3JtLmFzeW5jIGV2ZW50KToK
KyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci1l
eHBlY3RlZDogQWRkZWQuCisKIDIwMjEtMDctMzEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3OTU2NCk6IFtHVEtdIE1vdXNl
IHdoZWVsIHNjcm9sbGluZyBzY3JvbGxzIHRvbyBsaXR0bGUgKHRha2UgdHdvKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tZXJyb3ItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0t
ZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmOGJjNWVlYzVhMjNiOGMzYTQyNjg0YWQ4
NGYyNjI4Y2I0YjRlNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBA
CisKKworUEFTUyBNaXNzaW5nIGtleSB0cmlnZ2VycyBhbiBlcnJvciB0aGF0IGNhbiBiZSBjb3Jy
ZWN0ZWQgYnkgYWRkaW5nIGEga2V5CitQQVNTIFRhbXBlcmVkIGRhdGEgc2hvdWxkIHRyaWdnZXIg
U0ZyYW1lVHJhbnNmb3JtIGVycm9ycworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci13b3JrZXIuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzgxMzljZTA2MDI0YTczNjllNzg1NTZmMTFiYmRjMDkxZmNmNTQ3MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWVycm9y
LXdvcmtlci5qcwpAQCAtMCwwICsxLDMyIEBACitsZXQgdHJpZ2dlckVycm9yOworb25tZXNzYWdl
ID0gKGV2ZW50KSA9PiB0cmlnZ2VyRXJyb3IgPSBldmVudC5kYXRhLmFjdGlvbjsKKworb25ydGN0
cmFuc2Zvcm0gPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGV2
ZW50LnRyYW5zZm9ybWVyOworCisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5p
bXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwg
MzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFs
c2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgY29uc3Qgc2ZyYW1lVHJhbnNm
b3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGU6ICJlbmNyeXB0IiwgYXV0aGVudGljYXRp
b25TaXplOiAiNCIgfSk7CisgICAgc2ZyYW1lVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5
LCAxKTsKKworICAgIGNvbnN0IHBvc3RUcmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0
cmFuc2Zvcm06IChmcmFtZSwgY29udHJvbGxlcikgPT4geworICAgICAgIGlmICh0cmlnZ2VyRXJy
b3IgPT09ICJhdXRoZW50aWNhdGlvbkVycm9yIikgeworICAgICAgICAgIGNvbnN0IGRhdGEgPSBu
ZXcgVWludDhBcnJheShmcmFtZS5kYXRhKTsKKyAgICAgICAgICAvLyBXZSBjaGFuZ2UgdGhlIGF1
dGhlbnRpY2F0aW9uIHRhZy4KKyAgICAgICAgICBkYXRhW2RhdGEuYnl0ZUxlbmd0aCAtIDFdID0g
IWRhdGFbZGF0YS5ieXRlTGVuZ3RoIC0gMV07CisgICAgICAgICAgZnJhbWUuZGF0YSA9IGRhdGEu
YnVmZmVyOworICAgICAgIH0gZWxzZSBpZiAodHJpZ2dlckVycm9yID09PSAic3ludGF4RXJyb3Ii
KSB7CisgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBVaW50OEFycmF5KGZyYW1lLmRhdGEpOwor
ICAgICAgICAgIC8vIFdlIHNldCB0aGUgc2lnbmF0dXJlIGJpdC4KKyAgICAgICAgICBkYXRhWzBd
ID0gMjU1OworICAgICAgICAgIGZyYW1lLmRhdGEgPSBkYXRhLmJ1ZmZlcjsKKyAgICAgICB9Cisg
ICAgICAgdHJpZ2dlckVycm9yID0gdW5kZWZpbmVkOworICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1
ZShmcmFtZSk7CisgICAgfX0pOworCisgICAgdHJhbnNmb3JtZXIucmVhZGFibGUucGlwZVRocm91
Z2goc2ZyYW1lVHJhbnNmb3JtKQorCQkucGlwZVRocm91Z2gocG9zdFRyYW5zZm9ybSkKKwkJLnBp
cGVUbyh0cmFuc2Zvcm1lci53cml0YWJsZSk7Cit9CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3Rl
cmVkIik7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUt
dHJhbnNmb3JtLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1l
LXRyYW5zZm9ybS1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNWNmNjAyNzRkNmUyNmUwMWQxNjNl
OWY5MjY3ZmRkY2RlN2QwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwh
ZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvd2VicnRjLWVuY29kZWQt
dHJhbnNmb3JtL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+
CisgICAgICAgIDx2aWRlbyBpZD0ndmlkZW8nIGNvbnRyb2xzIGF1dG9wbGF5IHBsYXlzaW5saW5l
PjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICBjb25zdCBrZXkxID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIs
IG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIx
OSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0
cyIsICJkZXJpdmVLZXkiXSk7CisgICAgY29uc3Qga2V5MiA9IGF3YWl0IGNyeXB0by5zdWJ0bGUu
aW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQ0LCA3NywgNDMsIDEwLCA3MiwgMTks
IDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIsIGZh
bHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworICAgIGNvbnN0IGtleTMgPSBhd2Fp
dCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0NSwgNzcs
IDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAx
NzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKyAgICBj
b25zdCBrZXk0ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50
OEFycmF5KFsxNDYsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkz
LCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJp
dmVLZXkiXSk7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIGxldCByZWNlaXZlcjsK
KyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25zID0gY3JlYXRlQ29ubmVjdGlvbnModGVzdCwg
KGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgY29uc3Qgc2VuZGVyID0gZmlyc3RD
b25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2Fs
U3RyZWFtKTsKKyAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zv
cm07CisgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkxLCAxKTsKKyAg
ICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNv
bmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sg
PSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5l
dyBTRnJhbWVUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5cHRp
b25LZXkoa2V5MSwgMCk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJl
Y2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
KyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAg
ICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4gcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGxldCBlcnJvciA9
IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVjZWl2ZXIudHJhbnNmb3JtLm9uZXJyb3Ig
PSByZXNvbHZlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9yLmVycm9yVHlwZSwgImtleUlEIik7
CisgICAgcmVjZWl2ZXIudHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5MSwgMSk7CisKKyAg
ICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJlY2Vp
dmVyLnRyYW5zZm9ybS5vbmVycm9yID0gKCkgPT4gcmVqZWN0KCdzZnJhbWUgc3RpbGwgaGFzIGVy
cm9ycycpOworICAgICAgICB0ZXN0LnN0ZXBfdGltZW91dChyZXNvbHZlLCAxMDApOworICAgIH0p
OworfSwgIk1pc3Npbmcga2V5IHRyaWdnZXJzIGFuIGVycm9yIHRoYXQgY2FuIGJlIGNvcnJlY3Rl
ZCBieSBhZGRpbmcgYSBrZXkiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAgd29ya2VyID0gbmV3IFdvcmtlcignc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci13b3JrZXIuanMn
KTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIu
b25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2Fp
dCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0pOwor
CisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9y
bSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlwdG8u
c3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAxMCwg
NzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwgIkhL
REYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKyAgICByZWNlaXZlclRy
YW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSwgMSk7CisKKyAgICBjb25zdCBzZW5kZXJUcmFu
c2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgIlNGcmFtZVJUQ1J0cFRy
YW5zZm9ybSIpOworCisgICAgY29uc3Qgc3RhcnRlZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkp
OworCisgICAgY29uc3QgcmVtb3RlU3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RDb25u
ZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247CisgICAgICAg
ICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VHJh
Y2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBz
ZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAg
ICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVj
dGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZl
ciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNm
b3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2
ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHRl
c3Quc3RlcF90aW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7Cisg
ICAgfSk7CisKKyAgICB2aWRlby5zcmNPYmplY3QgPSByZW1vdGVTdHJlYW07CisKKyAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2Uoe2FjdGlvbjoiYXV0aGVudGljYXRpb25FcnJvciJ9KTsKKyAgICBsZXQg
ZXJyb3IgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlY2VpdmVyLnRyYW5zZm9ybS5v
bmVycm9yID0gcmVzb2x2ZSk7CisgICAgYXNzZXJ0X2VxdWFscyhlcnJvci5lcnJvclR5cGUsICJh
dXRoZW50aWNhdGlvbiIpOworCisgICAgd29ya2VyLnBvc3RNZXNzYWdlKHthY3Rpb246InN5bnRh
eEVycm9yIn0pOworICAgIGVycm9yID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiByZWNl
aXZlci50cmFuc2Zvcm0ub25lcnJvciA9IHJlc29sdmUpOworICAgIGFzc2VydF9lcXVhbHMoZXJy
b3IuZXJyb3JUeXBlLCAic3ludGF4Iik7Cit9LCAiVGFtcGVyZWQgZGF0YSBzaG91bGQgdHJpZ2dl
ciBTRnJhbWVUcmFuc2Zvcm0gZXJyb3JzIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435262</attachid>
            <date>2021-08-10 08:53:59 -0700</date>
            <delta_ts>2021-08-12 02:37:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228947-20210810175357.patch</filename>
            <type>text/plain</type>
            <size>54621</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhOGY2YTA2NzU2YTI5
YzY0ZDM1ZTIyMWQ4ZTE3YTY2ODBkNTBmYi4uYmNiMzM2YzQ3YjYwZDM2NzVhNmRhMDM5ODEwNTI5
Y2FjY2UwZGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA4LTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU0ZyYW1l
VHJhbnNmb3JtIGVycm9yIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjg5NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJy
b3JFdmVudC4KKyAgICAgICAgV2hlbiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciBlbmNvdW50ZXJz
IGFuIGlzc3VlLCBkaXNwYXRjaCBhIHRhc2sgdG8gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGNvbnRl
eHQgYW5kIGZpcmUgYSBjb3JyZXNwb25kaW5nIGV2ZW50LgorICAgICAgICBUaGlzIGZvbGxvd3Mg
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1lbmNvZGVkLXRyYW5zZm9ybS8jc2ZyYW1lLXRy
YW5zZm9ybS1hbGdvcml0aG0sIGV4Y2VwdCB0aGF0OgorICAgICAgICAtIHdlIGFyZSBub3QgeWV0
IGV4cG9zaW5nIHNvbWUgZmllbGRzIGluIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQu
CisgICAgICAgIC0gd2UgYXJlIHVzaW5nIGVycm9yVHlwZSBpbnN0ZWFkIG9mIHR5cGUgd2hpY2gg
c2hvdWxkIGJlIGZpeGVkIGluIHRoZSBzcGVjLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLWVuY29kZWQtdHJhbnNmb3JtL3NmcmFtZS10cmFu
c2Zvcm0tZXJyb3IuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmVycm9yVHlwZUZyb21JbmZvcm1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpwcm9jZXNzRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjpoYXNLZXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
OjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6d3JpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp2
aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50OjpSVENSdHBT
RnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmV2ZW50SW50ZXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuaDogQWRk
ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1F
cnJvckV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6aGFzS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjpkZWNyeXB0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmg6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1l
cy5pbjoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorCiAyMDIxLTA4LTAz
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgRmly
c3RXaXRoRE9NV2luZG93UmV1c2VSZXN0cmljdGlvbiBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2sg
dG8gbGF0ZXN0IE1hY09TL2lPUyBiZXRhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjODg0ODAy
YzJmNmQwZjE4MzhjNThlY2RiYjNlYTk4YTA3MGZhZDU4Li42ZDMzNjgyN2Y5ZDA0ZWExZWQwZWQ3
YmZkMjQwOWI5NjExMTU2N2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNDEyLDYgKzQxMiw3
IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJ0eFBh
cmFtZXRlcnMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJv
ckV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlk
ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5p
ZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IDc3Mzk0Yjc2YzQ1ZjZiYWU5N2EwNTAxYWMxYmEyMGVmMTA0YmExYmMuLjFiMjQyYjM3NGI2
ZmQwMzE1ODMyZDcwYTU4ZWMxMzBiNGFiMWIyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMjU2LDYgKzI1Niw3IEBAICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAog
JChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUnR4UGFyYW1ldGVycy5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
LmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1FcnJvckV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggZjQ3ZTU5OTQy
MDliYTcyNjU5YjgyNTQ5MTkwMjMzNWE2Mjg1YjI0OS4uZDQyNmEwMmZmMWM1NjRkZWY4NjBlODc4
YjcyMzcxYjYwOWM0ZWRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKQEAgLTE2OTcsNiArMTY5Nyw4IEBAICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFy
YW1ldGVycy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJy
b3JFdmVudC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCBmMTMzMmMwZDNmOTIzYmEwYTJhNzUzM2RhM2I5ODAzMzk3NDgzOThkLi4y
YmRjOGQ1OTM5ODk5NGYxODkyOTNjMjBmYTNjMzIwZDNhZjkzNTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKQEAgLTI4Myw2ICsyODMsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtRXJyb3JFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRs
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCA1MmUyODgwYjgyMDdmNTljOGNmNzBhM2I5
MmQxNzU4OWUxN2NjNGU0Li4yYzMwZjZmNjgxOTY3YTYxNzYzNTVhZmE5YWYyMDU1ZDA4N2M4ZTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlJUQ0VuY29kZWRBdWRpb0ZyYW1lLmgiCiAjaW5jbHVkZSAi
UlRDRW5jb2RlZFZpZGVvRnJhbWUuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm1F
cnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCIKICNpbmNs
dWRlICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCiAjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lLmgiCkBAIC00MywxMyArNDQsMTggQEAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlICJXcml0YWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFt
U2luay5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSk7CisKIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbnMgb3B0aW9ucykKLSAgICA6IENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZjb250ZXh0KQogICAgICwgbV90cmFuc2Zvcm1lcihSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6
Y3JlYXRlKG9wdGlvbnMuY29tcGF0aWJpbGl0eU1vZGUpKQogeworICAgIHN1c3BlbmRJZk5lZWRl
ZCgpOworCiAgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNFbmNyeXB0aW5nKG9wdGlvbnMucm9sZSA9
PSBSb2xlOjpFbmNyeXB0KTsKICAgICBtX3RyYW5zZm9ybWVyLT5zZXRBdXRoZW50aWNhdGlvblNp
emUob3B0aW9ucy5hdXRoZW50aWNhdGlvblNpemUpOwogfQpAQCAtOTUsMTAgKzEwMSw1MyBAQCBi
b29sIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRhY2hlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNBdHRhY2hlZCB8fCAobV9yZWFkYWJsZSAmJiBtX3JlYWRhYmxlLT5pc0xvY2tlZCgpKSB8
fCAobV93cml0YWJsZSAmJiBtX3dyaXRhYmxlLT5pc0xvY2tlZCgpKTsKIH0KIAorc3RhdGljIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OlR5cGUgZXJyb3JUeXBlRnJvbUluZm9ybWF0
aW9uKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpFcnJvckluZm9ybWF0aW9uJiBlcnJv
ckluZm9ybWF0aW9uKQoreworICAgIHN3aXRjaCAoZXJyb3JJbmZvcm1hdGlvbi5lcnJvcikgewor
ICAgIGNhc2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9yOjpLZXlJRDoKKyAgICAgICAg
cmV0dXJuIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OlR5cGU6OktleUlEOworICAg
IGNhc2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9yOjpBdXRoZW50aWNhdGlvbjoKKyAg
ICAgICAgcmV0dXJuIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OlR5cGU6OkF1dGhl
bnRpY2F0aW9uOworICAgIGNhc2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OkVycm9yOjpTeW50
YXg6CisgICAgICAgIHJldHVybiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50OjpUeXBl
OjpTeW50YXg7CisgICAgY2FzZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6RXJyb3I6Ok90aGVy
OgorICAgICAgICByZXR1cm4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudDo6VHlwZTo6
T3RoZXI7CisgICAgfQorfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IHByb2Nlc3NGcmFtZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSwgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXImIHRyYW5zZm9ybWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWFrUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHdl
YWtUcmFuc2Zvcm0pCit7CisgICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1lci50cmFuc2Zvcm0o
ZGF0YSwgc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgYXV0
byBlcnJvckluZm9ybWF0aW9uID0gV1RGTW92ZShyZXN1bHQuZXJyb3IoKSk7CisgICAgICAgIGVy
cm9ySW5mb3JtYXRpb24ubWVzc2FnZSA9IHsgfTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
V2ViUlRDLCAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGZhaWxlZCB0cmFuc2Zvcm1pbmcgYSBmcmFt
ZSB3aXRoIGVycm9yICVkIiwgZXJyb3JJbmZvcm1hdGlvbi5lcnJvcik7CisgICAgICAgIC8vIENh
bGwgdGhlIGVycm9yIGV2ZW50IGhhbmRsZXIuCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnBvc3RUYXNrVG8oaWRlbnRpZmllciwgW2Vycm9ySW5mb3JtYXRpb24sIHdlYWtUcmFuc2Zv
cm1dKGF1dG8mJikgeworICAgICAgICAgICAgaWYgKCF3ZWFrVHJhbnNmb3JtIHx8IHdlYWtUcmFu
c2Zvcm0tPmlzQ29udGV4dFN0b3BwZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBpZiAoZXJyb3JJbmZvcm1hdGlvbi5lcnJvciA9PSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjo6RXJyb3I6OktleUlEICYmIHdlYWtUcmFuc2Zvcm0tPmhhc0tleShlcnJvckluZm9ybWF0
aW9uLmtleUlkKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB3ZWFrVHJh
bnNmb3JtLT5kaXNwYXRjaEV2ZW50KFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmNy
ZWF0ZShFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIGVycm9y
VHlwZUZyb21JbmZvcm1hdGlvbihlcnJvckluZm9ybWF0aW9uKSkpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0LnZhbHVl
KCkpOworfQorCitib29sIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aGFzS2V5KHVpbnQ2NF90IGtl
eUlEKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYW5zZm9ybWVyLT5oYXNLZXkoa2V5SUQpOwor
fQorCiB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJU
Q1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQsIFNpZGUgc2lkZSkKIHsKICAgICBBU1NFUlQo
IWlzQXR0YWNoZWQoKSk7CiAKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9pc0F0
dGFjaGVkID0gdHJ1ZTsKICAgICBpZiAobV9yZWFkYWJsZSkKICAgICAgICAgbV9yZWFkYWJsZS0+
bG9jaygpOwpAQCAtMTA4LDE2ICsxNTcsMTYgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06
OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW4KICAg
ICBtX3RyYW5zZm9ybWVyLT5zZXRJc0VuY3J5cHRpbmcoc2lkZSA9PSBTaWRlOjpTZW5kZXIpOwog
ICAgIG1fdHJhbnNmb3JtZXItPnNldE1lZGlhVHlwZShiYWNrZW5kLm1lZGlhVHlwZSgpKTsKIAot
ICAgIGJhY2tlbmQuc2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3RyYW5zZm9ybWVyID0g
bV90cmFuc2Zvcm1lciwgYmFja2VuZCA9IG1ha2VSZWYoYmFja2VuZCldKGF1dG8mJiBmcmFtZSkg
eworICAgIGJhY2tlbmQuc2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3RyYW5zZm9ybWVy
ID0gbV90cmFuc2Zvcm1lciwgaWRlbnRpZmllciA9IGNvbnRleHQtPmNvbnRleHRJZGVudGlmaWVy
KCksIGJhY2tlbmQgPSBtYWtlUmVmKGJhY2tlbmQpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpXShhdXRvJiYgZnJhbWUpIHsKICAgICAgICAgYXV0byBjaHVuayA9IGZyYW1lLT5kYXRhKCk7
Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShjaHVuay5kYXRh
LCBjaHVuay5zaXplKTsKKyAgICAgICAgaWYgKCFjaHVuay5kYXRhIHx8ICFjaHVuay5zaXplKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvIHJlc3VsdCA9IHByb2Nlc3NGcmFtZShj
aHVuay5kYXRhLCBjaHVuay5zaXplLCB0cmFuc2Zvcm1lci5nZXQoKSwgaWRlbnRpZmllciwgd2Vh
a1RoaXMpOwogCi0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBmYWls
ZWQgdHJhbnNmb3JtaW5nIGEgZnJhbWUiKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICBmcmFtZS0+c2V0RGF0YSh7IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgpIH0pOwor
ICAgICAgICBmcmFtZS0+c2V0RGF0YSh7IHJlc3VsdC52YWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnZh
bHVlKCkuc2l6ZSgpIH0pOwogCiAgICAgICAgIGJhY2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZy
YW1lKGZyYW1lLmdldCgpKTsKICAgICB9KTsKQEAgLTEzOCwzMSArMTg3LDI1IEBAIHZvaWQgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmIGJhY2tlbmQpCiAgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNr
KCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybUZyYW1lKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lciYgdHJhbnNmb3JtZXIsIFNpbXBsZVJlYWRhYmxlU3RyZWFtU291cmNlJiBz
b3VyY2UsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFdlYWtQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgd2Vha1RyYW5zZm9ybSkKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IHByb2Nlc3NGcmFtZShkYXRhLCBzaXplLCB0cmFuc2Zvcm1lciwgaWRlbnRp
Zmllciwgd2Vha1RyYW5zZm9ybSk7CisgICAgYXV0byBidWZmZXIgPSByZXN1bHQgPyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCpyZXN1bHQpKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgc291cmNlLmVucXVldWUodG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBi
dWZmZXItPnRyeUNyZWF0ZUFycmF5QnVmZmVyKCkuZ2V0KCkpKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgRnJhbWU+Ci12b2lkIHRyYW5zZm9ybUZyYW1lKEZyYW1lJiBmcmFtZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXImIHRyYW5zZm9y
bWVyLCBTaW1wbGVSZWFkYWJsZVN0cmVhbVNvdXJjZSYgc291cmNlKQordm9pZCB0cmFuc2Zvcm1G
cmFtZShGcmFtZSYgZnJhbWUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyJiB0cmFuc2Zvcm1lciwgU2ltcGxlUmVhZGFibGVTdHJlYW1Tb3Vy
Y2UmIHNvdXJjZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgV2Vha1B0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiB3ZWFrVHJhbnNmb3JtKQogewog
ICAgIGF1dG8gY2h1bmsgPSBmcmFtZS5ydGNGcmFtZSgpLmRhdGEoKTsKLSAgICBhdXRvIHJlc3Vs
dCA9IHRyYW5zZm9ybWVyLnRyYW5zZm9ybShjaHVuay5kYXRhLCBjaHVuay5zaXplKTsKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRihyZXN1bHQuaGFzRXhjZXB0aW9uKCksIFdlYlJUQywgIlJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSBmYWlsZWQgdHJhbnNmb3JtaW5nIGEgZnJhbWUiKTsKLQorICAgIGF1
dG8gcmVzdWx0ID0gcHJvY2Vzc0ZyYW1lKGNodW5rLmRhdGEsIGNodW5rLnNpemUsIHRyYW5zZm9y
bWVyLCBpZGVudGlmaWVyLCB3ZWFrVHJhbnNmb3JtKTsKICAgICBSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWU6OkRhdGEgdHJhbnNmb3JtZWRDaHVuazsKLSAgICAvLyBJbiBjYXNlIG9mIGVycm9yLCB3
ZSBqdXN0IHBhc3MgYWxvbmcgdGhlIGZyYW1lIHdpdGggZW1wdHkgZGF0YS4KLSAgICBpZiAoIXJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgdHJhbnNmb3JtZWRDaHVuayA9IHsgcmVzdWx0
LnJldHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfTsKLQor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIHRyYW5zZm9ybWVkQ2h1bmsgPSB7IHJlc3VsdC0+ZGF0
YSgpLCByZXN1bHQtPnNpemUoKSB9OwogICAgIGZyYW1lLnJ0Y0ZyYW1lKCkuc2V0RGF0YSh0cmFu
c2Zvcm1lZENodW5rKTsKICAgICBzb3VyY2UuZW5xdWV1ZSh0b0pTKCZnbG9iYWxPYmplY3QsICZn
bG9iYWxPYmplY3QsIGZyYW1lKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUZyYW1lKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciYgdHJhbnNmb3JtZXIsIFNpbXBsZVJlYWRh
YmxlU3RyZWFtU291cmNlJiBzb3VyY2UpCi17Ci0gICAgYXV0byByZXN1bHQgPSB0cmFuc2Zvcm1l
ci50cmFuc2Zvcm0oZGF0YSwgc2l6ZSk7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUYocmVzdWx0
Lmhhc0V4Y2VwdGlvbigpLCBXZWJSVEMsICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0gZmFpbGVkIHRy
YW5zZm9ybWluZyBhIGZyYW1lIik7Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IHJlc3VsdC5oYXNFeGNl
cHRpb24oKSA/IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCkpOwotICAgIHNvdXJjZS5lbnF1ZXVlKHRvSlMoJmds
b2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgYnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigp
LmdldCgpKSk7Ci19Ci0KIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1z
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlID0gU2ltcGxlUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSgpOwpAQCAtMTcw
LDcgKzIxMyw3IEBAIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjcmVhdGVTdHJlYW1zKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICBpZiAocmVhZGFibGUuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gd3JpdGFibGUgPSBXcml0YWJs
ZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgU2ltcGxlV3JpdGFibGVTdHJlYW1TaW5rOjpj
cmVhdGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgcmVhZGFibGVTdHJlYW1Tb3VyY2Ug
PSBtX3JlYWRhYmxlU3RyZWFtU291cmNlXShhdXRvJiBjb250ZXh0LCBhdXRvIHZhbHVlKSAtPiBF
eGNlcHRpb25Pcjx2b2lkPiB7CisgICAgYXV0byB3cml0YWJsZSA9IFdyaXRhYmxlU3RyZWFtOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LCBTaW1wbGVXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShbdHJh
bnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCByZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIGNvbnRl
eHQsIGF1dG8gdmFsdWUpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKICAgICAgICAgaWYgKCFjb250
ZXh0Lmdsb2JhbE9iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yIH07CiAgICAgICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGNvbnRleHQuZ2xvYmFsT2JqZWN0KCkpOwpAQCAtMTgyLDEz
ICsyMjUsMTMgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNyZWF0ZVN0cmVhbXMoSlND
OjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogCiAgICAgICAgIC8vIFdlIGRvIG5vdCB3
YW50IHRvIHRocm93IGFueSBleGNlcHRpb24gaW4gdGhlIHRyYW5zZm9ybSB0byBtYWtlIHN1cmUg
d2UgZG8gbm90IGVycm9yIHRoZSB0cmFuc2Zvcm0uCiAgICAgICAgIFdURjo6c3dpdGNoT24oZnJh
bWUsIFsmXShSZWZQdHI8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+JiB2YWx1ZSkgewotICAgICAgICAg
ICAgdHJhbnNmb3JtRnJhbWUoKnZhbHVlLCBnbG9iYWxPYmplY3QsIHRyYW5zZm9ybWVyLmdldCgp
LCAqcmVhZGFibGVTdHJlYW1Tb3VyY2UpOworICAgICAgICAgICAgdHJhbnNmb3JtRnJhbWUoKnZh
bHVlLCBnbG9iYWxPYmplY3QsIHRyYW5zZm9ybWVyLmdldCgpLCAqcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UsIGNvbnRleHQuY29udGV4dElkZW50aWZpZXIoKSwgd2Vha1RoaXMpOwogICAgICAgICB9LCBb
Jl0oUmVmUHRyPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiYgdmFsdWUpIHsKLSAgICAgICAgICAgIHRy
YW5zZm9ybUZyYW1lKCp2YWx1ZSwgZ2xvYmFsT2JqZWN0LCB0cmFuc2Zvcm1lci5nZXQoKSwgKnJl
YWRhYmxlU3RyZWFtU291cmNlKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybUZyYW1lKCp2YWx1ZSwg
Z2xvYmFsT2JqZWN0LCB0cmFuc2Zvcm1lci5nZXQoKSwgKnJlYWRhYmxlU3RyZWFtU291cmNlLCBj
b250ZXh0LmNvbnRleHRJZGVudGlmaWVyKCksIHdlYWtUaGlzKTsKICAgICAgICAgfSwgWyZdKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mIHZhbHVlKSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1GcmFtZShz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmRhdGEoKSksIHZhbHVlLT5ieXRlTGVu
Z3RoKCksIGdsb2JhbE9iamVjdCwgdHJhbnNmb3JtZXIuZ2V0KCksICpyZWFkYWJsZVN0cmVhbVNv
dXJjZSk7CisgICAgICAgICAgICB0cmFuc2Zvcm1GcmFtZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4odmFsdWUtPmRhdGEoKSksIHZhbHVlLT5ieXRlTGVuZ3RoKCksIGdsb2JhbE9iamVjdCwg
dHJhbnNmb3JtZXIuZ2V0KCksICpyZWFkYWJsZVN0cmVhbVNvdXJjZSwgY29udGV4dC5jb250ZXh0
SWRlbnRpZmllcigpLCB3ZWFrVGhpcyk7CiAgICAgICAgIH0sIFsmXShSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiYgdmFsdWUpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybUZyYW1lKHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgdmFsdWUtPmJ5dGVMZW5ndGgoKSwgZ2xv
YmFsT2JqZWN0LCB0cmFuc2Zvcm1lci5nZXQoKSwgKnJlYWRhYmxlU3RyZWFtU291cmNlKTsKKyAg
ICAgICAgICAgIHRyYW5zZm9ybUZyYW1lKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1
ZS0+ZGF0YSgpKSwgdmFsdWUtPmJ5dGVMZW5ndGgoKSwgZ2xvYmFsT2JqZWN0LCB0cmFuc2Zvcm1l
ci5nZXQoKSwgKnJlYWRhYmxlU3RyZWFtU291cmNlLCBjb250ZXh0LmNvbnRleHRJZGVudGlmaWVy
KCksIHdlYWtUaGlzKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfSkp
OwpAQCAtMjMyLDkgKzI3NSwxNSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8V3JpdGFibGVTdHJlYW0+
PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OndyaXRhYmxlKCkKICAgICBpZiAoIW1fd3JpdGFibGUp
CiAgICAgICAgIGNyZWF0ZVN0cmVhbXMoKmdsb2JhbE9iamVjdCk7CiAKKyAgICBtX2hhc1dyaXRh
YmxlID0gdHJ1ZTsKICAgICByZXR1cm4gbV93cml0YWJsZS5jb3B5UmVmKCk7CiB9CiAKK2Jvb2wg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjp2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gKG1faXNBdHRhY2hlZCB8fCBtX2hhc1dyaXRhYmxlKSAmJiBoYXNFdmVu
dExpc3RlbmVycygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCmluZGV4IDZiNzhiYmY1YzY1ZDJjNTdm
ZWZiYzY5ODRiMDgyODhiY2I4ZWZmYzAuLmI1YTVlYmU0OTRhNjFkOTc4MTg4MWJhZWEzNDE4ZjU1
YmE3YjA5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaApAQCAtMjcsOSArMjcsMTEgQEAKIAogI2lm
IEVOQUJMRShXRUJfUlRDKQogCi0jaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIu
aCIKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5o
IgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwpAQCAtNDMsNyArNDUsOCBAQCBjbGFzcyBSZWFk
YWJsZVN0cmVhbTsKIGNsYXNzIFNpbXBsZVJlYWRhYmxlU3RyZWFtU291cmNlOwogY2xhc3MgV3Jp
dGFibGVTdHJlYW07CiAKLWNsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIgeworY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogcHVibGljIFJlZkNvdW50
ZWQ8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFJvbGUgeyBF
bmNyeXB0LCBEZWNyeXB0IH07CiAgICAgdXNpbmcgQ29tcGF0aWJpbGl0eU1vZGUgPSBSVENSdHBT
RnJhbWVUcmFuc2Zvcm1lcjo6Q29tcGF0aWJpbGl0eU1vZGU7CkBAIC03MCwxNCArNzMsMzAgQEAg
cHVibGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4+IHJlYWRhYmxl
KCk7CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdyaXRhYmxlU3RyZWFtPj4gd3JpdGFibGUoKTsK
IAorICAgIGJvb2wgaGFzS2V5KHVpbnQ2NF90KSBjb25zdDsKKworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRD
UnRwU0ZyYW1lVHJhbnNmb3JtPjo6ZGVyZWY7CisKIHByaXZhdGU6CiAgICAgUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25zKTsKIAorICAgIC8vIEFj
dGl2ZURPTU9iamVjdAorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIjsgfQorICAgIGJvb2wgdmly
dHVhbEhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOworCisgICAgLy8gRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQorCiAgICAgZW51bSBjbGFzcyBTaWRlIHsgU2VuZGVyLCBSZWNlaXZl
ciB9OwogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmLCBTaWRlKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoSlNDOjpKU0dsb2JhbE9iamVjdCYp
OwogCiAgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNXcml0
YWJsZSB7IGZhbHNlIH07CiAgICAgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBtX3RyYW5z
Zm9ybWVyOwogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gbV9yZWFkYWJsZTsKICAgICBSZWZQ
dHI8V3JpdGFibGVTdHJlYW0+IG1fd3JpdGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKaW5k
ZXggNmZjY2Q2YmM5YTAxNTdiNjgzMDc1MTgzZTMyMzdmNDIzODhlMzY1NS4uYTllNTM1N2EzZTRi
ZjhkYjg1MjQ2ZTc4N2U5MTExMDEyNTE0MWI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbApA
QCAtNDEsMTMgKzQxLDE0IEBAIGRpY3Rpb25hcnkgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtT3B0aW9u
cyB7CiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbmRpdGlvbmFsPVdFQl9S
VEMsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKICAgICBF
eHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPShXaW5kb3csRGVkaWNhdGVk
V29ya2VyKSwKICAgICBJbnRlcmZhY2VOYW1lPVNGcmFtZVRyYW5zZm9ybSwKICAgICBKU0dlbmVy
YXRlVG9OYXRpdmVPYmplY3QsCi1dIGludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gewor
XSBpbnRlcmZhY2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogRXZlbnRUYXJnZXQgewogICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcihvcHRpb25hbCBSVENS
dHBTRnJhbWVUcmFuc2Zvcm1PcHRpb25zIG9wdGlvbnMpOwogCiAgICAgW0N1c3RvbV0gUHJvbWlz
ZTx1bmRlZmluZWQ+IHNldEVuY3J5cHRpb25LZXkoQ3J5cHRvS2V5IGtleSwgb3B0aW9uYWwgYW55
IGtleUlEKTsKQEAgLTU3LDQgKzU4LDYgQEAgZGljdGlvbmFyeSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1PcHRpb25zIHsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbSByZWFk
YWJsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV3JpdGFibGVTdHJlYW0gd3JpdGFibGU7CisK
KyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZXJyb3I7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJv
ckV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtRXJyb3JFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5NGIyZWYyZTBjMzI5MWZk
NzkwMzU3ZDZhYTJjN2RjODg5OGExYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5jcHAK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zv
cm1FcnJvckV2ZW50LmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSVENSdHBTRnJhbWVUcmFu
c2Zvcm1FcnJvckV2ZW50KTsKKworUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ+
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQ6OmNyZWF0ZShDYW5CdWJibGUgY2FuQnVi
YmxlLCBJc0NhbmNlbGFibGUgaXNDYW5jZWxhYmxlLCBUeXBlIGVycm9yVHlwZSkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50KGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50LCBjYW5CdWJibGUsIGlzQ2FuY2VsYWJsZSwgZXJyb3JUeXBlKSk7
Cit9CisKK1JlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50PiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1FcnJvckV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYm
IGluaXQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
RXJyb3JFdmVudCh0eXBlLCBpbml0LmJ1YmJsZXMgPyBDYW5CdWJibGU6OlllcyA6IENhbkJ1YmJs
ZTo6Tm8sCisgICAgICAgIGluaXQuY2FuY2VsYWJsZSA/IElzQ2FuY2VsYWJsZTo6WWVzIDogSXND
YW5jZWxhYmxlOjpObywgaW5pdC5lcnJvclR5cGUpKTsKK30KKworUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtRXJyb3JFdmVudDo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudChjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBDYW5CdWJibGUgY2FuQnViYmxlLCBJc0NhbmNlbGFibGUgY2FuY2VsYWJs
ZSwgVHlwZSBlcnJvclR5cGUpCisgICAgOiBFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFi
bGUpCisgICAgLCBtX2Vycm9yVHlwZShlcnJvclR5cGUpCit7Cit9CisKK1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybUVycm9yRXZlbnQ6On5SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50KCkgPSBk
ZWZhdWx0OworCitFdmVudEludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50
OjpldmVudEludGVyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybUVycm9yRXZlbnRJbnRlcmZhY2VUeXBlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1F
cnJvckV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2EzNTU1YjM4MjlkZGQxNzAwM2E3M2Y1ODhkMTRmMjdm
Yjk3ZDE5NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5oCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50IGZp
bmFsIDogcHVibGljIEV2ZW50IHsKKyAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybUVycm9yRXZlbnQpOworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ1J0cFNG
cmFtZVRyYW5zZm9ybUVycm9yRXZlbnQoKTsKKworICAgIGVudW0gVHlwZSB7IEF1dGhlbnRpY2F0
aW9uLCBLZXlJRCwgT3RoZXIsIFN5bnRheCB9OworCisgICAgc3RydWN0IEluaXQgOiBFdmVudElu
aXQgeworICAgICAgICBUeXBlIGVycm9yVHlwZTsKKyAgICB9OworCisgICAgc3RhdGljIFJlZjxS
VENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgSW5pdCYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9y
RXZlbnQ+IGNyZWF0ZShDYW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgVHlwZSk7CisKKyAgICBUeXBl
IGVycm9yVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JUeXBlOyB9CisKKyAgICB2aXJ0dWFs
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBD
YW5CdWJibGUsIElzQ2FuY2VsYWJsZSwgVHlwZSk7CisKKyAgICBUeXBlIG1fZXJyb3JUeXBlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50LmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
OGU1OTQzZjdiODk1ODljNmFiMDc3OWMzZGQzZGI1ZjQyODc4M2EwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zv
cm1FcnJvckV2ZW50LmlkbApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworZW51bSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2
ZW50VHlwZSB7CisgICAgImF1dGhlbnRpY2F0aW9uIiwKKyAgICAia2V5SUQiLAorICAgICJvdGhl
ciIsCisgICAgInN5bnRheCIKK307CisKK2RpY3Rpb25hcnkgUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
RXJyb3JFdmVudEluaXQgOiBFdmVudEluaXQgeworICAgIHJlcXVpcmVkIFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybUVycm9yRXZlbnRUeXBlIGVycm9yVHlwZTsKK307CisKK1sKKyAgICBDb25kaXRpb25h
bD1XRUJfUlRDLAorICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMs
CisgICAgRXhwb3NlZD0oV2luZG93LERlZGljYXRlZFdvcmtlciksCisgICAgSW50ZXJmYWNlTmFt
ZT1TRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50CitdIGludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFu
c2Zvcm1FcnJvckV2ZW50IDogRXZlbnQgeworICAgIGNvbnN0cnVjdG9yKERPTVN0cmluZyB0eXBl
LCBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50SW5pdCBldmVudEluaXREaWN0KTsKKwor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50VHlw
ZSBlcnJvclR5cGU7CisgICAgLy8gRklYTUU6IEFkZCBiZWxvdyBmaWVsZHMKKyAgICAvLyByZWFk
b25seSBhdHRyaWJ1dGUgQ3J5cHRvS2V5SUQ/IGtleUlEOworICAgIC8vIHJlYWRvbmx5IGF0dHJp
YnV0ZSBhbnkgZnJhbWU7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAppbmRleCA2MDMw
MGRlY2QzZTkyNDEyMjQyN2FlY2E5ZTliZTgyOTcwYmY1MzZjLi43YmExNTg5ZGIyNWUzNmVlNzM5
NjQyM2QwYjAzZGVjOGUxOGQ4N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiU0ZyYW1lVXRp
bHMuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE2MCw2ICsxNjEsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXI6OnNldEVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3QKICAgICByZXR1
cm4gdXBkYXRlRW5jcnlwdGlvbktleShyYXdLZXksIGtleUlkLCBTaG91bGRVcGRhdGVLZXlzOjpZ
ZXMpOwogfQogCitib29sIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjpoYXNLZXkodWludDY0X3Qg
a2V5SWQpIGNvbnN0Cit7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fa2V5TG9jayB9OworICAgIHJl
dHVybiBXVEY6OmFueU9mKG1fa2V5cywgW2tleUlkXShhdXRvJiBrZXkpIHsgcmV0dXJuIGtleUlk
ID09IGtleS5rZXlJZDsgfSk7Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybWVyOjp1cGRhdGVFbmNyeXB0aW9uS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3
S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBrZXlJZCwgU2hvdWxkVXBkYXRlS2V5cyBzaG91
bGRVcGRhdGVLZXlzKQogewogICAgIEFTU0VSVChtX2tleUxvY2suaXNMb2NrZWQoKSk7CkBAIC0x
OTksNyArMjA2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6
OnVwZGF0ZUVuY3J5cHRpb25LZXkoY29uc3QgVmVjdG9yPHVpbnQKICAgICByZXR1cm4geyB9Owog
fQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
OjpkZWNyeXB0RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXpl
KQorUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OlRyYW5zZm9ybVJlc3VsdCBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqIGZyYW1lRGF0YSwgc2l6ZV90
IGZyYW1lU2l6ZSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOwogICAgIHN3aXRjaCAo
bV9jb21wYXRpYmlsaXR5TW9kZSkgewpAQCAtMjI5LDIzICsyMzYsMjMgQEAgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKGNv
bnN0IHVpbnQ4X3QKICAgICBhdXRvIGhlYWRlciA9IHBhcnNlU0ZyYW1lSGVhZGVyKGZyYW1lRGF0
YSwgZnJhbWVTaXplKTsKIAogICAgIGlmICghaGVhZGVyKQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KEVycm9ySW5mb3JtYXRpb24ge0Vycm9yOjpTeW50YXgsICJJbnZhbGlkIGhlYWRlciJfcywgMCB9
KTsKIAogICAgIGlmIChoZWFkZXItPmNvdW50ZXIgPD0gbV9jb3VudGVyICYmIG1fY291bnRlcikK
LSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvckluZm9ybWF0aW9uIHtFcnJvcjo6U3ludGF4LCAi
SW52YWxpZCBjb3VudGVyIl9zLCAwIH0pOwogICAgIG1fY291bnRlciA9IGhlYWRlci0+Y291bnRl
cjsKIAogICAgIGlmIChoZWFkZXItPmtleUlkICE9IG1fa2V5SWQpIHsKICAgICAgICAgYXV0byBw
b3NpdGlvbiA9IG1fa2V5cy5maW5kTWF0Y2hpbmcoW2tleUlkID0gaGVhZGVyLT5rZXlJZF0oYXV0
byYgaXRlbSkgeyByZXR1cm4gaXRlbS5rZXlJZCA9PSBrZXlJZDsgfSk7CiAgICAgICAgIGlmIChw
b3NpdGlvbiA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBEYXRh
RXJyb3IsICJLZXkgSUQgaXMgdW5rbm93biIgfTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZChFcnJvckluZm9ybWF0aW9uIHsgRXJyb3I6OktleUlELCAgIktleSBJRCBpcyB1bmtu
b3duIl9zLCBoZWFkZXItPmtleUlkIH0pOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHVwZGF0ZUVu
Y3J5cHRpb25LZXkobV9rZXlzW3Bvc2l0aW9uXS5rZXlEYXRhLCBoZWFkZXItPmtleUlkLCBTaG91
bGRVcGRhdGVLZXlzOjpObyk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvckluZm9ybWF0aW9uIHtFcnJvcjo6T3RoZXIsIHJl
c3VsdC5leGNlcHRpb24oKS5tZXNzYWdlKCksIDAgfSk7CiAgICAgfQogCiAgICAgaWYgKGZyYW1l
U2l6ZSA8IChoZWFkZXItPnNpemUgKyBtX2F1dGhlbnRpY2F0aW9uU2l6ZSkpCi0gICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBEYXRhRXJyb3IsICJDaHVuayBpcyB0b28gc21hbGwgZm9yIGF1dGhl
bnRpY2F0aW9uIHNpemUiIH07CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcklu
Zm9ybWF0aW9uIHsgRXJyb3I6OlN5bnRheCwgIkNodW5rIGlzIHRvbyBzbWFsbCBmb3IgYXV0aGVu
dGljYXRpb24gc2l6ZSJfcywgMCB9KTsKIAogICAgIGF1dG8gaXYgPSBjb21wdXRlSVYobV9jb3Vu
dGVyLCBtX3NhbHRLZXkpOwogCkBAIC0yNTUsNyArMjYyLDcgQEAgRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6ZGVjcnlwdEZyYW1lKGNvbnN0IHVp
bnQ4X3QKICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IG1fYXV0aGVudGljYXRpb25T
aXplOyArK2NwdHIpIHsKICAgICAgICAgaWYgKHNpZ25hdHVyZVtjcHRyXSAhPSB0cmFuc21pdHRl
ZFNpZ25hdHVyZVtjcHRyXSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkg
cmF0Y2hldGluZy4KLSAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEVycm9ySW5mb3JtYXRp
b24geyBFcnJvcjo6QXV0aGVudGljYXRpb24sICJBdXRoZW50aWNhdGlvbiBmYWlsZWQiX3MsIDAg
fSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI2NCwxMiArMjcxLDEyIEBAIEV4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmRlY3J5cHRGcmFtZShj
b25zdCB1aW50OF90CiAgICAgYXV0byByZXN1bHQgPSBkZWNyeXB0RGF0YShmcmFtZURhdGEgKyBo
ZWFkZXItPnNpemUsIGRhdGFTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5KTsKIAogICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2Vw
dGlvbigpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3JJbmZvcm1hdGlvbiB7
IEVycm9yOjpPdGhlciwgcmVzdWx0LmV4Y2VwdGlvbigpLm1lc3NhZ2UoKSwgMCB9KTsKIAogICAg
IHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI6OmVuY3J5cHRGcmFtZShjb25z
dCB1aW50OF90KiBmcmFtZURhdGEsIHNpemVfdCBmcmFtZVNpemUpCitSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lcjo6VHJhbnNmb3JtUmVzdWx0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOjplbmNyeXB0
RnJhbWUoY29uc3QgdWludDhfdCogZnJhbWVEYXRhLCBzaXplX3QgZnJhbWVTaXplKQogewogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXhIZWFkZXJTaXplID0gMTc7CiAKQEAgLTMxNCw3ICsz
MjEsNyBAQCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyOjplbmNyeXB0RnJhbWUoY29uc3QgdWludDhfdAogICAgIGF1dG8gZW5jcnlwdGVkRGF0YSA9
IGVuY3J5cHREYXRhKGZyYW1lRGF0YSwgZnJhbWVTaXplLCBpdiwgbV9lbmNyeXB0aW9uS2V5KTsK
ICAgICBBU1NFUlQoIWVuY3J5cHRlZERhdGEuaGFzRXhjZXB0aW9uKCkpOwogICAgIGlmIChlbmNy
eXB0ZWREYXRhLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gZW5jcnlwdGVkRGF0YS5y
ZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFcnJvcklu
Zm9ybWF0aW9uIHsgRXJyb3I6Ok90aGVyLCBlbmNyeXB0ZWREYXRhLmV4Y2VwdGlvbigpLm1lc3Nh
Z2UoKSwgMCB9KTsKIAogICAgIHN0ZDo6bWVtY3B5KG5ld0RhdGFQb2ludGVyICsgaGVhZGVyU2l6
ZSwgZW5jcnlwdGVkRGF0YS5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgZnJhbWVTaXplKTsKIApAQCAt
MzMwLDEwICszMzcsMTAgQEAgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lcjo6ZW5jcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QKICAgICByZXR1cm4gdHJh
bnNmb3JtZWREYXRhOwogfQogCi1FeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCitSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjo6VHJhbnNmb3JtUmVzdWx0IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyOjp0cmFuc2Zvcm0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
CiB7CiAgICAgaWYgKCFtX2hhc0tleSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRTdGF0ZUVycm9yLCAiS2V5IGlzIG5vdCBpbml0aWFsaXplZCJfcyB9OworICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXJyb3JJbmZvcm1hdGlvbiB7IEVycm9yOjpLZXlJRCwgICJLZXkg
aXMgbm90IGluaXRpYWxpemVkIiwgMCB9KTsKIAogICAgIHJldHVybiBtX2lzRW5jcnlwdGluZyA/
IGVuY3J5cHRGcmFtZShkYXRhLCBzaXplKSA6IGRlY3J5cHRGcmFtZShkYXRhLCBzaXplKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIuaAppbmRleCAxOTg4NDk1YWE5ZDY0ZTAzNTA5YTJlMWM5ZTM1
ZjYyYjg3ZDU3YzYxLi42MmIwMWI1Mzg5MGFmYTVhNzNmNWUxNmVjNDNlY2NjZGQxMGMxMWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oCkBAIC00OCw3ICs0OCwxNSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRNZWRpYVR5cGUoUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6TWVkaWFUeXBlKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEVuY3J5cHRpb25LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXksIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHRyYW5zZm9ybShj
b25zdCB1aW50OF90Kiwgc2l6ZV90KTsKKworICAgIGVudW0gY2xhc3MgRXJyb3IgeyBLZXlJRCwg
QXV0aGVudGljYXRpb24sIFN5bnRheCwgT3RoZXIgfTsKKyAgICBzdHJ1Y3QgRXJyb3JJbmZvcm1h
dGlvbiB7CisgICAgICAgIEVycm9yIGVycm9yOworICAgICAgICBTdHJpbmcgbWVzc2FnZTsKKyAg
ICAgICAgdWludDY0X3Qga2V5SWQgeyAwIH07CisgICAgfTsKKyAgICB1c2luZyBUcmFuc2Zvcm1S
ZXN1bHQgPSBFeHBlY3RlZDxWZWN0b3I8dWludDhfdD4sIEVycm9ySW5mb3JtYXRpb24+OworICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybVJlc3VsdCB0cmFuc2Zvcm0oY29uc3QgdWludDhfdCos
IHNpemVfdCk7CiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0aW9uS2V5
KCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdGlvbktleTsgfQogICAgIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgZW5jcnlwdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jcnlwdGlvbktl
eTsgfQpAQCAtNTgsMTEgKzY2LDEzIEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBjb3VudGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3VudGVyOyB9CiAgICAgdm9pZCBzZXRDb3VudGVyKHVpbnQ2NF90
IGNvdW50ZXIpIHsgbV9jb3VudGVyID0gY291bnRlcjsgfQogCisgICAgYm9vbCBoYXNLZXkodWlu
dDY0X3QpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyKENvbXBhdGliaWxpdHlNb2RlKTsKIAotICAgIEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gZGVjcnlwdEZyYW1lKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3Qp
OwotICAgIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gZW5jcnlwdEZyYW1lKGNvbnN0IHVp
bnQ4X3QqLCBzaXplX3QpOworICAgIFRyYW5zZm9ybVJlc3VsdCBkZWNyeXB0RnJhbWUoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7CisgICAgVHJhbnNmb3JtUmVzdWx0IGVuY3J5cHRGcmFtZShjb25z
dCB1aW50OF90Kiwgc2l6ZV90KTsKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkVXBkYXRlS2V5cyB7
IE5vLCBZZXMgfTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiB1cGRhdGVFbmNyeXB0aW9uS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3S2V5LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiwgU2hv
dWxkVXBkYXRlS2V5cyA9IFNob3VsZFVwZGF0ZUtleXM6OlllcykgV1RGX1JFUVVJUkVTX0xPQ0so
bV9rZXlMb2NrKTsKQEAgLTc2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8dWludDhf
dD4gY29tcHV0ZUVuY3J5cHRlZERhdGFTaWduYXR1cmUoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBu
b25jZSwgY29uc3QgdWludDhfdCogaGVhZGVyLCBzaXplX3QgaGVhZGVyU2l6ZSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSk7
CiAgICAgdm9pZCB1cGRhdGVBdXRoZW50aWNhdGlvblNpemUoKTsKIAotICAgIExvY2sgbV9rZXlM
b2NrOworICAgIG11dGFibGUgTG9jayBtX2tleUxvY2s7CiAgICAgYm9vbCBtX2hhc0tleSB7IGZh
bHNlIH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1fYXV0aGVudGljYXRpb25LZXk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IG1fZW5jcnlwdGlvbktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZTM4NDAwMDRi
NmZlYjdkYTFkYmYzNGFhZGNhMzllMjFhN2RiOTNlMi4uZjEwM2NjNmE2YzFkYzAzYjE1ZDhkZWY0
Yjg5ZmE0ZTY3OTczZjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MSw2ICsxNzEsNyBAQCBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXZlbnQuY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtRXJyb3JFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAK
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwCkBAIC0zMzI1
LDYgKzMzMjYsNyBAQCBKU1JUQ1J0cFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFJlY2VpdmVyLmNw
cAogSlNSVENSdHBSdHhQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3Bw
CitKU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuY3BwCiBKU1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybS5jcHAKIEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwCiBKU1JUQ1J0cFNlbmRQ
YXJhbWV0ZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDgyM2ViMmI3ODliZjNlOTRmM2Y2N2MwOWRmZDljYWQxOTkwZjQ5
OWIuLjgxZDZhM2ZkNWQyOTEwZDBjZWZmMGZjMjNlYTA0ODIyMWU2ODlkNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc5ODQs
NiArNzk4NCw5IEBACiAJCTQxQjJBNjI1MUVGMUJGNjAwMDJCOUQ3QSAvKiBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCNDU5REExRjRDQURCOTAwMDBGNkZEIC8qIFJl
YWRhYmxlU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxl
U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQjQ1OUVEMUY1NUVCQzcw
MDAwRjZGRCAvKiBSZWFkYWJsZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQxQjZBQTRGMjZCOTk1RjgwMEFBREZBNyAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJv
ckV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybUVycm9yRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFCNkFB
NTEyNkI5OTVGODAwQUFERkE3IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUI2QUE1MjI2Qjk5NUY5MDBBQURG
QTcgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFCODc3NjAyM0RFMTA0MjAwMzYzOEI4
IC8qIFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlYWx0aW1lTWVkaWFTb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQjkxMzc2MjM1ODREMEUwMDI1QkZBMyAvKiBNb2NrQXVkaW9E
ZXN0aW5hdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tB
dWRpb0Rlc3RpbmF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFC
OTEzNzgyMzU4NEQwRjAwMjVCRkEzIC8qIE1vY2tBdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0F1ZGlvRGVzdGluYXRpb25D
b2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzIzOSw2ICsxNzI0Miw5
IEBACiAJCQkJNDE4MUM2NDEyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyLmNwcCAqLywKIAkJCQk0MTgxQzY0MjI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuaCAqLywKIAkJCQk0MTgxQzYzRjI1NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAgKi8sCisJCQkJNDFCNkFBNTIyNkI5OTVGOTAwQUFE
RkE3IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybUVycm9yRXZlbnQuY3BwICovLAorCQkJCTQxQjZB
QTRGMjZCOTk1RjgwMEFBREZBNyAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1FcnJvckV2ZW50Lmgg
Ki8sCisJCQkJNDFCNkFBNTEyNkI5OTVGODAwQUFERkE3IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bUVycm9yRXZlbnQuaWRsICovLAogCQkJCTQxNUUxQkI2MjE1MDE1MkEwMDIyREE5NiAvKiBSVENS
dHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaCAqLywKIAkJCQk0MTVFMUJCNzIxNTAxNTMwMDAyMkRB
OTYgLyogUlRDUnRwU3luY2hyb25pemF0aW9uU291cmNlLmlkbCAqLywKIAkJCQk1RTVFMkIxMDFD
RkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDBhODQ3MTU0
NDk5MDU0MTI3ODZjZjE5YmM1Y2E3ZWQyY2Y4ZDI5NDcuLjY1NGU2ZmYwMzY0YmIyMGFlMTRmNmJk
YzljMDQ3NTYyMTI5Nzc5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTIxOSw2ICsyMTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8oUmVxdWVzdCkgXAogICAgIG1hY3JvKFJlc3BvbnNlKSBcCiAgICAgbWFj
cm8oU0ZyYW1lVHJhbnNmb3JtKSBcCisgICAgbWFjcm8oU0ZyYW1lVHJhbnNmb3JtRXJyb3JFdmVu
dCkgXAogICAgIG1hY3JvKFNjcmVlbkx1bWluYW5jZSkgXAogICAgIG1hY3JvKFNlcnZpY2VXb3Jr
ZXIpIFwKICAgICBtYWNybyhTZXJ2aWNlV29ya2VyQ29udGFpbmVyKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmluCmluZGV4IDJiY2Q3M2MzYjgzODA2YmQxYjdlMTA5ZTZmYzg5NjdiMWJjZjk5YTcu
LjM4NzgxMzAwYWZhZmU1ODMxY2YxZWNhNjQ4YWRhMmVkMzRiY2Y0OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmluCkBAIC02NCw2ICs2NCw3IEBAIFJUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JF
dmVudCBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50IGNvbmRp
dGlvbmFsPVdFQl9SVEMKIFJUQ0RhdGFDaGFubmVsRXZlbnQgY29uZGl0aW9uYWw9V0VCX1JUQwog
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCBjb25kaXRpb25hbD1XRUJfUlRDCitSVENSdHBTRnJhbWVU
cmFuc2Zvcm1FcnJvckV2ZW50IGNvbmRpdGlvbmFsPVdFQl9SVEMKIFJUQ1RyYWNrRXZlbnQgY29u
ZGl0aW9uYWw9V0VCX1JUQwogUlRDVHJhbnNmb3JtRXZlbnQgY29uZGl0aW9uYWw9V0VCX1JUQwog
U3BlZWNoUmVjb2duaXRpb25FcnJvckV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgppbmRleCAxZDhiYTY1NDk4Y2Y2Nzc3YzI3YjgxODA4M2M4NGVjOWM0M2QyNTBm
Li5mNzZmZmQwZWUwYjUwOTI5MDQ0NWQ1NTYyYWYzMDE3N2JjMzJhYjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTQwLDYgKzQwLDcgQEAgUmVtb3RlUGxh
eWJhY2sgY29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUCiBSVENEYXRhQ2hhbm5l
bCBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENEVE1GU2VuZGVyIGNvbmRpdGlvbmFsPVdFQl9SVEMK
IFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPVdFQl9SVEMKK1JUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gY29uZGl0aW9u
YWw9V0VCX1JUQwogU2VydmljZVdvcmtlciBjb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUgogU2Vy
dmljZVdvcmtlckNvbnRhaW5lciBjb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiMzYyZWVmMWE1ZWYy
ZmM4NjE4MzlhMWZjOTVjNzRjMmVlODYyOWYuLjZhMzlhZGRjYTY2YTA5NjNkMjFhNmI2YTE1NzBl
MDNmMDBlOTMwNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOC0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFNGcmFtZVRyYW5zZm9ybSBlcnJvciBo
YW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4OTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0
cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wNy0zMCAgSm9u
YXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXRd
IEZvcndhcmQgZXJyb3JzIGZyb20gbG9nIGFuZCBibGFtZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyVGVzdHMuY3BwCmluZGV4IGRhYjdmMWJhMjgyYWI0YzYzZjk3Nzk0MGQzZDQ2YWViZjQxZjUx
MTUuLmE1MjVjNTExYTVjZDI4ZGUyZmQ1NDgwNWE4ZWI5Zjk3NjBjZTk5YzcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1l
clRlc3RzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHAKQEAgLTIwMCwxMyArMjAwLDEzIEBAIFRFU1QoUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtZXIsIEVuY3J5cHREZWNyeXB0KQogICAgIGF1dG8gZnJhbWUgPSBW
ZWN0b3I8dWludDhfdD46OmZyb20oMTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjksIDE1NywgMTEx
LCAxOTAsIDEzNCwgMjIwKTsKIAogICAgIGF1dG8gZW5jcnlwdGVkUmVzdWx0ID0gZW5jcnlwdG9y
LT50cmFuc2Zvcm0oZnJhbWUuZGF0YSgpLCBmcmFtZS5zaXplKCkpOwotICAgIEVYUEVDVF9GQUxT
RShlbmNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIEVYUEVDVF9UUlVFKGVuY3J5
cHRlZFJlc3VsdC5oYXNfdmFsdWUoKSk7CiAKLSAgICBhdXRvIGVuY3J5cHRlZCA9IGVuY3J5cHRl
ZFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBhdXRvIGVuY3J5cHRlZCA9IFdURk1v
dmUoZW5jcnlwdGVkUmVzdWx0LnZhbHVlKCkpOwogICAgIGF1dG8gZGVjcnlwdGVkUmVzdWx0ID0g
ZGVjcnlwdG9yLT50cmFuc2Zvcm0oZW5jcnlwdGVkLmRhdGEoKSwgZW5jcnlwdGVkLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGRlY3J5cHRlZFJlc3VsdC5oYXNFeGNlcHRpb24oKSk7CisgICAg
RVhQRUNUX1RSVUUoZGVjcnlwdGVkUmVzdWx0Lmhhc192YWx1ZSgpKTsKIAotICAgIGNoZWNrVmVj
dG9yc0FyZUVxdWFsKGRlY3J5cHRlZFJlc3VsdC5yZXR1cm5WYWx1ZSgpLCBmcmFtZSk7CisgICAg
Y2hlY2tWZWN0b3JzQXJlRXF1YWwoZGVjcnlwdGVkUmVzdWx0LnZhbHVlKCksIGZyYW1lKTsKIH0K
IAogVEVTVChSVENSdHBTRnJhbWVUcmFuc2Zvcm1lciwgRW5jcnlwdERlY3J5cHRLZXlJRDApCkBA
IC0yMjAsMTMgKzIyMCwxMyBAQCBURVNUKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0
RGVjcnlwdEtleUlEMCkKICAgICBhdXRvIGZyYW1lID0gVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKDEz
NSwgODksIDUxLCAxNjYsIDI0OCwgMTI5LCAxNTcsIDExMSwgMTkwLCAxMzQsIDIyMCk7CiAKICAg
ICBhdXRvIGVuY3J5cHRlZFJlc3VsdCA9IGVuY3J5cHRvci0+dHJhbnNmb3JtKGZyYW1lLmRhdGEo
KSwgZnJhbWUuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZW5jcnlwdGVkUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKTsKKyAgICBFWFBFQ1RfVFJVRShlbmNyeXB0ZWRSZXN1bHQuaGFzX3ZhbHVlKCkp
OwogCi0gICAgYXV0byBlbmNyeXB0ZWQgPSBlbmNyeXB0ZWRSZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCk7CisgICAgYXV0byBlbmNyeXB0ZWQgPSBXVEZNb3ZlKGVuY3J5cHRlZFJlc3VsdC52YWx1
ZSgpKTsKICAgICBhdXRvIGRlY3J5cHRlZFJlc3VsdCA9IGRlY3J5cHRvci0+dHJhbnNmb3JtKGVu
Y3J5cHRlZC5kYXRhKCksIGVuY3J5cHRlZC5zaXplKCkpOwotICAgIEVYUEVDVF9GQUxTRShkZWNy
eXB0ZWRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIEVYUEVDVF9UUlVFKGRlY3J5cHRlZFJl
c3VsdC5oYXNfdmFsdWUoKSk7CiAKLSAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChkZWNyeXB0ZWRS
ZXN1bHQucmV0dXJuVmFsdWUoKSwgZnJhbWUpOworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGRl
Y3J5cHRlZFJlc3VsdC52YWx1ZSgpLCBmcmFtZSk7CiB9CiAKIFRFU1QoUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtZXIsIEVuY3J5cHREZWNyeXB0QXVkaW8pCkBAIC0yNDIsMTMgKzI0MiwxMyBAQCBURVNU
KFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLCBFbmNyeXB0RGVjcnlwdEF1ZGlvKQogICAgIGF1dG8g
ZnJhbWUgPSBWZWN0b3I8dWludDhfdD46OmZyb20oMTM1LCA4OSwgNTEsIDE2NiwgMjQ4LCAxMjks
IDE1NywgMTExLCAxOTAsIDEzNCwgMjIwLCA1Nik7CiAKICAgICBhdXRvIGVuY3J5cHRlZFJlc3Vs
dCA9IGVuY3J5cHRvci0+dHJhbnNmb3JtKGZyYW1lLmRhdGEoKSwgZnJhbWUuc2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoZW5jcnlwdGVkUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKTsKKyAgICBFWFBF
Q1RfVFJVRShlbmNyeXB0ZWRSZXN1bHQuaGFzX3ZhbHVlKCkpOwogCi0gICAgYXV0byBlbmNyeXB0
ZWQgPSBlbmNyeXB0ZWRSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgYXV0byBlbmNy
eXB0ZWQgPSBXVEZNb3ZlKGVuY3J5cHRlZFJlc3VsdC52YWx1ZSgpKTsKICAgICBhdXRvIGRlY3J5
cHRlZFJlc3VsdCA9IGRlY3J5cHRvci0+dHJhbnNmb3JtKGVuY3J5cHRlZC5kYXRhKCksIGVuY3J5
cHRlZC5zaXplKCkpOwotICAgIEVYUEVDVF9GQUxTRShkZWNyeXB0ZWRSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpOworICAgIEVYUEVDVF9UUlVFKGRlY3J5cHRlZFJlc3VsdC5oYXNfdmFsdWUoKSk7CiAK
LSAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChkZWNyeXB0ZWRSZXN1bHQucmV0dXJuVmFsdWUoKSwg
ZnJhbWUpOworICAgIGNoZWNrVmVjdG9yc0FyZUVxdWFsKGRlY3J5cHRlZFJlc3VsdC52YWx1ZSgp
LCBmcmFtZSk7CiB9CiAKIFRFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5zZm9ybUNv
dW50ZXIwKQpAQCAtMjU3LDkgKzI1Nyw5IEBAIFRFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIs
IFRyYW5zZm9ybUNvdW50ZXIwKQogCiAgICAgdWludDhfdCBmcmFtZTFbXSA9IHsgMTM1LCA4OSwg
NTEsIDE2NiwgMjQ4LCAxMjksIDE1NywgMTExLCAxOTAsIDEzNCwgMjIwIH07CiAgICAgYXV0byBy
ZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkpOwot
ICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIEVYUEVDVF9UUlVF
KHJlc3VsdC5oYXNfdmFsdWUoKSk7CiAKLSAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICBjaGVja1Zl
Y3RvcnNBcmVFcXVhbChyZXN1bHQudmFsdWUoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9tKAogICAg
ICAgICAxNSwKICAgICAgICAgMTk4LAogICAgICAgICAzMSwKQEAgLTI5OSwxNCArMjk5LDE0IEBA
IFRFU1QoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIsIFRyYW5zZm9ybUNvdW50ZXIyNTYpCiAgICAg
YXV0byB0cmFuc2Zvcm1lciA9IGNyZWF0ZVZpZGVvVHJhbnNmb3JtZXIoKTsKIAogICAgIHVpbnQ4
X3QgZnJhbWUxW10gPSB7IDgsIDE2NCwgMTg5LCAxOCwgNjEsIDExNywgMTMyLCA0MywgMTE3LCAx
NjksIDQyIH07Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1
bHQgPSBWZWN0b3I8dWludDhfdD4oKTsKLSAgICByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNm
b3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1lMSkpOworICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNmb3Jt
ZXItPnRyYW5zZm9ybShmcmFtZTEsIHNpemVvZihmcmFtZTEpKTsKKyAgICBFWFBFQ1RfVFJVRShy
ZXN1bHQuaGFzX3ZhbHVlKCkpOwogICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgMjU2
OyArK2NwdHIpIHsKICAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShmcmFt
ZTEsIHNpemVvZihmcmFtZTEpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5oYXNFeGNl
cHRpb24oKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CiAgICAg
fQogCi0gICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LCBWZWN0b3I8dWludDhfdD46OmZyb20oCisgICAgY2hlY2tWZWN0b3JzQXJlRXF1YWwocmVzdWx0
LnZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKICAgICAgICAgMzEsCiAgICAgICAgIDE5
OCwKICAgICAgICAgMzEsCkBAIC0zNDksOSArMzQ5LDkgQEAgVEVTVChSVENSdHBTRnJhbWVUcmFu
c2Zvcm1lciwgVHJhbnNmb3JtQ291bnRlcjY1NTM2KQogCiAgICAgdWludDhfdCBmcmFtZTFbXSA9
IHsgMCwgMzMsIDI0NCwgMjQsIDIzNiwgMTU2LCAxMjcsIDgsIDQ4LCA4OCwgMjIwIH07CiAgICAg
YXV0byByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGZyYW1lMSwgc2l6ZW9mKGZyYW1l
MSkpOwotICAgIEVYUEVDVF9GQUxTRShyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOworICAgIEVYUEVD
VF9UUlVFKHJlc3VsdC5oYXNfdmFsdWUoKSk7CiAKLSAgICBjaGVja1ZlY3RvcnNBcmVFcXVhbChy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIFZlY3Rvcjx1aW50OF90Pjo6ZnJvbSgKKyAgICBj
aGVja1ZlY3RvcnNBcmVFcXVhbChyZXN1bHQudmFsdWUoKSwgVmVjdG9yPHVpbnQ4X3Q+Ojpmcm9t
KAogICAgICAgICA0NywKICAgICAgICAgMTk4LAogICAgICAgICAzMSwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOGZjMTU0
NjFiNTU4MGFhYWY2NDBjNzI0Y2ZiNzgzMTkyMzNkZjdkLi45MTg2MzZjZDljZjVmZTdlZmJkMDVh
MzkwNjZkOGIxNzRmMDA0ZGZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMTAgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTRnJh
bWVUcmFuc2Zvcm0gZXJyb3IgaGFuZGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyODk0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tZXJy
b3Itd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKG9ucnRjdHJhbnNmb3JtLmFzeW5jIGV2ZW50
KToKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJv
ci1leHBlY3RlZDogQWRkZWQuCisKIDIwMjEtMDctMzEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2Jp
bnNvbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI3OTU2NCk6IFtHVEtdIE1v
dXNlIHdoZWVsIHNjcm9sbGluZyBzY3JvbGxzIHRvbyBsaXR0bGUgKHRha2UgdHdvKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tZXJyb3It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zv
cm0tZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmOGJjNWVlYzVhMjNiOGMzYTQyNjg0
YWQ4NGYyNjI4Y2I0YjRlNTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1
IEBACisKKworUEFTUyBNaXNzaW5nIGtleSB0cmlnZ2VycyBhbiBlcnJvciB0aGF0IGNhbiBiZSBj
b3JyZWN0ZWQgYnkgYWRkaW5nIGEga2V5CitQQVNTIFRhbXBlcmVkIGRhdGEgc2hvdWxkIHRyaWdn
ZXIgU0ZyYW1lVHJhbnNmb3JtIGVycm9ycworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci13b3JrZXIuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci13b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzgxMzljZTA2MDI0YTczNjllNzg1NTZmMTFiYmRjMDkxZmNmNTQ3MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWVy
cm9yLXdvcmtlci5qcwpAQCAtMCwwICsxLDMyIEBACitsZXQgdHJpZ2dlckVycm9yOworb25tZXNz
YWdlID0gKGV2ZW50KSA9PiB0cmlnZ2VyRXJyb3IgPSBldmVudC5kYXRhLmFjdGlvbjsKKworb25y
dGN0cmFuc2Zvcm0gPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICBjb25zdCB0cmFuc2Zvcm1lciA9
IGV2ZW50LnRyYW5zZm9ybWVyOworCisgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRs
ZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAx
OSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwg
ZmFsc2UsIFsiZGVyaXZlQml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgY29uc3Qgc2ZyYW1lVHJh
bnNmb3JtID0gbmV3IFNGcmFtZVRyYW5zZm9ybSh7IHJvbGU6ICJlbmNyeXB0IiwgYXV0aGVudGlj
YXRpb25TaXplOiAiNCIgfSk7CisgICAgc2ZyYW1lVHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXko
a2V5LCAxKTsKKworICAgIGNvbnN0IHBvc3RUcmFuc2Zvcm0gPSBuZXcgVHJhbnNmb3JtU3RyZWFt
KHt0cmFuc2Zvcm06IChmcmFtZSwgY29udHJvbGxlcikgPT4geworICAgICAgIGlmICh0cmlnZ2Vy
RXJyb3IgPT09ICJhdXRoZW50aWNhdGlvbkVycm9yIikgeworICAgICAgICAgIGNvbnN0IGRhdGEg
PSBuZXcgVWludDhBcnJheShmcmFtZS5kYXRhKTsKKyAgICAgICAgICAvLyBXZSBjaGFuZ2UgdGhl
IGF1dGhlbnRpY2F0aW9uIHRhZy4KKyAgICAgICAgICBkYXRhW2RhdGEuYnl0ZUxlbmd0aCAtIDFd
ID0gIWRhdGFbZGF0YS5ieXRlTGVuZ3RoIC0gMV07CisgICAgICAgICAgZnJhbWUuZGF0YSA9IGRh
dGEuYnVmZmVyOworICAgICAgIH0gZWxzZSBpZiAodHJpZ2dlckVycm9yID09PSAic3ludGF4RXJy
b3IiKSB7CisgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBVaW50OEFycmF5KGZyYW1lLmRhdGEp
OworICAgICAgICAgIC8vIFdlIHNldCB0aGUgc2lnbmF0dXJlIGJpdC4KKyAgICAgICAgICBkYXRh
WzBdID0gMjU1OworICAgICAgICAgIGZyYW1lLmRhdGEgPSBkYXRhLmJ1ZmZlcjsKKyAgICAgICB9
CisgICAgICAgdHJpZ2dlckVycm9yID0gdW5kZWZpbmVkOworICAgICAgIGNvbnRyb2xsZXIuZW5x
dWV1ZShmcmFtZSk7CisgICAgfX0pOworCisgICAgdHJhbnNmb3JtZXIucmVhZGFibGUucGlwZVRo
cm91Z2goc2ZyYW1lVHJhbnNmb3JtKQorCQkucGlwZVRocm91Z2gocG9zdFRyYW5zZm9ybSkKKwkJ
LnBpcGVUbyh0cmFuc2Zvcm1lci53cml0YWJsZSk7Cit9CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdp
c3RlcmVkIik7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJh
bWUtdHJhbnNmb3JtLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2Zy
YW1lLXRyYW5zZm9ybS1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNWNmNjAyNzRkNmUyNmUwMWQx
NjNlOWY5MjY3ZmRkY2RlN2QwMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci5odG1sCkBAIC0wLDAgKzEsOTIgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvd2VicnRjLWVuY29k
ZWQtdHJhbnNmb3JtL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHk+CisgICAgICAgIDx2aWRlbyBpZD0ndmlkZW8nIGNvbnRyb2xzIGF1dG9wbGF5IHBsYXlzaW5s
aW5lPjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3Qp
ID0+IHsKKyAgICBjb25zdCBrZXkxID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJh
dyIsIG5ldyBVaW50OEFycmF5KFsxNDMsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYs
IDIxOSwgMjQsIDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZl
Qml0cyIsICJkZXJpdmVLZXkiXSk7CisgICAgY29uc3Qga2V5MiA9IGF3YWl0IGNyeXB0by5zdWJ0
bGUuaW1wb3J0S2V5KCJyYXciLCBuZXcgVWludDhBcnJheShbMTQ0LCA3NywgNDMsIDEwLCA3Miwg
MTksIDM3LCA2NywgMjM2LCAyMTksIDI0LCA5MywgMjYsIDE2NSwgOTEsIDE3OF0pLCAiSEtERiIs
IGZhbHNlLCBbImRlcml2ZUJpdHMiLCAiZGVyaXZlS2V5Il0pOworICAgIGNvbnN0IGtleTMgPSBh
d2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0NSwg
NzcsIDQzLCAxMCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkx
LCAxNzhdKSwgIkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKyAg
ICBjb25zdCBrZXk0ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIG5ldyBV
aW50OEFycmF5KFsxNDYsIDc3LCA0MywgMTAsIDcyLCAxOSwgMzcsIDY3LCAyMzYsIDIxOSwgMjQs
IDkzLCAyNiwgMTY1LCA5MSwgMTc4XSksICJIS0RGIiwgZmFsc2UsIFsiZGVyaXZlQml0cyIsICJk
ZXJpdmVLZXkiXSk7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOworICAgIGxldCByZWNlaXZl
cjsKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgIGNvbnN0IGNvbm5lY3Rpb25zID0gY3JlYXRlQ29ubmVjdGlvbnModGVz
dCwgKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgY29uc3Qgc2VuZGVyID0gZmly
c3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxv
Y2FsU3RyZWFtKTsKKyAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IG5ldyBTRnJhbWVUcmFu
c2Zvcm07CisgICAgICAgICAgICB0cmFuc2Zvcm0uc2V0RW5jcnlwdGlvbktleShrZXkxLCAxKTsK
KyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgICAgIH0sIChz
ZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJh
Y2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9
IG5ldyBTRnJhbWVUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgdHJhbnNmb3JtLnNldEVuY3J5
cHRpb25LZXkoa2V5MSwgMCk7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50
LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHRyYW5zZm9y
bTsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAg
ICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgdGVzdC5zdGVwX3RpbWVvdXQoKCkgPT4g
cmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGxldCBlcnJv
ciA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVjZWl2ZXIudHJhbnNmb3JtLm9uZXJy
b3IgPSByZXNvbHZlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9yLmVycm9yVHlwZSwgImtleUlE
Iik7CisgICAgcmVjZWl2ZXIudHJhbnNmb3JtLnNldEVuY3J5cHRpb25LZXkoa2V5MSwgMSk7CisK
KyAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJl
Y2VpdmVyLnRyYW5zZm9ybS5vbmVycm9yID0gKCkgPT4gcmVqZWN0KCdzZnJhbWUgc3RpbGwgaGFz
IGVycm9ycycpOworICAgICAgICB0ZXN0LnN0ZXBfdGltZW91dChyZXNvbHZlLCAxMDApOworICAg
IH0pOworfSwgIk1pc3Npbmcga2V5IHRyaWdnZXJzIGFuIGVycm9yIHRoYXQgY2FuIGJlIGNvcnJl
Y3RlZCBieSBhZGRpbmcgYSBrZXkiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2ZyYW1lLXRyYW5zZm9ybS1lcnJvci13b3JrZXIu
anMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3Jr
ZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBh
d2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IGF1ZGlvOiB0cnVlIH0p
OworCisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisKKyAgICBjb25zdCByZWNlaXZlclRyYW5z
Zm9ybSA9IG5ldyBTRnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCBrZXkgPSBhd2FpdCBjcnlw
dG8uc3VidGxlLmltcG9ydEtleSgicmF3IiwgbmV3IFVpbnQ4QXJyYXkoWzE0MywgNzcsIDQzLCAx
MCwgNzIsIDE5LCAzNywgNjcsIDIzNiwgMjE5LCAyNCwgOTMsIDI2LCAxNjUsIDkxLCAxNzhdKSwg
IkhLREYiLCBmYWxzZSwgWyJkZXJpdmVCaXRzIiwgImRlcml2ZUtleSJdKTsKKyAgICByZWNlaXZl
clRyYW5zZm9ybS5zZXRFbmNyeXB0aW9uS2V5KGtleSwgMSk7CisKKyAgICBjb25zdCBzZW5kZXJU
cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgIlNGcmFtZVJUQ1J0
cFRyYW5zZm9ybSIpOworCisgICAgY29uc3Qgc3RhcnRlZFByb21pc2UgPSBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0
YSkpOworCisgICAgY29uc3QgcmVtb3RlU3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucyh0ZXN0LCAoZmlyc3RD
b25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247CisgICAg
ICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0
VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0g
PSBzZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Cisg
ICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29u
bmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNl
aXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJh
bnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFj
a0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAg
IHRlc3Quc3RlcF90aW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7
CisgICAgfSk7CisKKyAgICB2aWRlby5zcmNPYmplY3QgPSByZW1vdGVTdHJlYW07CisKKyAgICB3
b3JrZXIucG9zdE1lc3NhZ2Uoe2FjdGlvbjoiYXV0aGVudGljYXRpb25FcnJvciJ9KTsKKyAgICBs
ZXQgZXJyb3IgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHJlY2VpdmVyLnRyYW5zZm9y
bS5vbmVycm9yID0gcmVzb2x2ZSk7CisgICAgYXNzZXJ0X2VxdWFscyhlcnJvci5lcnJvclR5cGUs
ICJhdXRoZW50aWNhdGlvbiIpOworCisgICAgd29ya2VyLnBvc3RNZXNzYWdlKHthY3Rpb246InN5
bnRheEVycm9yIn0pOworICAgIGVycm9yID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBy
ZWNlaXZlci50cmFuc2Zvcm0ub25lcnJvciA9IHJlc29sdmUpOworICAgIGFzc2VydF9lcXVhbHMo
ZXJyb3IuZXJyb3JUeXBlLCAic3ludGF4Iik7Cit9LCAiVGFtcGVyZWQgZGF0YSBzaG91bGQgdHJp
Z2dlciBTRnJhbWVUcmFuc2Zvcm0gZXJyb3JzIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>