<?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>219148</bug_id>
          
          <creation_ts>2020-11-19 00:27:12 -0800</creation_ts>
          <short_desc>Add support for RTCRtpScriptTransform</short_desc>
          <delta_ts>2020-11-20 04:26:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>1708995</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-19 00:27:12 -0800</bug_when>
    <thetext>Add support for RTCRtpScriptTransform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709017</commentid>
    <comment_count>1</comment_count>
      <attachid>414553</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-19 02:41:18 -0800</bug_when>
    <thetext>Created attachment 414553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709020</commentid>
    <comment_count>2</comment_count>
      <attachid>414556</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-19 02:49:25 -0800</bug_when>
    <thetext>Created attachment 414556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709022</commentid>
    <comment_count>3</comment_count>
      <attachid>414557</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-19 02:51:40 -0800</bug_when>
    <thetext>Created attachment 414557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709025</commentid>
    <comment_count>4</comment_count>
      <attachid>414559</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-19 03:01:54 -0800</bug_when>
    <thetext>Created attachment 414559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709026</commentid>
    <comment_count>5</comment_count>
      <attachid>414560</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-19 03:12:03 -0800</bug_when>
    <thetext>Created attachment 414560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709031</commentid>
    <comment_count>6</comment_count>
      <attachid>414564</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-19 04:00:40 -0800</bug_when>
    <thetext>Created attachment 414564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709245</commentid>
    <comment_count>7</comment_count>
      <attachid>414564</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-11-19 13:02:23 -0800</bug_when>
    <thetext>Comment on attachment 414564
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.cpp:117
&gt; +        m_backend = makeRef(backend);

You only set `m_backend` if `setupTransformer` fails?

&gt; Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp:174
&gt; +            auto value = isAudio ? toJS(&amp;globalObject, &amp;globalObject, RTCEncodedAudioFrame::create(WTFMove(frame))) : toJS(&amp;globalObject, &amp;globalObject, RTCEncodedAudioFrame::create(WTFMove(frame)));

Don’t you want to create a Video frame when `isAudio` is false?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709404</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-20 00:35:26 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #7)
&gt; Comment on attachment 414564 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=414564&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpScriptTransform.cpp:117
&gt; &gt; +        m_backend = makeRef(backend);
&gt; 
&gt; You only set `m_backend` if `setupTransformer` fails?

Yes, it means the transformer is not yet there but will be soon.
So we keep a ref to m_backend so that we can call setupTransformer at the time the transformer is hooked to its transform.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpScriptTransformer.cpp:174
&gt; &gt; +            auto value = isAudio ? toJS(&amp;globalObject, &amp;globalObject, RTCEncodedAudioFrame::create(WTFMove(frame))) : toJS(&amp;globalObject, &amp;globalObject, RTCEncodedAudioFrame::create(WTFMove(frame)));
&gt; 
&gt; Don’t you want to create a Video frame when `isAudio` is false?

Good catch, will add a test for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709409</commentid>
    <comment_count>9</comment_count>
      <attachid>414659</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-11-20 00:50:38 -0800</bug_when>
    <thetext>Created attachment 414659
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709445</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-20 04:25:55 -0800</bug_when>
    <thetext>Committed r270107: &lt;https://trac.webkit.org/changeset/270107&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414659.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709446</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-20 04:26:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/71623266&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414553</attachid>
            <date>2020-11-19 02:41:18 -0800</date>
            <delta_ts>2020-11-19 02:56:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219148-20201119114114.patch</filename>
            <type>text/plain</type>
            <size>170388</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4N2JjMDU3MTMzOWEy
YmU1ZTIzMjg0ODBhYjlmZTE0MDQ3YzZjZS4uMGNmMDk2N2RkYWFmODI0ZDIyZTAzMDNjYjgxNmUw
YWRjYTk3NGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NCBAQAorMjAyMC0xMS0xOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB3aGljaCBw
cm9jZXNzZXMgZW5jb2RlZCBmcmFtZXMgaW4gYSB3b3JrZXIgZm9yIGVpdGhlciBSVENSdHBTZW5k
ZXIgb3IgUlRDUnRwUmVjZWl2ZXIuCisgICAgICAgIFRoZSBtb2RlbCBmb2xsb3dzIEF1ZGlvV29y
a2xldE5vZGUgaW4gdGhlIHNlbnNlIHRoYXQgd2UgY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtIG9iamVjdCBpbiBtYWluIHRocmVhZCB0aGF0IGlzIHVzZWQgd2l0aCBSVENSdHAgb2JqZWN0
cy4KKyAgICAgICAgVGhlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB0YWtlcyBhIG5hbWUgYW5kIGEg
d29ya2VyIGFzIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIg
Y291bnRlciBwYXJ0IGluIGEgd29ya2VyLgorICAgICAgICBCZWZvcmUgdGhhdCwgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIgY29uc3RydWN0b3JzIGFyZSByZWdpc3RlcmVkIGluIHRoZSB3b3JrZXIg
d2l0aCBhIHNwZWNpZmljIG5hbWUuCisgICAgICAgIEEgbWVzc2FnZSBwb3J0IGlzIHNoYXJlZCBi
ZXR3ZWVuIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBhbmQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
CisKKyAgICAgICAgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGtlZXBzIGEgd2VhayBwb2ludGVyIHRv
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHNvIHRoYXQgd2Uga2VlcCBhbGwgcmVmIGNvdW50aW5n
IG9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIGluIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgICAg
ICBUbyBtYWtlIHN1cmUgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgc3RheXMgYWxpdmUgZm9yIGxv
bmcgZW5vdWdoLCB3ZSBzZXQgYSBwZW5kaW5nIGFjdGl2aXR5IHdoZW4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtIGlzIGxpbmtlZCB0byBpdHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuCisgICAgICAg
IFRoZSBwZW5kaW5nIGFjdGl2aXR5IGlzIHRoZW4gcmVtb3ZlZCBlaXRoZXIgYXQgd29ya2VyIGNs
b3N1cmUgb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGJlaW5nIG5vIGxvbmdlciBkb2luZyBwcm9j
ZXNzaW5nLgorCisgICAgICAgIFdlIGV4cG9zZSBpbmRpdmlkdWFsIGNvbXByZXNzZWQgZnJhbWVz
IGFzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIGFuZCBSVENFbmNvZGVkVmlkZW9GcmFtZS4KKyAgICAg
ICAgQWNjZXNzb3IgaXMgbGltaXRlZCB0byB0aGUgcmF3IGRhdGEgYnV0IGFkZGl0aW9uYWwgZ2V0
dGVycyBzaG91bGQgYmUgYWRkZWQgbGF0ZXIgb24uCisKKyAgICAgICAgVG8gaW1wbGVtZW50IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLCB3ZSBoYXZlIHRvIGJlIGFibGUgdG8gY3JlYXRlIFdyaXRh
YmxlU3RyZWFtIHdpdGggbmF0aXZlIHNpbmtzLgorICAgICAgICBUaGlzIGlzIHdoeSB3ZSBpbnRy
b2R1Y2UgV3JpdGFibGVTdHJlYW1TaW5rIGFuZCBXcml0YWJsZVN0cmVhbSBDKysgY2xhc3Nlcy4K
KyAgICAgICAgQmluZGluZyBiZXR3ZWVuIG5hdGl2ZSBmcmFtZXMgYW5kIHN0cmVhbXMgaXMgZG9u
ZSB0aHJvdWdoIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlIGFuZCBSVENSdHBXcml0YWJsZVN0
cmVhbVNpbmsuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zv
cm0uaHRtbCBhbmQgaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
VENFbmNvZGVkQXVkaW9GcmFtZTo6UlRDRW5jb2RlZEF1ZGlvRnJhbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpSVENFbmNvZGVkQXVkaW9GcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWU6OlJUQ0VuY29kZWRWaWRlb0Zy
YW1lKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWU6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5p
ZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIr
VHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnRyYW5zZm9ybSk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm06OnRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm06OnNldFRyYW5zZm9ybSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNm
b3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtLmg6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmlzQXR0YWNo
ZWQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNm
b3JtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJh
bnNmb3JtOjp+UlRDUnRwU2NyaXB0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JT
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjp3aWxsQ2xl
YXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5p
dGlhbGl6ZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6ZW5xdWV1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OlJUQ1J0cFdyaXRhYmxl
U3RyZWFtU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6
OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OlJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyOjp+UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpjbGVhcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyOjpzZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcjo6cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcjo6c3RhcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OnN0b3BQZW5kaW5nQWN0aXZpdHkp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbDogQWRkZWQuCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTZW5kZXI6OnRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
cldpdGhUcmFuc2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcldpdGhUcmFu
c2Zvcm06OnRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXJXaXRoVHJh
bnNmb3JtOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6ZnJv
bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OlJUQ1J0cFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06On5SVENSdHBUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjppc0F0dGFjaGVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvU2VuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6Y2xlYXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFRyYW5zZm9ybTo6ZGV0YWNoRnJvbVJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFRyYW5zZm9ybTo6ZGV0YWNoRnJvbVNlbmRlcik6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFRyYW5zZm9ybTo6aW50ZXJuYWxUcmFuc2Zvcm0pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpzZXRJbnB1dENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OlRy
YW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5o
OiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlk
bDogQWRkZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVh
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpKU1dyaXRhYmxlU3RyZWFtV3JhcHBlckNvbnZlcnRlcjo6dG9XcmFwcGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQp
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUlRDUnRwVHJhbnNmb3JtZXI6OnRy
YW5zZm9ybSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cmVnaXN0
ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAg
ICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmFkZFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpwb3N0VGFza1RvV29ya2VyR2xv
YmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdFRhc2tUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPYmplY3RQ
cm94eTo6cG9zdFRhc2tUb1dvcmtlck9iamVjdCk6CisKIDIwMjAtMTEtMTYgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBTRnJhbWUgdHJhbnNmb3Jt
YXRpb24gaW1wbGVtZW50YXRpb24gYWNjb3JkaW5nIHBvc3QtY29tbWl0IHJldmlldwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5NGQwNjJiZjk5M2QxYjRjN2M0NDQyNGZhNGU5MTY1N2Y0MDA3ZWFh
Li4wY2Q4YjM1NGIzZWY5Zjk3N2Q2MGYzYWQyZjFmMmQyNzE0OGMzNzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMzczLDYgKzM3Myw4IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVT
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkVmlkZW9GcmFtZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0
ZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQuaWRsCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVUeXBlLmlkbApAQCAtNDAzLDYg
KzQwNSwxMCBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSdHhQYXJhbWV0ZXJzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNm
b3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJv
dmlkZXIuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29u
c3RydWN0b3IuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1ldGVy
cy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCkBAIC00ODEsNiArNDg3
LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIuaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVm
YXVsdFdyaXRlci5pZGwKKyAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlk
bAogCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93
ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCkBAIC0xNzUzLDcgKzE3NjAsNiBAQCBzZXQoV2Vi
Q29yZVRlc3RTdXBwb3J0X0lETF9GSUxFUwogICAgIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaWRs
CiAgICAgdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAogICAgIHRlc3Rpbmcv
TW9ja1BhZ2VPdmVybGF5LmlkbAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwK
ICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCiAgICAgdGVzdGluZy9UeXBl
Q29udmVyc2lvbnMuaWRsCiApCkBAIC0xNzc3LDcgKzE3ODMsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlVGVzdFN1cHBvcnRfU09VUkNFUwogICAgIHRlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uLmNwcAogICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmNwcAogICAgIHRlc3Rpbmcv
TW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9y
bS5jcHAKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCiAgICAgdGVzdGlu
Zy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBiMTZkODhlODQ1Y2Q2NmNlYzhjZWNkMGU3
Y2I0MGY4NDJjY2Q5NjA0Li43OGIzZDRmYTA4OTQ5NDM4ZDBiZTk3NDk0ZDQ2OWZlZTkyMzk0NDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QK
QEAgLTIwNSw2ICsyMDUsOCBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0R0eFN0YXR1cy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC0yMzcsNiArMjM5LDEwIEBA
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNm
b3JtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUnR4UGFyYW1l
dGVycy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
Y3JpcHRUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKKyQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwK
ICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMu
aWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5pZGwKQEAgLTMzOCw2ICszNDQsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcwogJChQUk9KRUNUX0RJUikvTW9kdWxl
cy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKICQoUFJPSkVDVF9ESVIp
L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuanMKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcworJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwKICQoUFJPSkVD
VF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJUikv
TW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAyNmQzYzE0YTJhNjhiODkxNjY5ZWIwZDU2
MDI3Y2U0ZjVjZTczYzhmLi5hMTZiODMyNzY5ZDY3YzgyMGQzYmUyNjU1ZmQzMjZiYTNlN2FkMGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dApAQCAtMTY0Nyw2ICsxNjQ3LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEZWdyYWRhdGlvblByZWZlcmVu
Y2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENE
dHhTdGF0dXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1JUQ0R0eFN0YXR1cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENFbmNvZGVkQXVkaW9GcmFtZS5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0VuY29kZWRWaWRlb0Zy
YW1lLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNS
VENFbmNvZGVkVmlkZW9GcmFtZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlSW5pdC5jcHAK
QEAgLTE3MDcsNiArMTcxMSwxNCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTRnJhbWVUcmFu
c2Zvcm0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKKyQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtUHJvdmlkZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5jcHAK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5kUGFyYW1ldGVycy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNl
bmRlcitUcmFuc2Zvcm0uY3BwCkBAIC0yNTY5LDYgKzI1ODEsOCBAQCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIuYwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNX
cml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0YWJsZVN0
cmVhbURlZmF1bHRXcml0ZXIuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtU2luay5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTERvY3VtZW50LmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNYTUxEb2N1bWVudC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTEh0dHBS
ZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMjdhYzdkODBlZWIx
MDM1NjRkMWFlNjUzMjFlZjAwNzU3MGJlY2NiMS4uOWJhOWFkYzJhNDU3NzJhN2IxMzIyOGM0OWEx
Njk5NTc0OGY0Y2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMzEsNiAr
MjMxLDggQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsIFwKICAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbCBcCisgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5
cGUuaWRsIFwKQEAgLTI2NCwxMCArMjY2LDEzIEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRU
cmFuc2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRp
b25Tb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNjZWl2ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1NkcFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsIFwKQEAgLTM0Miw2ICsz
NDcsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJl
YW1zL1dyaXRhYmxlU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwgXAorICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJPcHRpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCkBAIC0xMjMwLDcgKzEyMzYsNiBAQCBK
U19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudENv
bnRhY3RGaWVsZHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29y
ZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudEVycm9yLmlk
bCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsIFwKICAg
ICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBc
CiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRp
b0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODUyNzcyNjM3OWZiZmI2ZGE3ODQ4MzcxZWNmYjEzMThk
YjhlZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSVENFbmNvZGVkQXVkaW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZEF1ZGlvRnJhbWU6OlJUQ0VuY29k
ZWRBdWRpb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYgZnJhbWUp
CisgICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9CisKK1JUQ0VuY29k
ZWRBdWRpb0ZyYW1lOjp+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9G
cmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgyYjZmMDgyNzVlNjkzNTliNDdjMGYwNTE2YzMyY2VlZDYwNDAx
NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkQXVkaW9GcmFtZSA6IHB1YmxpYyBSVENFbmNvZGVk
RnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IGNy
ZWF0ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZyYW1lKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFdURk1vdmUoZnJhbWUpKSk7IH0K
KyAgICB+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBS
VENFbmNvZGVkQXVkaW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYm
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkQXVkaW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDBkNTZjMWQzMDg4MmFjYTk2
MzY0YWE3NTZjNDlkOWRjMGVmM2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKQEAgLTAsMCArMSwz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRDLAorICAgIEV4cG9z
ZWQ9RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCitdIGlu
dGVyZmFjZSBSVENFbmNvZGVkQXVkaW9GcmFtZSB7CisgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRlIEFycmF5QnVmZmVy
IGRhdGE7CisgICAgLy8gUlRDQXVkaW9GcmFtZU1ldGFkYXRhIGdldE1ldGFkYXRhKCk7Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVk
VmlkZW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWY2M2EwOWMyZDhhNjk1ZDQzNzYyZWY3
ZDM5MGNmZjk3ZTY2MTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZFZpZGVvRnJhbWU6
OlJUQ0VuY29kZWRWaWRlb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+
JiYgZnJhbWUpCisgICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9CisK
K1JUQ0VuY29kZWRWaWRlb0ZyYW1lOjp+UlRDRW5jb2RlZFZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVk
VmlkZW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkVmlkZW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3NzA1YWM4NTZhMDI2Mjk3ZjgxOTA3M2VhZjRj
ODMwZTM2MTlhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkVmlkZW9GcmFtZSA6IHB1YmxpYyBS
VENFbmNvZGVkRnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZFZpZGVv
RnJhbWU+IGNyZWF0ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZyYW1l
KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKFdURk1vdmUoZnJh
bWUpKSk7IH0KKyAgICB+UlRDRW5jb2RlZFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBSVENFbmNvZGVkVmlkZW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJs
ZUZyYW1lPiYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRkNmE4MTdm
ZTFkZWZhMDBkYjEzYjc5YzZmY2FiZWNlZDYyOTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5pZGwKQEAg
LTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRDLAor
ICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFi
bGUsCitdIGludGVyZmFjZSBSVENFbmNvZGVkVmlkZW9GcmFtZSB7CisgICAgLy8gcmVhZG9ubHkg
YXR0cmlidXRlIFJUQ0VuY29kZWRWaWRlb0ZyYW1lVHlwZSB0eXBlOworICAgIC8vIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wOworICAgIGF0dHJpYnV0ZSBB
cnJheUJ1ZmZlciBkYXRhOworICAgIC8vIFJUQ1ZpZGVvRnJhbWVNZXRhZGF0YSBnZXRNZXRhZGF0
YSgpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAppbmRleCBmMGIyZTExZDQ3ZmZi
YjNhODQzYmY0MTM5N2UwYzA4YzkxZTI2Mjc4Li40NjkzNGU0OGQwMmFmZjRiYmU2NGJiYTU5YWM3
ZmUwNzA5YTBhMmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCkBAIC0yMyw2ICsy
Myw4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAordHlwZWRl
ZiAoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIG9yIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSkgUlRDUnRw
VHJhbnNmb3JtOworCiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKICAgICBFbmFibGVkQnlT
ZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAppbmRleCAwYmZjYzk2NjNj
MmYwNmQ0ZTkwYzA5NDg4ZGYyNTJlMWZkMmIzYzAwLi5lZjdhMjk4MDAwNjJlMjM4YzZjYjNjNjBj
NjUyMjVjZWQ1YjM4MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcApAQCAtODEsOCArODEsMTAgQEAgT3B0aW9uYWw8
UlRDUnRwQ2FwYWJpbGl0aWVzPiBSVENSdHBSZWNlaXZlcjo6Z2V0Q2FwYWJpbGl0aWVzKFNjcmlw
dEV4ZWN1dGlvbkNvbnQKICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZWNlaXZl
ckNhcGFiaWxpdGllcyhjb250ZXh0LCBraW5kKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRD
UnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5z
Zm9ybSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0oT3B0
aW9uYWw8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKIHsKKyAgICBpZiAodHJhbnNmb3Jt
ICYmIG1fdHJhbnNmb3JtICYmICp0cmFuc2Zvcm0gPT0gKm1fdHJhbnNmb3JtKQorICAgICAgICBy
ZXR1cm4geyB9OwogICAgIGlmICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtLT5pc0F0dGFjaGVkKCkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInRyYW5zZm9y
bSBpcyBhbHJlYWR5IGluIHVzZSJfcyB9OwogCkBAIC05NSw2ICs5NywxMyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBSVENSdHBSZWNlaXZlcjo6c2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zv
cm0+JiYgdHJhbnNmbwogICAgIHJldHVybiB7IH07CiB9CiAKK09wdGlvbmFsPFJUQ1J0cFRyYW5z
Zm9ybTo6SW50ZXJuYWw+IFJUQ1J0cFJlY2VpdmVyOjp0cmFuc2Zvcm0oKQoreworICAgIGlmICgh
bV90cmFuc2Zvcm0pCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG1fdHJhbnNmb3Jt
LT5pbnRlcm5hbFRyYW5zZm9ybSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAppbmRleCA4Y2IxYTQzZDJiZDA0NDYyNGMyODdj
YTZhZjcxYzdkZjg3OGQyMmI1Li4zYTE2MTcyMDU0M2MxZDRiYmZjNTFhMTQwMTM3ZDljYzc3MDBk
M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBSVENSdHBSZWNlaXZl
ckJhY2tlbmQqIGJhY2tlbmQoKSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KICAgICB2b2lk
IGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCi0gICAgUlRDUnRwVHJhbnNmb3Jt
KiB0cmFuc2Zvcm0oKSB7IHJldHVybiBtX3RyYW5zZm9ybS5nZXQoKTsgfQotICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmKTsKKyAgICBP
cHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0oKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtPiYmKTsK
IAogcHJpdmF0ZToKICAgICBSVENSdHBSZWNlaXZlcihQZWVyQ29ubmVjdGlvbkJhY2tlbmQmLCBS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFj
a2VuZD4mJik7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+IG1fdHJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2Vu
ZD4gbV9iYWNrZW5kOwogICAgIFdlYWtQdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBtX2Nvbm5l
Y3Rpb247Ci0gICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgT3B0
aW9uYWw8UlRDUnRwVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oCmluZGV4IDRlYjliODQ3OTEx
M2RhMjE3OTVjODcwN2ViZGRlNGNhNmVhMmI0Y2YuLjgxNmNhNzljOWQzYjcwYjI3OTRlYjk2Yjgy
N2NmYTUyOTMzNjkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaApAQCAtMzYs
OCArMzYsOCBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm07CiAKIGNsYXNzIFJUQ1J0cFJlY2VpdmVy
V2l0aFRyYW5zZm9ybSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJUQ1J0cFRyYW5zZm9ybSogdHJh
bnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyByZXR1cm4gcmVjZWl2ZXIudHJhbnNm
b3JtKCk7IH0KLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJUQ1J0
cFJlY2VpdmVyJiByZWNlaXZlciwgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0p
IHsgcmV0dXJuIHJlY2VpdmVyLnNldFRyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpOyB9Cisg
ICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybShS
VENSdHBSZWNlaXZlciYgcmVjZWl2ZXIpIHsgcmV0dXJuIHJlY2VpdmVyLnRyYW5zZm9ybSgpOyB9
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBSZWNlaXZl
ciYgcmVjZWl2ZXIsIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+JiYgdHJhbnNm
b3JtKSB7IHJldHVybiByZWNlaXZlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtOjpmcm9t
KFdURk1vdmUodHJhbnNmb3JtKSkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNGcmFtZVRyYW5zZm9ybS5jcHAKaW5kZXggMjk3NGM2NDBjOThhMWFlZmQxZTFiNmZhMjFkMTdh
NmQ2NTBhNjYzNi4uNWM4N2NmNTY0YTUxNTMwMTQ3OTNjNDhmMmYyZGU5Mjc1Yzc5NzJlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNyeXB0
b0tleVJhdy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lci5oIgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCIKICNpbmNs
dWRlICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjgsMTEgKzY5LDEyIEBAIHVpbnQ2NF90IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6Y291bnRl
ckZvclRlc3RpbmcoKSBjb25zdAogCiB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlh
bGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQsIFNpZGUgc2lk
ZSkKIHsKKyAgICBtX2lzQXR0YWNoZWQgPSB0cnVlOwogICAgIG1fdHJhbnNmb3JtZXItPnNldElz
U2VuZGluZyhzaWRlID09IFNpZGU6OlNlbmRlcik7CiAgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNQ
cm9jZXNzaW5nQXVkaW8oYmFja2VuZC5tZWRpYVR5cGUoKSA9PSBSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kOjpNZWRpYVR5cGU6OkF1ZGlvKTsKIAogICAgIGJhY2tlbmQuc2V0VHJhbnNmb3JtYWJsZUZy
YW1lQ2FsbGJhY2soW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgYmFja2VuZCA9IG1ha2VS
ZWYoYmFja2VuZCldKGF1dG8mJiBmcmFtZSkgewotICAgICAgICBhdXRvIGNodW5rID0gZnJhbWUu
ZGF0YSgpOworICAgICAgICBhdXRvIGNodW5rID0gZnJhbWUtPmRhdGEoKTsKICAgICAgICAgYXV0
byByZXN1bHQgPSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGNodW5rLmRhdGEsIGNodW5rLnNpemUp
OwogCiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKQEAgLTgwLDkgKzgyLDkg
QEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGZyYW1lLnNldERhdGEoeyByZXN1bHQucmV0dXJuVmFsdWUoKS5kYXRhKCks
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLnNpemUoKSB9KTsKKyAgICAgICAgZnJhbWUtPnNldERhdGEo
eyByZXN1bHQucmV0dXJuVmFsdWUoKS5kYXRhKCksIHJlc3VsdC5yZXR1cm5WYWx1ZSgpLnNpemUo
KSB9KTsKIAotICAgICAgICBiYWNrZW5kLT5wcm9jZXNzVHJhbnNmb3JtZWRGcmFtZShXVEZNb3Zl
KGZyYW1lKSk7CisgICAgICAgIGJhY2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1v
dmUoZnJhbWUuZ2V0KCkpKTsKICAgICB9KTsKIH0KIApAQCAtMTAwLDYgKzEwMiw3IEBAIHZvaWQg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kJiBiCiB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6d2lsbENsZWFy
QmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQogewogICAgIGJhY2tlbmQu
Y2xlYXJUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygpOworICAgIG1faXNBdHRhY2hlZCA9IGZh
bHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaAppbmRl
eCAxNTgxOTBhOTA5NjYwY2YwNDBkMDY3ZTM2YWE1N2ZmYmNhNjE0YmFjLi5kNDdkYjliMjljOGE2
YmQ1NzhjZTIzMWFhMzFiNTY5YTA5YWU4NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTI4
LDMyICsyOCwzNCBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiSlNET01Qcm9t
aXNlRGVmZXJyZWQuaCIKLSNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm0uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDcnlwdG9LZXk7CiBjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lcjsKK2NsYXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ7CiAKLWNsYXNzIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSBmaW5hbCA6IHB1YmxpYyBSVENSdHBUcmFuc2Zvcm0geworY2xhc3MgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKTsgfQogICAg
IH5SVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKIAogICAgIHZvaWQgc2V0RW5jcnlwdGlvbktleShD
cnlwdG9LZXkmLCBPcHRpb25hbDx1aW50NjRfdD4sIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAorICAgIGJvb2wgaXNBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdHRhY2hlZDsg
fQorICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kJik7CisgICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJik7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQmKTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGNvdW50ZXJGb3JUZXN0
aW5nKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CiAK
LSAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZCYpIGZpbmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRw
VHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0KICAgICBlbnVtIGNsYXNzIFNpZGUgeyBTZW5k
ZXIsIFJlY2VpdmVyIH07CiAgICAgdm9pZCBpbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJh
bnNmb3JtQmFja2VuZCYsIFNpZGUpOwogCisgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9
OwogICAgIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcj4gbV90cmFuc2Zvcm1lcjsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAppbmRleCA5N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4N2Nh
NzFhYjBhZTRiOTQxLi4yNjQyOGRkOTJmNTE1OWQzZTkyMmI1MTBlNGRlMDc1NjY3YTkxMmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCkBAIC0yOCw4ICsyOCw5IEBACiAgICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X0VYUE9SVCwKICAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlLAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLV0gaW50ZXJmYWNlIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CitdIGludGVyZmFjZSBSVENSdHBTRnJh
bWVUcmFuc2Zvcm0gewogICAgIGNvbnN0cnVjdG9yKCk7CiAKICAgICBQcm9taXNlPHVuZGVmaW5l
ZD4gc2V0RW5jcnlwdGlvbktleShDcnlwdG9LZXkga2V5LCBvcHRpb25hbCB1bnNpZ25lZCBsb25n
IGxvbmcga2V5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzM2MDc1
ZGVkNzc2YjJmNzY5Y2Q1ZTk4NGI1N2YzNTlkMjE1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAK
QEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNm
b3JtLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIK
KyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuaCIKKyNp
bmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5z
Zm9ybUJhY2tlbmQuaCIKKyNpbmNsdWRlICJXb3JrZXIuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFs
bG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChSVENSdHBTY3JpcHRUcmFuc2Zvcm0pOworCitFeGNlcHRpb25PcjxSZWY8UlRD
UnRwU2NyaXB0VHJhbnNmb3JtPj4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya2VyJiB3b3JrZXIsIFN0cmluZyYmIG5hbWUp
Cit7CisgICAgaWYgKCF3b3JrZXIuaGFzUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIobmFtZSkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyIHdhcyByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CisKKyAg
ICBpZiAoIXdvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIldvcmtlciBmcmFtZSBpcyBkZXRhY2hlZCJf
cyB9OworCisgICAgYXV0byBtZXNzYWdlQ2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUo
Kndvcmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGF1dG8gdHJhbnNmb3JtTWVz
c2FnZVBvcnQgPSBtZXNzYWdlQ2hhbm5lbC0+cG9ydDEoKTsKKyAgICBhdXRvIHRyYW5zZm9ybWVy
TWVzc2FnZVBvcnQgPSBtZXNzYWdlQ2hhbm5lbC0+cG9ydDIoKTsKKworICAgIGF1dG8gdHJhbnNm
b3JtID0gYWRvcHRSZWYoKm5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0oY29udGV4dCwgbWFrZVJl
Zih3b3JrZXIpLCBtYWtlUmVmKCp0cmFuc2Zvcm1NZXNzYWdlUG9ydCkpKTsKKyAgICB0cmFuc2Zv
cm0tPnN1c3BlbmRJZk5lZWRlZCgpOworCisgICAgd29ya2VyLmNyZWF0ZVJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyKG5hbWUsIHRyYW5zZm9ybWVyTWVzc2FnZVBvcnQtPmRpc2VudGFuZ2xlKCksIHRy
YW5zZm9ybSk7CisKKyAgICByZXR1cm4gdHJhbnNmb3JtOworfQorCitSVENSdHBTY3JpcHRUcmFu
c2Zvcm06OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBSZWY8V29ya2VyPiYmIHdvcmtlciwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCisgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3dvcmtlcihXVEZNb3ZlKHdvcmtl
cikpCisgICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKK3sKK30KKworUlRDUnRwU2NyaXB0VHJh
bnNmb3JtOjp+UlRDUnRwU2NyaXB0VHJhbnNmb3JtKCkKK3sKKyAgICBjbGVhcigpOworfQorCit2
b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtZXIoUmVmUHRyPFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyPiYmIHRyYW5zZm9ybWVyKQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworICAgIGlmICghdHJhbnNmb3JtZXIpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpNZWRp
YUVsZW1lbnQsIEVycm9yRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgIkFu
IGVycm9yIHdhcyB0aHJvd24gZnJvbSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciBjb25zdHJ1Y3Rv
ciJfcywgeyB9LCAwLCAwLCB7IH0pKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFuc2Zvcm1l
ckxvY2spOworICAgICAgICBBU1NFUlQoIW1faXNUcmFuc2Zvcm1lckluaXRpYWxpemVkKTsKKyAg
ICAgICAgbV9pc1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBtX3RyYW5z
Zm9ybWVyID0gbWFrZVdlYWtQdHIodHJhbnNmb3JtZXIuZ2V0KCkpOworICAgIH0KKyAgICB0cmFu
c2Zvcm1lci0+c3RhcnRQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAg
IGlmIChtX2JhY2tlbmQpCisgICAgICAgICAgICBzZXR1cFRyYW5zZm9ybWVyKG1fYmFja2VuZC5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9KTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zv
cm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYg
YmFja2VuZCkKK3sKKyAgICBpbml0aWFsaXplVHJhbnNmb3JtZXIoYmFja2VuZCk7Cit9CisKK3Zv
aWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxpemVUcmFuc2Zvcm1l
cihiYWNrZW5kKTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxDbGVhckJh
Y2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9p
ZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIG1faXNBdHRhY2hlZCA9IHRydWU7CisgICAg
aWYgKCFzZXR1cFRyYW5zZm9ybWVyKG1ha2VSZWYoYmFja2VuZCkpKQorICAgICAgICBtX2JhY2tl
bmQgPSBtYWtlUmVmKGJhY2tlbmQpOworfQorCitib29sIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6
c2V0dXBUcmFuc2Zvcm1lcihSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5kKQor
eworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFuc2Zvcm1lckxvY2spOworICAgIGlm
ICghbV9pc1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIG1fd29ya2VyLT5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW3RyYW5zZm9ybWVyID0g
bV90cmFuc2Zvcm1lciwgYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCldKGF1dG8mKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKHRyYW5zZm9ybWVyKQorICAgICAgICAgICAgdHJhbnNmb3JtZXItPnN0
YXJ0KFdURk1vdmUoYmFja2VuZCkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6Y2xlYXIoKQoreworICAgIG1faXNBdHRhY2hlZCA9
IGZhbHNlOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RyYW5zZm9ybWVyTG9jayk7
CisgICAgbV9pc1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBtX3dvcmtlci0+
cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFt0cmFuc2Zvcm1lciA9IFdURk1vdmUobV90cmFu
c2Zvcm1lcildKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHRyYW5zZm9ybWVyKQorICAg
ICAgICAgICAgdHJhbnNmb3JtZXItPmNsZWFyKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDRkY2ViNWY0MGZmNTdmZDVmYTNjYzA3OTNhNjEwOGU4NTU2ZTY5Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI7CitjbGFzcyBSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kOworY2xhc3MgV29ya2VyOworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zv
cm0gZmluYWwKKyAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBTY3JpcHRU
cmFuc2Zvcm0+CisgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSVENS
dHBTY3JpcHRUcmFuc2Zvcm0pOworcHVibGljOgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
UlRDUnRwU2NyaXB0VHJhbnNmb3JtPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBX
b3JrZXImLCBTdHJpbmcmJiBuYW1lKTsKKyAgICB+UlRDUnRwU2NyaXB0VHJhbnNmb3JtKCk7CisK
KyAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisgICAg
dm9pZCBzZXRUcmFuc2Zvcm1lcihSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+JiYpOwor
CisgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9Cisg
ICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmKTsKKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQmKTsKKyAgICB2b2lkIHdpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZCYpOworCisgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2lu
ZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8V29ya2VyPiYmLCBSZWY8
TWVzc2FnZVBvcnQ+JiYpOworCisgICAgdm9pZCBpbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRw
VHJhbnNmb3JtQmFja2VuZCYpOworICAgIGJvb2wgc2V0dXBUcmFuc2Zvcm1lcihSZWY8UlRDUnRw
VHJhbnNmb3JtQmFja2VuZD4mJik7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgLy8gQWN0aXZl
RE9NT2JqZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iOyB9CisKKyAgICAvLyBFdmVudFRhcmdldAor
ICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBl
OyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFJlZjxX
b3JrZXI+IG1fd29ya2VyOworICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OworCisgICAgYm9v
bCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9OworICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kPiBtX2JhY2tlbmQ7CisKKyAgICBMb2NrIG1fdHJhbnNmb3JtZXJMb2NrOworICAgIGJvb2wg
bV9pc1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAgIFdlYWtQdHI8UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kNjZhOWI5NTMxYzE3ODIxYzY4OTliNmY2MDBmZDU3MzBkOWZlOTlkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisg
ICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKKyAgICBFeHBvc2VkPVdpbmRvdywK
KyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCitdIGludGVyZmFjZSBSVENSdHBTY3JpcHRU
cmFuc2Zvcm0gOiBFdmVudFRhcmdldCB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIGNvbnN0cnVjdG9yKFdvcmtlciB3b3JrZXIsIERPTVN0cmluZyBuYW1lKTsKKworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJv
dmlkZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYzYmU4YWRjMzAyN2U1NzhmNjZj
ZjRjNTljMWI1NzRkNmZlMjYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsCkBAIC0w
LDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitpbnRlcmZhY2UgbWl4aW4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtUHJvdmlkZXIgeworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlZ2lz
dGVyUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoRE9NU3RyaW5nIG5hbWUsIFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyQ29uc3RydWN0b3IgcHJvY2Vzc29yQ29uc3RydWN0b3IpOworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMzNzRkNzIzZTA0NzU3OWQwZjhiMzU3ZmRi
YzU0NWU2NDVjYTM3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwCkBAIC0wLDAgKzEsMTkwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgiCisKKyNpZiBF
TkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSAiSlNDYWxsYmFja0RhdGEuaCIKKyNpbmNsdWRlICJKU1JUQ0VuY29kZWRBdWRp
b0ZyYW1lLmgiCisjaW5jbHVkZSAiSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUg
IlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgi
CisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXcml0YWJsZVN0
cmVhbS5oIgorI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtU2luay5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlCisgICAgOiBwdWJsaWMg
UmVhZGFibGVTdHJlYW1Tb3VyY2UKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSVENSdHBS
ZWFkYWJsZVN0cmVhbVNvdXJjZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVh
ZGFibGVTdHJlYW1Tb3VyY2U+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
UmVhZGFibGVTdHJlYW1Tb3VyY2UpOyB9CisKKyAgICB2b2lkIGNsb3NlKCkgeyBjb250cm9sbGVy
KCkuY2xvc2UoKTsgfQorICAgIHZvaWQgZW5xdWV1ZShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgY29u
dHJvbGxlcigpLmVucXVldWUodmFsdWUpOyB9CisKK3ByaXZhdGU6CisgICAgUlRDUnRwUmVhZGFi
bGVTdHJlYW1Tb3VyY2UoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZWFkYWJsZVN0cmVhbVNvdXJj
ZQorICAgIHZvaWQgc2V0QWN0aXZlKCkgZmluYWwgeyB9CisgICAgdm9pZCBzZXRJbmFjdGl2ZSgp
IGZpbmFsIHsgfQorICAgIHZvaWQgZG9TdGFydCgpIGZpbmFsIHsgfQorICAgIHZvaWQgZG9QdWxs
KCkgZmluYWwgeyB9CisgICAgdm9pZCBkb0NhbmNlbCgpIGZpbmFsIHsgfQorfTsKKworY2xhc3Mg
UlRDUnRwV3JpdGFibGVTdHJlYW1TaW5rIDogcHVibGljIFdyaXRhYmxlU3RyZWFtU2luayB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxSVENSdHBXcml0YWJsZVN0cmVhbVNpbms+IGNyZWF0ZShG
dW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPiYmIGVu
cXVldWVGdW5jdGlvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBXcml0YWJsZVN0cmVh
bVNpbmsoV1RGTW92ZShlbnF1ZXVlRnVuY3Rpb24pKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBSVENSdHBXcml0YWJsZVN0cmVhbVNpbmsoRnVuY3Rpb248dm9pZChVbmlxdWVSZWY8UlRD
UnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmKT4mJiBlbnF1ZXVlRnVuY3Rpb24pCisgICAgICAgIDog
bV9lbnF1ZXVlRnVuY3Rpb24oV1RGTW92ZShlbnF1ZXVlRnVuY3Rpb24pKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIHdyaXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKKyAgICB7
CisgICAgICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpjb250ZXh0Lmdsb2JhbE9iamVjdCgpOwor
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC52
bSgpKTsKKyAgICAgICAgYXV0byBmcmFtZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNl
PFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgSURMSW50ZXJmYWNlPFJUQ0VuY29kZWRWaWRlb0ZyYW1l
Pj4+KGdsb2JhbE9iamVjdCwgdmFsdWUpOworCisgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24o
KSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNl
cHRpb25FcnJvciB9LCBSZWplY3RBc0hhbmRsZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBXVEY6OnN3aXRjaE9uKGZyYW1lLCBbJl0oUmVmUHRyPFJU
Q0VuY29kZWRBdWRpb0ZyYW1lPiYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fZW5xdWV1ZUZ1bmN0
aW9uKHZhbHVlLT50YWtlUlRDRnJhbWUoKSk7CisgICAgICAgIH0sIFsmXShSZWZQdHI8UlRDRW5j
b2RlZFZpZGVvRnJhbWU+JiB2YWx1ZSkgeworICAgICAgICAgICAgbV9lbnF1ZXVlRnVuY3Rpb24o
dmFsdWUtPnRha2VSVENGcmFtZSgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHByb21pc2UucmVz
b2x2ZSgpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hldGhlciBjbGVhcmluZyBh
bGwgcGVuZGluZyBmcmFtZXMuCisgICAgdm9pZCBjbG9zZSgpIGZpbmFsIHsgfQorICAgIHZvaWQg
ZXJyb3IoU3RyaW5nJiYpIGZpbmFsIHsgfQorCisgICAgRnVuY3Rpb248dm9pZChVbmlxdWVSZWY8
UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmKT4gbV9lbnF1ZXVlRnVuY3Rpb247Cit9OworCitF
eGNlcHRpb25PcjxSZWY8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
YXV0byBwb3J0ID0gZG93bmNhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LnRha2VQZW5kaW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0KCk7CisgICAgaWYgKCFwb3J0KQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTm8gcGVuZGluZyBjb25zdHJ1
Y3Rpb24gZGF0YSBmb3IgdGhpcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciJfcyB9OworCisgICAg
YXV0byB0cmFuc2Zvcm1lciA9IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIo
Y29udGV4dCwgcG9ydC5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgdHJhbnNmb3JtZXItPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0cmFuc2Zvcm1lcjsKK30KKworUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXI6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQorICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KCZjb250ZXh0KQorICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCit7Cit9CisKK1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyOjp+UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKQoreworfQorCitS
ZWZQdHI8UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U+IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
OjpzdGFydFN0cmVhbXMoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkKK3sKKyAgICBh
dXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKTsKKyAgICBpZiAoIWNhbGxiYWNrKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY29udGV4dC5n
bG9iYWxPYmplY3QoKSk7CisKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAg
IEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgYXV0byByZWFkYWJsZVN0cmVhbVNv
dXJjZSA9IFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHJl
YWRhYmxlU3RyZWFtID0gUmVhZGFibGVTdHJlYW06OmNyZWF0ZShnbG9iYWxPYmplY3QsIHJlYWRh
YmxlU3RyZWFtU291cmNlLmNvcHlSZWYoKSk7CisgICAgaWYgKHJlYWRhYmxlU3RyZWFtLmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gd3JpdGFibGVT
dHJlYW0gPSBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgUlRDUnRwV3JpdGFi
bGVTdHJlYW1TaW5rOjpjcmVhdGUoW2JhY2tlbmQgPSBtYWtlUmVmKGJhY2tlbmQpXShhdXRvJiYg
ZnJhbWUpIHsKKyAgICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92
ZShmcmFtZS5nZXQoKSkpOworICAgIH0pKTsKKyAgICBpZiAod3JpdGFibGVTdHJlYW0uaGFzRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gQ2FsbCBzdGFydCBj
YWxsYmFjay4KKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5h
cHBlbmQodG9KU05ld2x5Q3JlYXRlZCgmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCByZWFk
YWJsZVN0cmVhbS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlNO
ZXdseUNyZWF0ZWQoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgd3JpdGFibGVTdHJlYW0u
cmVsZWFzZVJldHVyblZhbHVlKCkpKTsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBy
ZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBjYWxsYmFjay0+aW52b2tlQ2FsbGJhY2soSlNDOjpqc1Vu
ZGVmaW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0YXJ0IiksIHJldHVybmVkRXhjZXB0aW9u
KTsKKyAgICAvLyBGSVhNRTogRG8gc29tZXRoaW5nIGluIGNhc2Ugb2YgZXhjZXB0aW9uPyBXZSBz
aG91bGQgYXQgbGVhc3QgbG9nIGVycm9ycy4KKworICAgIHJldHVybiByZWFkYWJsZVN0cmVhbVNv
dXJjZTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RhcnQoUmVmPFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2VuZCkKK3sKKyAgICBhdXRvIHJlYWRhYmxlU3RyZWFt
U291cmNlID0gc3RhcnRTdHJlYW1zKGJhY2tlbmQuZ2V0KCkpOworICAgIGlmICghcmVhZGFibGVT
dHJlYW1Tb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2VuZCA9IFdURk1vdmUo
YmFja2VuZCk7CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fYmFja2VuZC0+c2V0VHJhbnNm
b3JtYWJsZUZyYW1lQ2FsbGJhY2soW3JlYWRhYmxlU3RyZWFtU291cmNlID0gbWFrZVdlYWtQdHIo
cmVhZGFibGVTdHJlYW1Tb3VyY2UuZ2V0KCkpLCBpc0F1ZGlvID0gbV9iYWNrZW5kLT5tZWRpYVR5
cGUoKSA9PSBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpNZWRpYVR5cGU6OkF1ZGlvLCB0aHJlYWQg
PSBtYWtlUmVmKGNvbnRleHQudGhyZWFkKCkpXShhdXRvJiYgZnJhbWUpIG11dGFibGUgeworICAg
ICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlYWRhYmxlU3RyZWFtU291
cmNlLCBpc0F1ZGlvLCBmcmFtZSA9IFdURk1vdmUoZnJhbWUpXShhdXRvJiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghcmVhZGFibGVTdHJlYW1Tb3VyY2UpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKKyAgICAg
ICAgICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CisgICAgICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKKworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGlzQXVkaW8g
PyB0b0pTKCZnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIFJUQ0VuY29kZWRBdWRpb0ZyYW1l
OjpjcmVhdGUoV1RGTW92ZShmcmFtZSkpKSA6IHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9i
amVjdCwgUlRDRW5jb2RlZEF1ZGlvRnJhbWU6OmNyZWF0ZShXVEZNb3ZlKGZyYW1lKSkpOworICAg
ICAgICAgICAgcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUodmFsdWUpOworICAgICAgICB9
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICB9KTsKK30KKwordm9pZCBSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcjo6Y2xlYXIoKQoreworICAgIGlmIChtX2JhY2tlbmQpCisgICAg
ICAgIG1fYmFja2VuZC0+Y2xlYXJUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygpOworICAgIG1f
YmFja2VuZCA9IG51bGxwdHI7CisgICAgc3RvcFBlbmRpbmdBY3Rpdml0eSgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmFkZGNlNGYxMjBkZWI4NDRjMDRmYjFiZGI2ZjZh
NTBhMGNlODc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTQ2FsbGJhY2tEYXRhU3Ryb25nOworY2xhc3MgTWVz
c2FnZVBvcnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgUlRDUnRwVHJh
bnNmb3JtQmFja2VuZDsKK2NsYXNzIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOworCitjbGFz
cyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcgorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI+CisgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICB+UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIoKTsKKworICAgIHZvaWQgc2V0Q2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tE
YXRhU3Ryb25nPiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsg
fQorICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9CisKKyAg
ICB2b2lkIHN0YXJ0KFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmKTsKKyAgICB2b2lkIGNs
ZWFyKCk7CisKKyAgICB2b2lkIHN0YXJ0UGVuZGluZ0FjdGl2aXR5KCkgeyBtX3BlbmRpbmdBY3Rp
dml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOyB9CisKK3ByaXZhdGU6CisgICAgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxNZXNzYWdl
UG9ydD4mJik7CisKKyAgICBSZWZQdHI8UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U+IHN0YXJ0
U3RyZWFtcyhSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisKKyAgICAvLyBBY3RpdmVET01PYmpl
Y3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgeyByZXR1cm4g
IlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIjsgfQorICAgIHZvaWQgc3RvcCgpIGZpbmFsIHsgc3Rv
cFBlbmRpbmdBY3Rpdml0eSgpOyB9CisgICAgdm9pZCBzdG9wUGVuZGluZ0FjdGl2aXR5KCkgeyBh
dXRvIHBlbmRpbmdBY3Rpdml0eSA9IFdURk1vdmUobV9wZW5kaW5nQWN0aXZpdHkpOyB9CisKKyAg
ICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFj
a0RhdGFTdHJvbmc+IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQ+IG1fYmFja2VuZDsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyPj4gbV9wZW5kaW5nQWN0aXZpdHk7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Nzc0NTU3ZDA1ZGM1YTA1MDNlOWUxNzJiYjkyZDY0N2U0OTAwOTZl
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8vIEZJWE1FOiBBZGQgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywK
K1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKKyAgICBF
eHBvc2VkPURlZGljYXRlZFdvcmtlciwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCitd
IGludGVyZmFjZSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciB7CisgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRdIGNvbnN0cnVjdG9yKC8qIG9wdGlvbmFsIG9iamVjdCB0cmFuc2Zv
cm1PcHRpb25zICovKTsKKworICAgIC8vIEZJWE1FOiBhZGQgY29udHJvbGxlciBhdHRyaWJ1dGUu
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7Cit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1lckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWQ5YmRiOGJl
MTM3M2JmN2ZmYzBmN2YxYWQ5MGI4MmRmNDg0NDNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0
cnVjdG9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisj
aW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5o
IgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI7CisKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyQ29uc3RydWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lckNvbnN0cnVjdG9yPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAg
ICB1c2luZyBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7CisKKyAgICB2aXJ0
dWFsIENhbGxiYWNrUmVzdWx0PFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IGhhbmRs
ZUV2ZW50KCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVj
dG9yLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lNzIxZTUzZjZiNjU1YjRmOGFhOWIxNzJlMjNiMjcwMzE0YzU3
YmY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbApAQCAtMCwwICsxLDMxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBD
b25kaXRpb25hbD1XRUJfUlRDLAorXSBjYWxsYmFjayBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNv
bnN0cnVjdG9yID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zv
cm0uaWRsCmluZGV4IDMzOGE3ZTMwN2Q2MjRjMTM0Zjc4MGNjYjcxMGM4YzY4MjRkYzBkZGEuLmI5
MTJkMDFhNmQ5OTU1YTMwNGJiYjFhNWNmZDhhOWY1MDBjOTAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJh
bnNmb3JtLmlkbApAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKK3R5cGVkZWYgKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBvciBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0pIFJUQ1J0cFRyYW5zZm9ybTsKKwogWwogICAgIENvbmRpdGlvbmFsPVdF
Ql9SVEMsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNw
cAppbmRleCBjN2FjM2M0OWJkOWQ3OTZiMjQ4NzVmOWQ5MjMwNmQzZTkzYTc1NDNiLi4zZTAzMmI2
NTkzYTc2NDNiNDYyZDNkZmE4ZTIyZmIyYjA5NDQ2ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBAIC0xOTMsOCArMTkz
LDEwIEBAIE9wdGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBSVENSdHBTZW5kZXI6
OmN1cnJlbnRUcmFuc2NlaXZlckRpcmVjdGlvbigpCiAgICAgcmV0dXJuIHNlbmRlclRyYW5zY2Vp
dmVyLT5jdXJyZW50RGlyZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNl
bmRlcjo6c2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKQor
RXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRUcmFuc2Zvcm0oT3B0aW9uYWw8UlRD
UnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKIHsKKyAgICBpZiAodHJhbnNmb3JtICYmIG1fdHJh
bnNmb3JtICYmICp0cmFuc2Zvcm0gPT0gKm1fdHJhbnNmb3JtKQorICAgICAgICByZXR1cm4geyB9
OwogICAgIGlmICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtLT5pc0F0dGFjaGVkKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInRyYW5zZm9ybSBpcyBhbHJl
YWR5IGluIHVzZSJfcyB9OwogCkBAIC0yMDcsNiArMjA5LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJh
bnNmb3JtCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJ
bnRlcm5hbD4gUlRDUnRwU2VuZGVyOjp0cmFuc2Zvcm0oKQoreworICAgIGlmICghbV90cmFuc2Zv
cm0pCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtLT5pbnRlcm5h
bFRyYW5zZm9ybSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oCmluZGV4IDcwYWQ5NTkyNzBiYjJhMjlhZTM0OTNiMWQxZWI4MDk0YTli
NTA1YjUuLmVkZTRkOWRhMGI4NTBhOGNhOWY4OWFhMjRjMWNhYTU3ODdiOWY0MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAt
ODIsOCArODIsOCBAQCBwdWJsaWM6CiAgICAgUlRDRFRNRlNlbmRlciogZHRtZigpOwogICAgIE9w
dGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBjdXJyZW50VHJhbnNjZWl2ZXJEaXJl
Y3Rpb24oKSBjb25zdDsKIAotICAgIFJUQ1J0cFRyYW5zZm9ybSogdHJhbnNmb3JtKCkgeyByZXR1
cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zv
cm0oUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJik7CisgICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNm
b3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJh
bnNmb3JtKE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4mJik7CiAKIHByaXZhdGU6CiAgICAgUlRD
UnRwU2VuZGVyKFJUQ1BlZXJDb25uZWN0aW9uJiwgU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8
U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFj
a2VuZD4mJik7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFJUQ1J0cFNlbmRlckJhY2tlbmQ+IG1fYmFja2VuZDsKICAgICBXZWFrUHRyPFJUQ1BlZXJDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAgICAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IG1fZHRtZlNl
bmRlcjsKLSAgICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKKyAgICBPcHRp
b25hbDxSVENSdHBUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaAppbmRleCA4NzE0MzhlZTY2NWIyNmY4
MGUxNTFjMTk1ZWM4NzZjY2VhYWE5MzBlLi40NmQzN2E3NzM2ZjE2ZGMwNzk1Yjk1ZDQwNThlYWE5
NDNmZGE2Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaApAQCAtMzYsOCArMzYsOCBA
QCBjbGFzcyBSVENSdHBUcmFuc2Zvcm07CiAKIGNsYXNzIFJUQ1J0cFNlbmRlcldpdGhUcmFuc2Zv
cm0gewogcHVibGljOgotICAgIHN0YXRpYyBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybShSVENS
dHBTZW5kZXImIHNlbmRlcikgeyByZXR1cm4gc2VuZGVyLnRyYW5zZm9ybSgpOyB9Ci0gICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBTZW5kZXImIHNlbmRlciwg
UmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHNlbmRlci5zZXRU
cmFuc2Zvcm0oV1RGTW92ZSh0cmFuc2Zvcm0pKTsgfQorICAgIHN0YXRpYyBPcHRpb25hbDxSVENS
dHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIpIHsg
cmV0dXJuIHNlbmRlci50cmFuc2Zvcm0oKTsgfQorICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRUcmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIsIE9wdGlvbmFsPFJUQ1J0cFRyYW5z
Zm9ybTo6SW50ZXJuYWw+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0VHJhbnNmb3Jt
KFJUQ1J0cFRyYW5zZm9ybTo6ZnJvbShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCmluZGV4IDNiZjVlNWU1YzJkZjcwZjk2MzAz
ZGY5NDk0ZmM1YjMxNWM2OTNiMWQuLjNjN2ZjZjRiZDI0Mjc1NmUzMWM1ZGIzOGFjOTZiYjhhMWY3
NDA4MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwVHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5jcHAKQEAgLTMzLDEwICszMywzMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK09wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gUlRDUnRwVHJhbnNmb3JtOjpmcm9t
KE9wdGlvbmFsPEludGVybmFsPiYmIGludGVybmFsKQoreworICAgIGlmICghaW50ZXJuYWwpCisg
ICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFJUQ1J0cFRyYW5zZm9ybShXVEZNb3ZlKCpp
bnRlcm5hbCkpOworfQorCitSVENSdHBUcmFuc2Zvcm06OlJUQ1J0cFRyYW5zZm9ybShJbnRlcm5h
bCYmIHRyYW5zZm9ybSkKKyAgICA6IG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSkKK3sK
K30KKwogUlRDUnRwVHJhbnNmb3JtOjp+UlRDUnRwVHJhbnNmb3JtKCkKIHsKLSAgICBpZiAobV9i
YWNrZW5kKQotICAgICAgICB3aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOworICAgIGNsZWFy
QmFja2VuZCgpOworfQorCitib29sIFJUQ1J0cFRyYW5zZm9ybTo6aXNBdHRhY2hlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAgICAgICByZXR1cm4g
c2ZyYW1lVHJhbnNmb3JtLT5pc0F0dGFjaGVkKCk7CisgICAgfSwgWyZdKGNvbnN0IFJlZlB0cjxS
VENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgcmV0dXJu
IHNjcmlwdFRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpOworICAgIH0pOwogfQogCiB2b2lkIFJUQ1J0
cFRyYW5zZm9ybTo6YXR0YWNoVG9SZWNlaXZlcihSVENSdHBSZWNlaXZlciYgcmVjZWl2ZXIpCkBA
IC00NCw4ICs2NCwxMyBAQCB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9SZWNlaXZlcihS
VENSdHBSZWNlaXZlciYgcmVjZWl2ZXIpCiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwogICAg
IGlmIChhdXRvKiBiYWNrZW5kID0gcmVjZWl2ZXIuYmFja2VuZCgpKQogICAgICAgICBtX2JhY2tl
bmQgPSBiYWNrZW5kLT5jcmVhdGVSVENSdHBUcmFuc2Zvcm1CYWNrZW5kKCk7Ci0gICAgaWYgKG1f
YmFja2VuZCkKLSAgICAgICAgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9iYWNrZW5k
KTsKKyAgICBpZiAobV9iYWNrZW5kKSB7CisgICAgICAgIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBb
Jl0oUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAg
ICAgICAgICAgc2ZyYW1lVHJhbnNmb3JtLT5pbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKCpt
X2JhY2tlbmQpOworICAgICAgICB9LCBbJl0oUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4m
IHNjcmlwdFRyYW5zZm9ybSkgeworICAgICAgICAgICAgc2NyaXB0VHJhbnNmb3JtLT5pbml0aWFs
aXplQmFja2VuZEZvclJlY2VpdmVyKCptX2JhY2tlbmQpOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAKIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1NlbmRlcihSVENSdHBTZW5kZXImIHNl
bmRlcikKQEAgLTUzLDI2ICs3OCw1NCBAQCB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9T
ZW5kZXIoUlRDUnRwU2VuZGVyJiBzZW5kZXIpCiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwog
ICAgIGlmIChhdXRvKiBiYWNrZW5kID0gc2VuZGVyLmJhY2tlbmQoKSkKICAgICAgICAgbV9iYWNr
ZW5kID0gYmFja2VuZC0+Y3JlYXRlUlRDUnRwVHJhbnNmb3JtQmFja2VuZCgpOwotICAgIGlmICht
X2JhY2tlbmQpCi0gICAgICAgIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKCptX2JhY2tlbmQp
OworICAgIGlmIChtX2JhY2tlbmQpIHsKKyAgICAgICAgc3dpdGNoT24obV90cmFuc2Zvcm0sIFsm
XShSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtKSB7CisgICAg
ICAgICAgICBzZnJhbWVUcmFuc2Zvcm0tPmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKCptX2Jh
Y2tlbmQpOworICAgICAgICB9LCBbJl0oUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNj
cmlwdFRyYW5zZm9ybSkgeworICAgICAgICAgICAgc2NyaXB0VHJhbnNmb3JtLT5pbml0aWFsaXpl
QmFja2VuZEZvclNlbmRlcigqbV9iYWNrZW5kKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCi12
b2lkIFJUQ1J0cFRyYW5zZm9ybTo6ZGV0YWNoRnJvbVJlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJikK
K3ZvaWQgUlRDUnRwVHJhbnNmb3JtOjpjbGVhckJhY2tlbmQoKQogewogICAgIGlmICghbV9iYWNr
ZW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICB3aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQp
OworICAgIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0oUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAgICAgICBzZnJhbWVUcmFuc2Zvcm0tPndpbGxD
bGVhckJhY2tlbmQoKm1fYmFja2VuZCk7CisgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRU
cmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgc2NyaXB0VHJhbnNmb3JtLT53
aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOworICAgIH0pOworCiAgICAgbV9iYWNrZW5kID0g
bnVsbHB0cjsKIH0KIAordm9pZCBSVENSdHBUcmFuc2Zvcm06OmRldGFjaEZyb21SZWNlaXZlcihS
VENSdHBSZWNlaXZlciYpCit7CisgICAgY2xlYXJCYWNrZW5kKCk7Cit9CisKIHZvaWQgUlRDUnRw
VHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpCiB7Ci0gICAgaWYgKCFt
X2JhY2tlbmQpCi0gICAgICAgIHJldHVybjsKKyAgICBjbGVhckJhY2tlbmQoKTsKK30KIAotICAg
IHdpbGxDbGVhckJhY2tlbmQoKm1fYmFja2VuZCk7Ci0gICAgbV9iYWNrZW5kID0gbnVsbHB0cjsK
K2Jvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGEsIGNvbnN0IFJUQ1J0cFRy
YW5zZm9ybSYgYikKK3sKKyAgICByZXR1cm4gc3dpdGNoT24oYS5tX3RyYW5zZm9ybSwgWyZdKGNv
bnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1BKSB7Cisg
ICAgICAgIHJldHVybiBzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUIpIHsKKyAgICAgICAgICAgIHJl
dHVybiBzZnJhbWVUcmFuc2Zvcm1BLmdldCgpID09IHNmcmFtZVRyYW5zZm9ybUIuZ2V0KCk7Cisg
ICAgICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYpIHsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgfSwgWyZdKGNvbnN0IFJl
ZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm1BKSB7CisgICAgICAg
IHJldHVybiBzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybT4mKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0s
IFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3Jt
QikgeworICAgICAgICAgICAgcmV0dXJuIHNjcmlwdFRyYW5zZm9ybUEuZ2V0KCkgPT0gc2NyaXB0
VHJhbnNmb3JtQi5nZXQoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5oCmluZGV4IGRiN2ZkODQyN2Y1ODBjODY4YWFlYzQzZTA2N2EzOGY5
MDczY2ZlMGIuLjYxYjkxZWFjZTg2OGNkN2FjNzRjYzQ0YzM5MmI5NWZjMGEyOWJlYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3Jt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zv
cm0uaApAQCAtMjcsMTggKzI3LDIyIEBACiAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAorI2luY2x1
ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybS5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSVENSdHBSZWNlaXZlcjsKIGNsYXNzIFJUQ1J0cFNlbmRlcjsKIAot
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgUlRDUnRwVHJhbnNmb3JtIDogcHVibGljIFJlZkNvdW50ZWQ8
UlRDUnRwVHJhbnNmb3JtPiB7CitjbGFzcyBSVENSdHBUcmFuc2Zvcm0gIHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5SVENSdHBUcmFuc2Zvcm0oKTsKKyAgICB1c2luZyBJbnRlcm5hbCA9IFZhcmlh
bnQ8UmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4sIFJlZlB0cjxSVENSdHBTY3JpcHRUcmFu
c2Zvcm0+PjsKKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtPiBmcm9tKE9wdGlv
bmFsPEludGVybmFsPiYmKTsKKworICAgIGV4cGxpY2l0IFJUQ1J0cFRyYW5zZm9ybShJbnRlcm5h
bCYmKTsKKyAgICB+UlRDUnRwVHJhbnNmb3JtKCk7CiAKICAgICBib29sIGlzQXR0YWNoZWQoKSBj
b25zdDsKICAgICB2b2lkIGF0dGFjaFRvUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImKTsKQEAgLTQ2
LDMwICs1MCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hGcm9tUmVjZWl2ZXIoUlRDUnRw
UmVjZWl2ZXImKTsKICAgICB2b2lkIGRldGFjaEZyb21TZW5kZXIoUlRDUnRwU2VuZGVyJik7CiAK
KyAgICBJbnRlcm5hbCBpbnRlcm5hbFRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9
CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYsIGNv
bnN0IFJUQ1J0cFRyYW5zZm9ybSYpOworCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7Ci0gICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZCYpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQmKTsKKyAgICB2b2lkIGNsZWFyQmFja2VuZCgpOwogCi1wcm90ZWN0ZWQ6CiAgICAg
UmVmUHRyPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBJbnRlcm5hbCBt
X3RyYW5zZm9ybTsKIH07CiAKLWlubGluZSBib29sIFJUQ1J0cFRyYW5zZm9ybTo6aXNBdHRhY2hl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEhbV9iYWNrZW5kOwotfQotCi1pbmxpbmUgdm9pZCBS
VENSdHBUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQmKQotewotfQotCi1pbmxpbmUgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmluaXRpYWxp
emVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpCi17Ci19Ci0KLWlu
bGluZSB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJikKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mLCBjb25z
dCBSVENSdHBUcmFuc2Zvcm0mKTsKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUlRDUnRw
VHJhbnNmb3JtJiBhLCBjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGIpCiB7CisgICAgcmV0dXJuICEo
YSA9PSBiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaWRsCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTZlMzI4MTJiYzQzZmYxZTNmNWZhYjEwNTE2NjZlNGVj
NDMzNWE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKLSAgICBFbmFibGVk
QnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLAotICAgIEV4cG9ydE1hY3JvPVdFQkNP
UkVfRVhQT1JULAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBSVENSdHBUcmFuc2Zv
cm0gewotICAgIC8vIEZJWE1FOiBBZGQgcmVhZGFibGUvd3JpdGFibGUgZ2V0dGVycwotICAgIC8v
IHJlYWRvbmx5IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbSByZWFkYWJsZTsKLSAgICAvLyByZWFk
b25seSBhdHRyaWJ1dGUgV3JpdGFibGVTdHJlYW0gd3JpdGFibGU7Ci19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQuaAppbmRleCA0MTIxNDkyMjAxYWU2NDYzNWI4ODI5MzU0NTVlNWI4ZjM3M2JiY2E5Li5h
YTkyMmQzMjc5Mzc0NGFhOWNlODk5MzI2MTJmODZkY2I1NGM1OWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbgogcHVibGlj
OgogICAgIHZpcnR1YWwgflJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKLSAg
ICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
JiYpPjsKKyAgICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVmPFJUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZT4mJik+OwogICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1h
YmxlRnJhbWVDYWxsYmFjayhDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NUcmFuc2Zvcm1lZEZyYW1lKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSYmKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9y
bWFibGVGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWUuaAppbmRleCA1NzI2MzYwMDdlZmMyNzZjMzk1OGMyZTcyYzM5YTIx
M2M5YWY5OTkwLi5kYjViMWYxMWNmMTM4YmIwMzY4YmYxNzc0OGEzMTNjODI4M2IzMTc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9y
bWFibGVGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWUoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
VHJhbnNmb3JtQmFja2VuZC5jcHAKaW5kZXggMDE2MmQzMGQxZmRkMzAyYTNiNWMzZWRiMzhkY2Ni
OWVlZTEzMzEwNC4uMWU1NTk1NTU0MThmODE3ZGNiOGQ0MGZmOWQzZGY3YjUyYmM3M2ZlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHAK
QEAgLTI4LDEyICsyOCwxMiBAQAogI2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRD
KQogCiAjaW5jbHVkZSAiTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTGliV2Vi
UlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6c2V0SW5wdXRDYWxsYmFjayhDYWxsYmFjayYmIGNhbGxi
YWNrKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2lucHV0Q2FsbGJhY2tMb2NrKTsKICAgICBtX2lucHV0Q2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBMaWJXZWJSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kOjpUcmFuc2Zvcm0oc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VHJhbnNmb3Jt
YWIKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbnB1dENhbGxiYWNr
TG9jayk7CiAgICAgICAgIGlmIChtX2lucHV0Q2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1faW5w
dXRDYWxsYmFjayhMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUoV1RGTW92ZShydGNGcmFt
ZSkpKTsKKyAgICAgICAgICAgIG1faW5wdXRDYWxsYmFjayhtYWtlVW5pcXVlUmVmPExpYldlYlJU
Q1J0cFRyYW5zZm9ybWFibGVGcmFtZT4oV1RGTW92ZShydGNGcmFtZSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWZhNTVkOTQ1YzVl
NzM5NjA3ZTA1MGI0N2ExZWU5YWViNTJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5oCkBAIC0wLDAgKzEsNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Qcm9taXNl
RGVmZXJyZWQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7Cit9CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV3JpdGFibGVTdHJlYW1TaW5rIDogcHVibGlj
IFJlZkNvdW50ZWQ8V3JpdGFibGVTdHJlYW1TaW5rPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
V3JpdGFibGVTdHJlYW1TaW5rKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIHdyaXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUsIERPTVByb21pc2VEZWZlcnJl
ZDx2b2lkPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBlcnJvcihTdHJpbmcmJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3Ry
ZWFtU2luay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW1TaW5rLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iM2YwNjAwOTRiOGVjZWQ3Yzk2ODllMTVkYmNiNDdkZjNh
NjgzZjAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1dyaXRhYmxlU3RyZWFtU2luay5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKwor
WworICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAorICAgIFNraXBWVGFibGVWYWxpZGF0aW9u
CitdIGludGVyZmFjZSBXcml0YWJsZVN0cmVhbVNpbmsgeworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBQcm9taXNlPHVuZGVmaW5lZD4gd3JpdGUoYW55IHZhbHVlKTsKKyAg
ICB1bmRlZmluZWQgY2xvc2UoKTsKKyAgICB1bmRlZmluZWQgZXJyb3IoRE9NU3RyaW5nIG1lc3Nh
Z2UpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNWRmOGQ1YWI0YTAwYjdiMTJhYzRmMGU0NDQ4NWNl
NDZkMjc0OTAwOS4uYjBmODkwODk3MzI1NGY1NDExMzlmMjQ5ZTk4MWQyYTgyNTg4ZWQ5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKQEAgLTE1OCw2ICsxNTgsOSBAQCBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQu
Y3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkQXVkaW9GcmFtZS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEZyYW1l
LmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5jcHAKIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENJY2VUcmFuc3BvcnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcApAQCAtMTY1LDYgKzE2OCw4IEBAIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb25JY2VFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3Bw
CiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwCitNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5j
cHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHAKQEAgLTYyMiw2ICs2MjcsNyBAQCBiaW5kaW5n
cy9qcy9XZWJDb3JlSklUT3BlcmF0aW9ucy5jcHAKIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVu
dERhdGEuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiBi
aW5kaW5ncy9qcy9XaW5kb3dQcm94eS5jcHAKK2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNw
cAogYnJpZGdlL0lkZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNvYmplY3QuY3BwCiBicmlk
Z2UvYy9DUnVudGltZU9iamVjdC5jcHAKQEAgLTMyOTUsNiArMzMwMSw4IEBAIEpTUlRDRGF0YUNo
YW5uZWwuY3BwCiBKU1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCiBKU1JUQ0RlZ3JhZGF0aW9uUHJl
ZmVyZW5jZS5jcHAKIEpTUlRDRHR4U3RhdHVzLmNwcAorSlNSVENFbmNvZGVkQXVkaW9GcmFtZS5j
cHAKK0pTUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCiBKU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKIEpT
UlRDSWNlQ2FuZGlkYXRlSW5pdC5jcHAKIEpTUlRDSWNlQ2FuZGlkYXRlVHlwZS5jcHAKQEAgLTMz
MjMsMTIgKzMzMzEsMTQgQEAgSlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBSZWNlaXZl
ci5jcHAKIEpTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
LmNwcAorSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCitKU1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmNwcAorSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmNwcAogSlNSVENS
dHBTZW5kUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNwcAogSlNSVENSdHBTeW5jaHJv
bml6YXRpb25Tb3VyY2UuY3BwCiBKU1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAogSlNSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbi5jcHAKLUpTUlRDUnRwVHJhbnNmb3JtLmNwcAogSlNSVENTZHBUeXBl
LmNwcAogSlNSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwCiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlv
bkluaXQuY3BwCkBAIC0zNzIxLDYgKzM3MzEsNyBAQCBKU1dvcmtsZXRPcHRpb25zLmNwcAogSlNX
cml0YWJsZVN0cmVhbS5jcHAKIEpTV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAK
IEpTV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmNwcAorSlNXcml0YWJsZVN0cmVhbVNpbmsu
Y3BwCiBKU1hNTERvY3VtZW50LmNwcAogSlNYTUxIdHRwUmVxdWVzdC5jcHAKIEpTWE1MSHR0cFJl
cXVlc3RFdmVudFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMDQxNDhjYThmMjhmMWQyOWMwYzI2YjJlNWVkMTY0
MjAzYmMzNmIyLi4zNGMyMTI3NjQzMGRhZjMwOGI3ZTQ0NDAyNWUyZDI2MTYxZmY5OGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMTA1LDkgKzExMDUsNiBAQAogCQk0MTgxQzVDQjI1NTU4MkU0MDBBRUIwRkYgLyogUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTgxQzVDQTI1NTU4MkUzMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtYWJs
ZUZyYW1lLmggKi87IH07CiAJCTQxODFDNUNEMjU1NTgzNjkwMEFFQjBGRiAvKiBMaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxODFDNUNDMjU1NTgzNjgwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFu
c2Zvcm1hYmxlRnJhbWUuaCAqLzsgfTsKIAkJNDE4MUM1RDEyNTU1ODk1NjAwQUVCMEZGIC8qIExp
YldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNUNGMjU1NTg5NTYwMEFFQjBGRiAvKiBMaWJXZWJSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kLmggKi87IH07Ci0JCTQxODFDNUQ2MjU1NUMxQjkwMEFFQjBGRiAv
KiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTgxQzVENTI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5z
Zm9ybS5oICovOyB9OwotCQk0MTgxQzVENzI1NTVDNDlBMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRy
YW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTgxQzVEMzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87
IH07Ci0JCTQxODFDNjM5MjU1QUU5MEYwMEFFQjBGRiAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNF
OTIxQzFGODU1NTAwNjFEQkU0IC8qIEpTTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87IH07CiAJ
CTQxODFDNjQ4MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2NDIyNTVC
NEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4MUM2NEEyNTVCNEMyODAwQUVC
MEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5oICovOyB9OwogCQk0MTgyMDU0NzFFNTNFOThDMDBENjIyMDcgLyogUlRD
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4MjA1NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzU3Myw3ICs3NTcwLDYg
QEAKIAkJNDEzQzJDMzMxQkMyOUE3QjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db25zdHJ1Y3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIyNDI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRw
UmVjZWl2ZXIrVHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiUlRDUnRwUmVj
ZWl2ZXIrVHJhbnNmb3JtLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0M4
QjI2MjU1MkVFQTkwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSAiUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MTNDOEIyOTI1NTJGMDEzMDBFNjUwNTUgLyogUlRDUnRwVHJh
bnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBUcmFuc2Zvcm0uaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIyRTI1NTJGMjdCMDBFNjUwNTUgLyog
UlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxM0M4QjJGMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwVHJhbnNmb3JtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0M4QjMwMjU1MkYyN0MwMEU2NTA1NSAvKiBSVENSdHBS
ZWNlaXZlcldpdGhUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03NTgyLDYgKzc1NzgsMjcgQEAKIAkJNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1l
bW9yeVJlbGVhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UmVs
ZWFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3QjFEQjBFNzA3MDAy
MzQxRDIgLyogTWVtb3J5UmVsZWFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVtb3J5UmVsZWFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTNGQzRDRDFGRDFERDhDMDA1NDFDNEIgLyogU2VydmljZVdvcmtlckNsaWVu
dFF1ZXJ5T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxNDE4OUVGMjU2MkRGMEMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRl
ci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlk
ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGMDI1NjJERjU1MDAz
NjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTQxODlGMTI1NjJERjU2MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjIyNTYyRTMyQjAwMzYzNDE3IC8qIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0
MTg5RjMyNTYyRTMyQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjQyNTYyRTMyQzAwMzYz
NDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTQxODlGNTI1NjJFMzJEMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjYyNTYy
RTY3QTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGNzI1NjJFNjdB
MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY5MjU2NDE2NTAwMDM2MzQxNyAv
KiBSVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDRW5j
b2RlZEF1ZGlvRnJhbWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlG
QTI1NjQxNjUxMDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0MTg5RkIyNTY0MTc1NzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0Zy
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZWRBdWRpb0Zy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUZEMjU2NDE3NjYwMDM2
MzQxNyAvKiBSVENFbmNvZGVkVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSVENFbmNvZGVkVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTQxODlGRTI1NjQxOEUwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDRW5jb2RlZEF1ZGlvRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGRjI1NjQxOEU3MDAz
NjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTQxOEEwMDI1NjQzNTk3MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1T
aW5rLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbVNpbmsuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwMjI1NjQzNTk4MDAzNjM0MTcgLyog
V3JpdGFibGVTdHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdy
aXRhYmxlU3RyZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEw
MzI1NjQzRTEyMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8qIFJU
Q0VuY29kZWRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
VENFbmNvZGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEw
NjI1NjY2MEIwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTQ0NjBBMDI0MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JZGVudGlm
aWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDU5OEJFMjNDOEFBQjgwMDJC
OUNDOCAvKiBTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxNDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFNh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzY5Nyw5ICs3NzE0LDYgQEAKIAkJNDE4MUM1Q0MyNTU1ODM2ODAwQUVCMEZGIC8qIExpYldlYlJU
Q1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDE4MUM1Q0UyNTU1ODk1NTAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUnRw
VHJhbnNmb3JtQmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNm
b3JtQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUNGMjU1
NTg5NTYwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaDsg
cGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxODFDNUQzMjU1NUMxQjEwMEFFQjBGRiAvKiBNb2NrUlRD
UnRwVHJhbnNmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
Y2tSVENSdHBUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTgx
QzVENTI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTQxODFDNjM2MjU1QUUyNjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRw
VHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxODFDNjQxMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNjQy
MjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTcwMzAsNiArMTcwNDQsMTQgQEAKIAkJCQkwNzIyMUI2
RTE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgKi8sCiAJCQkJ
NDFGQ0I3NUUyMTQ4NjZGRjAwMzhBREM2IC8qIFJUQ0R0eFN0YXR1cy5oICovLAogCQkJCTQxRkNC
NzU3MjE0ODY1RDEwMDM4QURDNiAvKiBSVENEdHhTdGF0dXMuaWRsICovLAorCQkJCTQxNDE4OUZF
MjU2NDE4RTAwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAgKi8sCisJCQkJNDE0
MTg5RkIyNTY0MTc1NzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmggKi8sCisJCQkJ
NDE0MTg5RjkyNTY0MTY1MDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbCAqLywK
KwkJCQk0MTQxOEEwNTI1NjY2MEFGMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmNwcCAqLywK
KwkJCQk0MTQxOEEwNjI1NjY2MEIwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8sCisJ
CQkJNDE0MTg5RkYyNTY0MThFNzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAq
LywKKwkJCQk0MTQxODlGRDI1NjQxNzY2MDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUu
aCAqLywKKwkJCQk0MTQxODlGQTI1NjQxNjUxMDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaWRsICovLAogCQkJCTA3MjIxQjcxMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRh
dGUuY3BwICovLAogCQkJCTA3MjIxQjcyMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRh
dGUuaCAqLywKIAkJCQkwNzIyMUI3MzE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRl
LmlkbCAqLywKQEAgLTE3MDkwLDYgKzE3MTEyLDE1IEBACiAJCQkJNDEzQzhCMzAyNTUyRjI3QzAw
RTY1MDU1IC8qIFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oICovLAogCQkJCTQxRkNCNzYw
MjE0ODY3MDAwMDM4QURDNiAvKiBSVENSdHBSdHhQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDFGQ0I3
NTgyMTQ4NjVEMjAwMzhBREM2IC8qIFJUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsICovLAorCQkJCTQx
NDE4OUY0MjU2MkUzMkMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwICovLAor
CQkJCTQxNDE4OUYyMjU2MkUzMkIwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCAq
LywKKwkJCQk0MTQxODlGMDI1NjJERjU1MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
LmlkbCAqLywKKwkJCQk0MTQxODlGMzI1NjJFMzJDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIuY3BwICovLAorCQkJCTQxNDE4OUY1MjU2MkUzMkQwMDM2MzQxNyAvKiBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lci5oICovLAorCQkJCTQxNDE4OUYxMjU2MkRGNTYwMDM2MzQxNyAvKiBS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwgKi8sCisJCQkJNDE0MTg5RjYyNTYyRTY3QTAwMzYz
NDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCAqLywKKwkJCQk0MTQx
ODlGNzI1NjJFNjdBMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rv
ci5pZGwgKi8sCisJCQkJNDE0MTg5RUYyNTYyREYwQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybVByb3ZpZGVyLmlkbCAqLywKIAkJCQk0MTNDOEIyNjI1NTJFRUE5MDBFNjUwNTUgLyog
UlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwgKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFF
MkJDIC8qIFJUQ1J0cFNlbmRlci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJD
IC8qIFJUQ1J0cFNlbmRlci5oICovLApAQCAtMTcxMTMsNyArMTcxNDQsNiBAQAogCQkJCTMxNkRD
QjE3MUU3OEMzMzAwMDFCNUY4NyAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5pZGwgKi8s
CiAJCQkJNDE4MUM1QzYyNTU1NzM1MTAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybS5jcHAgKi8s
CiAJCQkJNDEzQzhCMkYyNTUyRjI3QjAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oICovLAot
CQkJCTQxM0M4QjI5MjU1MkYwMTMwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaWRsICovLAog
CQkJCTQxODFDNUNBMjU1NTgyRTMwMEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUu
aCAqLywKIAkJCQk0MTgxQzVDODI1NTU3M0RGMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZC5oICovLAogCQkJCTQxMEY1NjU4MjRGQ0Y4NTQwMEEyRTUwQyAvKiBSVENTZHBUeXBlLmlk
bCAqLywKQEAgLTE5MjY4LDkgKzE5Mjk4LDYgQEAKIAkJCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERF
N0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMTQwNjE4OTFFMkVDQTBBMDAzMkIz
NEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUExNDA2MThBMUUyRUNB
MEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oICovLAotCQkJCTQxODFDNUQz
MjU1NUMxQjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCAqLywKLQkJCQk0MTgx
QzVENTI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovLAotCQkJCTQx
ODFDNjM2MjU1QUUyNjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmlkbCAqLywKIAkJ
CQk1NzE1NjEwODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oICovLAogCQkJCTU3MTU2MTBEMjM0Qzc0ODEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbCAqLywKIAkJCQk0MTdGMEQ4MDFGRkVFMTRGMDA4
RUYzMDMgLyogU2VydmljZVdvcmtlckludGVybmFscy5jcHAgKi8sCkBAIC0xOTM4Nyw2ICsxOTQx
NCw4IEBACiAJCQkJNDE3NjY3MzAyNERDMDhFQTAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVm
YXVsdFdyaXRlci5pZGwgKi8sCiAJCQkJNDE3NjY3MzIyNERDMDhFQjAwOEJGRTI4IC8qIFdyaXRh
YmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcyAqLywKIAkJCQk5OTA4QjBGMTFCQ0FDRjkxMDBFRDBG
NzUgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgKi8sCisJCQkJNDE0MThBMDIyNTY0MzU5
ODAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtU2luay5oICovLAorCQkJCTQxNDE4QTAwMjU2NDM1
OTcwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbVNpbmsuaWRsICovLAogCQkJKTsKIAkJCXBhdGgg
PSBzdHJlYW1zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2ODE5LDYgKzI2ODQ4
LDggQEAKIAkJCQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyLmggKi8sCiAJCQkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1By
b3h5LmNwcCAqLywKIAkJCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHku
aCAqLywKKwkJCQk0MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3Bw
ICovLAorCQkJCTQxNDE4QTA0MjU2NDNFMTMwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbS5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0z
MzQ4MSw3ICszMzUxMiw2IEBACiAJCQkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0VFNzZFQzFC
RTk2REIwMDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZU1hYy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE4MUM1RDYyNTU1QzFCOTAwQUVCMEZGIC8qIE1v
Y2tSVENSdHBUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcw
MEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTcxLDcgKzM1NjAxLDYgQEAKIAkJCQlB
MTA0RUM1RDIyMEEzRTRCMDBDQkY2N0EgLyogSlNNb2NrUGF5bWVudENvbnRhY3RGaWVsZHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0NkQzMUExRjk5QkNGODAwRDI5MTk2IC8qIEpTTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJCODVCODIxNTlCM0E0
MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQx
ODFDNjM5MjU1QUU5MEYwMEFFQjBGRiAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTcxNTYxMTQyMzRDN0ZENjAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MjdEQTcxRDEz
NzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTM1NTg3LDcgKzM1NjE2LDYgQEAKIAkJCQkyRDk3RjA0NzE5
REQ0MTNDMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDA2MThCMUUyRUNBMEEwMDMyQjM0RSAvKiBNb2Nr
UHJldmlld0xvYWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTgxQzVENzI1NTVD
NDlBMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBQTVGM0I4RjE2Q0M0QjM5MDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3RjBEODIxRkZFRTk3OTAwOEVGMzAzIC8qIFNl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFENDFDNjcyMjU2
ODc0RjAwNjk3OTQyIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKaW5kZXggMWUxNjhiN2RkYWJmNDBlODkxZjZkZDU3
YmMwMzMwMGE5ZjBlYzgzZS4uMDg5YjJiMDNkNjVkN2ZkNGMzN2Y1NWJjZDFhMzRjZTEzZDQ5Yjhi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKQEAgLTg5LDYgKzg5LDIyIEBAIHZvaWQg
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZXJyb3IoY29uc3QgRXhjZXB0aW9uJiBl
eGNlcHRpb24pCiAgICAgaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0
aW9uKGdsb2JhbE9iamVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKIH0KIAorYm9vbCBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKEpTQzo6SlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gdGhp
cy0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKCZqc0NvbnRyb2xs
ZXIoKSk7CisgICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisKKyAgICBhdXRvKiBjbGllbnRE
YXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCkuY2xpZW50RGF0YSk7CisgICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXJFbnF1ZXVlUHJpdmF0ZU5hbWUoKTsKKworICAgIHJldHVy
biBpbnZva2VSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0KCksIHByaXZhdGVOYW1lLCBhcmd1bWVudHMpOworfQorCiBib29sIFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXI6OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyKQogewogICAgIGlmICghYnVmZmVyKSB7CkBAIC0xMDksMTQgKzEyNSw3IEBAIGJvb2wgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBKU0M6
Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKCZq
c0NvbnRyb2xsZXIoKSk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7Ci0KLSAgICBhdXRv
KiBjbGllbnREYXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFs
T2JqZWN0LnZtKCkuY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnRE
YXRhLT5idWlsdGluRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygp
LnJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJFbnF1ZXVlUHJpdmF0ZU5hbWUoKTsKLQot
ICAgIHJldHVybiBpbnZva2VSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24o
Z2xvYmFsT2JqZWN0KCksIHByaXZhdGVOYW1lLCBhcmd1bWVudHMpOworICAgIHJldHVybiBlbnF1
ZXVlKHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5oCmluZGV4IDZkMTIzNDM0MjQ1YzRhZjc2MDhiMGQ4YzBmZjE5YmVhMzk5MTY5ZGQuLjg4
NGMwYTlhYzc3M2M5MzUzYTM0ZDBkNzZkODAyODMwYmNiYTExYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250
cm9sbGVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
KiBjb250cm9sbGVyKSA6IG1fanNDb250cm9sbGVyKGNvbnRyb2xsZXIpIHsgfQogCiAgICAgYm9v
bCBlbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmKTsKKyAgICBib29sIGVucXVldWUo
SlNDOjpKU1ZhbHVlKTsKICAgICB2b2lkIGVycm9yKGNvbnN0IEV4Y2VwdGlvbiYpOwogICAgIHZv
aWQgY2xvc2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oCmluZGV4IDE0ZDZkZjQ3MjE4MjFjZTU5MTJmMTU4ZWM0MTAwMzI5ZjM2YmUw
MzAuLjBmNzQ3Y2RmMWViZGRkNjlkNDNkODFhYzkyYzQ3NDU2YjdhMzQ3ZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTIyMCw2
ICsyMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rp
b25JY2VFdmVudCkgXAogICAgIG1hY3JvKFJUQ1J0cFJlY2VpdmVyKSBcCiAgICAgbWFjcm8oUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtKSBcCisgICAgbWFjcm8oUlRDUnRwU2NyaXB0VHJhbnNmb3JtKSBc
CiAgICAgbWFjcm8oUlRDUnRwU2VuZGVyKSBcCiAgICAgbWFjcm8oUlRDUnRwVHJhbnNjZWl2ZXIp
IFwKICAgICBtYWNybyhSVENSdHBUcmFuc2Zvcm0pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mjk2OWJkZTE1ZjM5NzY4YWQz
NDZlNzdlOGNjZDUzNjBiNGY0NzViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV3JpdGFibGVTdHJlYW0uaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5j
ZXMuaCIKKyNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtU2luay5oIgorI2luY2x1ZGUgIldlYkNv
cmVKU0NsaWVudERhdGEuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCitFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBXcml0YWJsZVN0cmVh
bTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZlB0
cjxXcml0YWJsZVN0cmVhbVNpbms+JiYgc2luaykKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xv
YmFsT2JqZWN0LnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8qIGNv
bnN0cnVjdG9yID0gSlNDOjphc09iamVjdChnbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLldyaXRhYmxlU3RyZWFtUHJpdmF0ZU5h
bWUoKSkpOworCisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwg
Y29uc3RydWN0b3IpOworICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgIT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdz
LmFwcGVuZChzaW5rID8gdG9KU05ld2x5Q3JlYXRlZCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmds
b2JhbE9iamVjdCwgc2luay5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNVbmRlZmluZWQoKSk7
CisgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gSlNDOjpjb25zdHJ1Y3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3REYXRhLCBhcmdzKTsKKyAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAh
b2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yIH0pOworCisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3Qs
ICpqc0Nhc3Q8SlNXcml0YWJsZVN0cmVhbSo+KG9iamVjdCkpOworfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWRiODA1ODlj
MDJmMDZmMWQ4NDQ0NTE5YjM2M2MwZGFlZWZiNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5o
IgorI2luY2x1ZGUgIkpTV3JpdGFibGVTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBXcml0YWJsZVN0cmVhbVNpbms7CisKK2NsYXNzIFdyaXRhYmxlU3RyZWFtIGZpbmFs
IDogcHVibGljIERPTUd1YXJkZWQ8SlNXcml0YWJsZVN0cmVhbT4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8V3JpdGFibGVTdHJlYW0+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LCBKU1dyaXRhYmxlU3RyZWFtJiBqc1N0cmVhbSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXcml0YWJsZVN0cmVhbShnbG9iYWxPYmplY3QsIGpzU3RyZWFtKSk7IH0KKworICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9i
amVjdCYsIFJlZlB0cjxXcml0YWJsZVN0cmVhbVNpbms+JiYpOworICAgIEpTV3JpdGFibGVTdHJl
YW0qIHdyaXRhYmxlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gZ3VhcmRlZCgpOyB9CisKK3ByaXZh
dGU6CisgICAgV3JpdGFibGVTdHJlYW0oSlNET01HbG9iYWxPYmplY3QmLCBKU1dyaXRhYmxlU3Ry
ZWFtJik7Cit9OworCitzdHJ1Y3QgSlNXcml0YWJsZVN0cmVhbVdyYXBwZXJDb252ZXJ0ZXIgewor
ICAgIHN0YXRpYyBSZWZQdHI8V3JpdGFibGVTdHJlYW0+IHRvV3JhcHBlZChKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgewor
ICAgICAgICBKU0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPih2bSwgJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoIWdsb2Jh
bE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIFdy
aXRhYmxlU3RyZWFtID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTV3JpdGFibGVTdHJlYW0qPih2bSwg
dmFsdWUpOworICAgICAgICBpZiAoIVdyaXRhYmxlU3RyZWFtKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgcmV0dXJuIFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoKmdsb2Jh
bE9iamVjdCwgKldyaXRhYmxlU3RyZWFtKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8V3JpdGFibGVTdHJlYW0+IHsKKyAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBKU1dyaXRhYmxlU3RyZWFtV3JhcHBlckNvbnZlcnRlcjsKKyAgICB1
c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gUmVmUHRyPFdyaXRhYmxlU3RyZWFtPjsKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNTdGF0ZSA9IHRydWU7Cit9OworCitpbmxpbmUgV3Jp
dGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIEpTV3JpdGFibGVTdHJlYW0mIFdyaXRhYmxlU3RyZWFtKQorICAgIDogRE9NR3VhcmRlZDxK
U1dyaXRhYmxlU3RyZWFtPihnbG9iYWxPYmplY3QsIFdyaXRhYmxlU3RyZWFtKQoreworfQorCitp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBXcml0YWJsZVN0cmVhbSogc3RyZWFtKQoreworICAgIHJldHVybiBzdHJlYW0g
PyBzdHJlYW0tPndyaXRhYmxlU3RyZWFtKCkgOiBKU0M6OmpzVW5kZWZpbmVkKCk7Cit9CisKK2lu
bGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqLCBSZWY8V3JpdGFibGVTdHJlYW0+JiYgc3RyZWFtKQoreworICAg
IHJldHVybiBzdHJlYW0tPndyaXRhYmxlU3RyZWFtKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGE5ZGE5NDUyOGYxYjQwZmNiZGU4OWZhMGM1
NGUyZWRmMTk4OTg4YjIuLjFjOTI5ZDgwZGU1ZWJmZWUwNDBmYjU4MDc4Y2RjNzFlNzZjMThlNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMzgsNiArMzgs
NyBAQCBSZW1vdGVQbGF5YmFjayBjb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQK
IFJUQ0RhdGFDaGFubmVsIGNvbmRpdGlvbmFsPVdFQl9SVEMKIFJUQ0RUTUZTZW5kZXIgY29uZGl0
aW9uYWw9V0VCX1JUQwogUlRDUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9V0VCX1JUQworUlRD
UnRwU2NyaXB0VHJhbnNmb3JtIGNvbmRpdGlvbmFsPVdFQl9SVEMKIFNlcnZpY2VXb3JrZXIgY29u
ZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIKIFNlcnZpY2VXb3JrZXJDb250YWluZXIgY29uZGl0aW9u
YWw9U0VSVklDRV9XT1JLRVIKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBjb25kaXRpb25hbD1T
RVJWSUNFX1dPUktFUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUzZGZl
Nzk1MTZjMzU5YWQ4NDA3N2JmNWZlODUyZmI5MWY3ZTNlZDAuLmFkNjM3ZmY0NGY5NmYwYjU0ZTFm
MTZkODNkMTk4ZDZhMzQzMGE1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTEzOCw3ICsxMzgsNiBAQAogI2luY2x1ZGUgIk1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIk1vY2tQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIk1vY2tQYWdlT3Zl
cmxheUNsaWVudC5oIgotI2luY2x1ZGUgIk1vY2tSVENSdHBUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
ICJOYXZpZ2F0b3JCZWFjb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JNZWRpYURldmljZXMuaCIK
ICNpbmNsdWRlICJOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmgiCkBAIC0xNTc3LDExICsxNTc2LDYg
QEAgdm9pZCBJbnRlcm5hbHM6OnNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCB2YWx1ZSkKICNl
bmRpZgogfQogCi1SZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4gSW50ZXJuYWxzOjpjcmVhdGVNb2Nr
UlRDUnRwVHJhbnNmb3JtKCkKLXsKLSAgICByZXR1cm4gTW9ja1JUQ1J0cFRyYW5zZm9ybTo6Y3Jl
YXRlKCk7Ci19Ci0KIHVpbnQ2NF90IEludGVybmFsczo6c2ZyYW1lQ291bnRlcihjb25zdCBSVENS
dHBTRnJhbWVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKICAgICByZXR1cm4gdHJhbnNmb3JtLmNv
dW50ZXJGb3JUZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBiODM3
YzNiM2EwNGQzNjAzMDU3ZGUyNzU0MDIzYWU3MjdmZWVhOTJmLi4xOGM0NWViYzM2MzBlOTRhOTdi
MDJkNjM0NDdkYWY0ZDBlZDI3ZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkhFVkNV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIk1vY2tSVENSdHBU
cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJPcmllbnRhdGlvbk5vdGlmaWVyLmgiCiAjaW5jbHVkZSAi
UGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCkBA
IC02MTAsNyArNjA5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViUlRDSDI2NVN1cHBvcnQo
Ym9vbCk7CiAgICAgdm9pZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2wpOwogICAgIHZvaWQgc2V0
V2ViUlRDVlA5VlRCU3VwcG9ydChib29sKTsKLSAgICBSZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4g
Y3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwogICAgIHVpbnQ2NF90IHNmcmFtZUNvdW50ZXIo
Y29uc3QgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtJik7CiAgICAgdm9pZCBzZXRFbmFibGVXZWJSVENF
bmNyeXB0aW9uKGJvb2wpOwogICAgIHZvaWQgc2V0VXNlRFRMUzEwKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGFlM2E2MWZjYTAzZGM0YjY2NzQ3M2QwMDVmODI4
ZTE1ZTBiOTk4M2EuLjU0M2E5NTQwZWM0YzYzNGFjYmEzZWVjNjYxOGYwMzY2MTY2MWNjNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTgwMiw3ICs4MDIsNiBAQCBlbnVt
IFRyZWVUeXBlIHsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5kZWZpbmVkIHNldFdlYlJU
Q0gyNjVTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENd
IHVuZGVmaW5lZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0Nv
bmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2xl
YW4gYWxsb3dlZCk7Ci0gICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIE1vY2tSVENSdHBUcmFuc2Zv
cm0gY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRD
XSB1bnNpZ25lZCBsb25nIGxvbmcgc2ZyYW1lQ291bnRlcihSVENSdHBTRnJhbWVUcmFuc2Zvcm0g
dHJhbnNmb3JtKTsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBz
ZXRNb2NrQXVkaW9UcmFja0NoYW5uZWxOdW1iZXIoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgdW5z
aWduZWQgc2hvcnQgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0
cFRyYW5zZm9ybS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkM2ExNmE4NGU4
ZWQ5YTI3ZDgwYzE0YWI4ZmNmODViMzAyZmJkNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJh
bnNmb3JtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIk1vY2tSVENSdHBUcmFuc2Zvcm0uaCIKLQotI2lmIEVOQUJMRShXRUJfUlRDKQotCi0j
aW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm1l
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2NrUlRDUnRwVHJhbnNmb3JtZXIsIFdU
Rjo6RGVzdHJ1Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1v
Y2tSVENSdHBUcmFuc2Zvcm1lcj4gY3JlYXRlKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYm
IGJhY2tlbmQpCi0gICAgewotICAgICAgICBhdXRvIHRyYW5zZm9ybWVyID0gYWRvcHRSZWYoKm5l
dyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIoV1RGTW92ZShiYWNrZW5kKSkpOwotICAgICAgICB0cmFu
c2Zvcm1lci0+bV9iYWNrZW5kLT5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNm
b3JtZXJdKGF1dG8mJiBmcmFtZSkgewotICAgICAgICAgICAgdHJhbnNmb3JtZXItPnRyYW5zZm9y
bShXVEZNb3ZlKGZyYW1lKSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gdHJhbnNmb3Jt
ZXI7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX2JhY2tlbmQt
PmNsZWFyVHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soKTsKLSAgICAgICAgbV9iYWNrZW5kID0g
bnVsbHB0cjsKLSAgICB9Ci0KLSAgICB2b2lkIHRyYW5zZm9ybShSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWUmJiBmcmFtZSkKLSAgICB7Ci0gICAgICAgIG1faXNQcm9jZXNzaW5nID0gdHJ1ZTsKLQot
ICAgICAgICBhdXRvIGRhdGEgPSBmcmFtZS5kYXRhKCk7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiB0cmFuc2Zvcm1lZERhdGE7Ci0gICAgICAgIHNpemVfdCBzdGFydCA9IG1faXNBdWRpbyA/IDAg
OiAxMDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgc3RhcnQ7ICsrY3B0
cikKLSAgICAgICAgICAgIHRyYW5zZm9ybWVkRGF0YS5hcHBlbmQoZGF0YS5kYXRhW2NwdHJdKTsK
LSAgICAgICAgZm9yIChzaXplX3QgY3B0ciA9IHN0YXJ0OyBjcHRyIDwgZGF0YS5zaXplOyArK2Nw
dHIpCi0gICAgICAgICAgICB0cmFuc2Zvcm1lZERhdGEuYXBwZW5kKDI1NiAtIGRhdGEuZGF0YVtj
cHRyXSk7Ci0gICAgICAgIGZyYW1lLnNldERhdGEoeyB0cmFuc2Zvcm1lZERhdGEuZGF0YSgpLCBk
YXRhLnNpemUgfSk7Ci0KLSAgICAgICAgbV9iYWNrZW5kLT5wcm9jZXNzVHJhbnNmb3JtZWRGcmFt
ZShXVEZNb3ZlKGZyYW1lKSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc1Byb2Nlc3NpbmcoKSBjb25z
dCB7IHJldHVybiBtX2lzUHJvY2Vzc2luZzsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE1v
Y2tSVENSdHBUcmFuc2Zvcm1lcihSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5k
KQotICAgICAgICA6IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQotICAgICAgICAsIG1faXNT
ZW5kZXIobV9iYWNrZW5kLT5zaWRlKCkgPT0gUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6U2lkZTo6
U2VuZGVyKQotICAgICAgICAsIG1faXNBdWRpbyhtX2JhY2tlbmQtPm1lZGlhVHlwZSgpID09IFJU
Q1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pCi0gICAgewotICAgIH0KLQot
ICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX2JhY2tlbmQ7Ci0gICAgYm9vbCBt
X2lzU2VuZGVyOwotICAgIGJvb2wgbV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1Byb2Nlc3Npbmcg
eyBmYWxzZSB9OwotfTsKLQotTW9ja1JUQ1J0cFRyYW5zZm9ybTo6TW9ja1JUQ1J0cFRyYW5zZm9y
bSgpCi17Ci19Ci0KLU1vY2tSVENSdHBUcmFuc2Zvcm06On5Nb2NrUlRDUnRwVHJhbnNmb3JtKCkK
LXsKLX0KLQotYm9vbCBNb2NrUlRDUnRwVHJhbnNmb3JtOjppc1Byb2Nlc3NpbmcoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3RyYW5zZm9ybWVyID8gbV90cmFuc2Zvcm1lci0+aXNQcm9jZXNzaW5n
KCkgOiBmYWxzZTsKLX0KLQotdm9pZCBNb2NrUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFj
a2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCi17Ci0gICAg
bV90cmFuc2Zvcm1lciA9IE1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6Y3JlYXRlKGJhY2tlbmQpOwot
fQotCi12b2lkIE1vY2tSVENSdHBUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVy
KFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCi17Ci0gICAgbV90cmFuc2Zvcm1lciA9
IE1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6Y3JlYXRlKGJhY2tlbmQpOwotfQotCi12b2lkIE1vY2tS
VENSdHBUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYp
Ci17Ci0gICAgbV90cmFuc2Zvcm1lci0+Y2xlYXIoKTsKLSAgICBtX3RyYW5zZm9ybWVyID0gbnVs
bHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdF
Ql9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFu
c2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDk5NGRmZjcxNzQzMjM1MzUxZjhmMGEzMzk2
ZmM1OWExY2FkMjkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0KLSNpbmNs
dWRlICJSVENSdHBUcmFuc2Zvcm0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBN
b2NrUlRDUnRwVHJhbnNmb3JtZXI7Ci0KLWNsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm0gZmluYWwg
OiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1vY2tS
VENSdHBUcmFuc2Zvcm0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1JUQ1J0
cFRyYW5zZm9ybSgpKTsgfQotICAgIH5Nb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0KLSAgICBib29s
IGlzUHJvY2Vzc2luZygpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIE1vY2tSVENSdHBUcmFuc2Zv
cm0oKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRl
cihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCB3aWxsQ2xlYXJCYWNr
ZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsKLQotICAgIFJlZlB0cjxNb2NrUlRD
UnRwVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBkZTYzMTg3NjA1OTRiNjlmMjdhMDFkNjVlMDg4OTgwNWYzMzc0MWMyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRp
dGlvbmFsPVdFQl9SVEMsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSlNHZW5lcmF0
ZVRvTmF0aXZlT2JqZWN0LAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZh
Y2UgTW9ja1JUQ1J0cFRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7Ci0gICAgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gaXNQcm9jZXNzaW5nOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZWYxZDhi
Y2FkYTI1YmMyNWYxNTE3ZTc4ODllMjQxYzNlNDllM2RhZS4uMTU5OWNjYzkzZTQ2MmQyMGU2OWIz
ZDkxNGE2OTA1MDczYTdhYjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTM1LDcgKzM1LDEwIEBACiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgiCisjaW5jbHVk
ZSAiSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIgorI2luY2x1ZGUgIkpTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2lu
Y2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgiCiAjaW5jbHVkZSAiUmVxdWVzdEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lmIEVO
QUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQpAQCAtMTEyLDQgKzExNSw3MiBAQCB2b2lkIERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpjYW5jZWxBbmltYXRpb25GcmFtZShDYWxsYmFja0lkIGNhbGxi
YWNrSWQpCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorRXhjZXB0aW9uT3I8dm9p
ZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnJlZ2lzdGVyUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIoU3RyaW5nJiYgbmFtZSwgUmVmPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1
Y3Rvcj4mJiB0cmFuc2Zvcm1lckNvbnN0cnVjdG9yKQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJOYW1lIGNhbm5vdCBiZSB0aGUgZW1wdHkgc3RyaW5n
Il9zIH07CisKKyAgICBpZiAobV9ydGNSdHBUcmFuc2Zvcm1lckNvbnN0cnVjdG9yTWFwLmNvbnRh
aW5zKG5hbWUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJBIHRyYW5zZm9ybWVyIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIG5hbWUiX3Mg
fTsKKworICAgIEpTQzo6SlNPYmplY3QqIGpzQ29uc3RydWN0b3IgPSB0cmFuc2Zvcm1lckNvbnN0
cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKKyAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBpZiAoIWpzQ29uc3RydWN0b3ItPmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQ2xhc3MgZGVmaW5pdGl0aW9uIHBhc3NlZCB0
byByZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCkgaXMgbm90IGEgY29uc3RydWN0b3Ii
X3MgfTsKKworICAgIGF1dG8gcHJvdG90eXBlID0ganNDb25zdHJ1Y3Rvci0+Z2V0UHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisKKyAgICBpZiAoIXByb3RvdHlwZS5p
c09iamVjdCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQ2xhc3Mg
ZGVmaW5pdGl0aW9uIHBhc3NlZCB0byByZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCkg
aGFzIGludmFsaWQgcHJvdG90eXBlIl9zIH07CisKKyAgICBtX3J0Y1J0cFRyYW5zZm9ybWVyQ29u
c3RydWN0b3JNYXAuYWRkKG5hbWUsIFdURk1vdmUodHJhbnNmb3JtZXJDb25zdHJ1Y3RvcikpOwor
CisgICAgdGhyZWFkKCkud29ya2VyT2JqZWN0UHJveHkoKS5wb3N0VGFza1RvV29ya2VyT2JqZWN0
KFtuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKV0oYXV0byYgd29ya2VyKSBtdXRhYmxlIHsKKyAg
ICAgICAgd29ya2VyLmFkZFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFdURk1vdmUobmFtZSkpOwor
ICAgIH0pOworCisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIoU3RyaW5nJiYgbmFtZSwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0KQorewor
ICAgIGF1dG8gY29uc3RydWN0b3IgPSBtX3J0Y1J0cFRyYW5zZm9ybWVyQ29uc3RydWN0b3JNYXAu
Z2V0KG5hbWUpOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CisgICAgaWYgKCFjb25zdHJ1Y3Rv
cikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBqc0NvbnN0cnVjdG9yID0g
Y29uc3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5jYWxsYmFjaygpOworICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IGNvbnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sgeyBnbG9iYWxP
YmplY3QgfTsKKworICAgIG1fcGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydCA9IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZSgqdGhpcywgV1RGTW92ZShwb3J0KSk7CisKKyAgICBKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3Qo
Z2xvYmFsT2JqZWN0LCBqc0NvbnN0cnVjdG9yLCBhcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lciIpOworICAgIEFTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigp
ID09ICFvYmplY3QpOworCisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNj
b3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGF1dG8mIGpzVHJh
bnNmb3JtZXIgPSAqSlNDOjpqc0Nhc3Q8SlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcio+KG9iamVj
dCk7CisgICAgYXV0byYgdHJhbnNmb3JtZXIgPSBqc1RyYW5zZm9ybWVyLndyYXBwZWQoKTsKKyAg
ICB0cmFuc2Zvcm1lci5zZXRDYWxsYmFjayhtYWtlVW5pcXVlPEpTQ2FsbGJhY2tEYXRhU3Ryb25n
PigmanNUcmFuc2Zvcm1lciwgZ2xvYmFsT2JqZWN0KSk7CisKKyAgICByZXR1cm4gJnRyYW5zZm9y
bWVyOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGNh
YWQ0Y2ViYTU4YmE4MzMyZDVlOWE2MDNkZTEyNjI2M2RhZWE3NTcuLjAxOGY0YWEwOTU1NGYyNzg3
MWFlNDliOGE4OWNhMmY0NTBkNGQ0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnM7CiBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ7CitjbGFzcyBKU1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyQ29uc3RydWN0b3I7CiBjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyOwogY2xhc3MgUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s7CiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKQEAgLTU0LDYgKzU2LDggQEAgY2xhc3MgV29y
a2VyQW5pbWF0aW9uQ29udHJvbGxlcjsKIHVzaW5nIENhbGxiYWNrSWQgPSBpbnQ7CiAjZW5kaWYK
IAordXNpbmcgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CisKIGNs
YXNzIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2Jh
bFNjb3BlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlKTsKIHB1YmxpYzoKQEAgLTcxLDYgKzc1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGNh
bmNlbEFuaW1hdGlvbkZyYW1lKENhbGxiYWNrSWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VC
X1JUQykKKyAgICBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+IGNyZWF0ZVJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyKFN0cmluZyYmLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0KTsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiByZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFN0cmluZyYm
LCBSZWY8SlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yPiYmKTsKKyAgICBSZWZQ
dHI8TWVzc2FnZVBvcnQ+IHRha2VQZW5kaW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0KCkgeyBy
ZXR1cm4gV1RGTW92ZShtX3BlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQpOyB9CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICB1c2luZyBCYXNlID0gV29ya2VyR2xvYmFsU2NvcGU7CiAKQEAg
LTg1LDYgKzk1LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAg
ICAgUmVmUHRyPFdvcmtlckFuaW1hdGlvbkNvbnRyb2xsZXI+IG1fd29ya2VyQW5pbWF0aW9uQ29u
dHJvbGxlcjsKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8SlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yPj4gbV9ydGNSdHBU
cmFuc2Zvcm1lckNvbnN0cnVjdG9yTWFwOworICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gbV9wZW5k
aW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuaWRsCmluZGV4IDJkMGNlODI5NTFmYmU5OTdhOGJiNThhN2Q2YjhmODNk
ZjYxNTY3NzEuLjhjZTM4NDJjMjgzNWYxNzgyMzI4MWM1NGMzNjcwMjU3ZmY1MTM0ZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaWRsCkBAIC00OCwzICs0OCw1IEBACiB9OwogCiBbQ29uZGl0aW9uYWw9T0ZGU0NSRUVOX0NB
TlZBUywgRW5hYmxlZEF0UnVudGltZT1PZmZzY3JlZW5DYW52YXNdIERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlIGluY2x1ZGVzIEFuaW1hdGlvbkZyYW1lUHJvdmlkZXI7CisvLyBGSVhNRTogRW5h
YmxlIHRoaXMgYmFzZWQgb24gV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMgc2V0dGluZy4KK1tDb25k
aXRpb25hbD1XRUJfUlRDXSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBpbmNsdWRlcyBSVENS
dHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRl
eCA4MDgzMzVkMDI3NDFmYzk4Mzk1ZDljZDI3OWViZTU5YzIzMzAwZTE0Li42MmY5MTdhMzY3ODE5
ZGVjM2NkNDEwZDk3NjY5NWNlZTYyZjZkNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3Bw
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKKyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJX
b3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCkBAIC0yMzAsNCArMjMxLDI4IEBAIHZvaWQgV29ya2Vy
OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoV0VC
X1JUQykKK3ZvaWQgV29ya2VyOjphZGRSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJiBu
YW1lKQoreworICAgIG1fdHJhbnNmb3JtZXJzLmFkZChXVEZNb3ZlKG5hbWUpKTsKK30KKwordm9p
ZCBXb3JrZXI6OmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKGNvbnN0IFN0cmluZyYgbmFt
ZSwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBSVENSdHBTY3JpcHRUcmFuc2Zvcm0mIHRy
YW5zZm9ybSkKK3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9jb250ZXh0UHJveHkucG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3Bl
KFtuYW1lID0gbmFtZS5pc29sYXRlZENvcHkoKSwgcG9ydCwgdHJhbnNmb3JtID0gbWFrZVJlZih0
cmFuc2Zvcm0pXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgdHJhbnNmb3JtLT5z
ZXRUcmFuc2Zvcm1lcihkb3duY2FzdDxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkuY3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoV1RGTW92ZShuYW1lKSwgcG9ydCkpOwor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0cmFuc2Zvcm0gPSBXVEZNb3ZlKHRyYW5zZm9ybSld
IHsgfSk7CisgICAgfSk7CisKK30KKwordm9pZCBXb3JrZXI6OnBvc3RUYXNrVG9Xb3JrZXJHbG9i
YWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQor
eworICAgIG1fY29udGV4dFByb3h5LnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShXVEZNb3Zl
KHRhc2spKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuaAppbmRleCA2N2Y0YjJiNThhYjVhZGVmZjZmY2QxY2Q5NTlkNGI2M2I5ZmY1OTVk
Li41M2Y1ZTZmZmYyN2M5ZmEzZTVjMGUwMWYwZjZjNDJjNmNiNmY5ZDBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm07CitjbGFzcyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBX
b3JrZXJHbG9iYWxTY29wZVByb3h5OwogY2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwpAQCAtNzAs
NiArNzIsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50JikgZmlu
YWw7CiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICB2b2lkIGFkZFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKFN0cmluZyYmKTsKKyAgICBib29sIGhhc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKGNv
bnN0IFN0cmluZyYgbmFtZSkgeyByZXR1cm4gbV90cmFuc2Zvcm1lcnMuY29udGFpbnMobmFtZSk7
IH0KKyAgICB2b2lkIGNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKGNvbnN0IFN0cmluZyYs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQsIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSYpOworICAgIHZv
aWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdvcmtl
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpSdW50aW1lRmxhZ3MsIGNvbnN0IE9wdGlv
bnMmKTsKIApAQCAtMTAwLDYgKzEwOSw5IEBAIHByaXZhdGU6CiAgICAgSlNDOjpSdW50aW1lRmxh
Z3MgbV9ydW50aW1lRmxhZ3M7CiAgICAgRGVxdWU8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZl
bnRzOwogICAgIGJvb2wgbV93YXNUZXJtaW5hdGVkIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VC
X1JUQykKKyAgICBIYXNoU2V0PFN0cmluZz4gbV90cmFuc2Zvcm1lcnM7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggNTZkYTEyMDdiNzc3OWYyZWE3YmFlNmFiNzM2Zjlk
MmM5NTRmNzI0NC4uNDAwMDNjM2UwMTA5OTk2MGY2NDc4NjFlNzAxNjg3ZDBlMzcxZDcyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAg
LTMzLDExICszMywxMyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsK
K2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXb3JrZXI7CiBlbnVtIGNsYXNz
IFJlZmVycmVyUG9saWN5IDogdWludDhfdDsKIApAQCAtNDksNiArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNP
bmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIEpT
Qzo6UnVudGltZUZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xv
YmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik+JiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25s
aW5lKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCmluZGV4IGE2MWI0MTQ4NjMzYmRmMjBkNTJiZTU3NjRkYTliNTU0ZTE2MTBkN2QuLjEx
ZmUwNmZjNmEzNmQ4NGNlN2MyZWFlZWYzOWVjZjYxNDk0MjM1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xMTAsMjQgKzExMCwz
OCBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbQogICAgIH0pOwogfQogCi12b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmJiBtZXNzYWdlKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRh
c2tUb1dvcmtlck9iamVjdChGdW5jdGlvbjx2b2lkKFdvcmtlciYpPiYmIGZ1bmN0aW9uKQogewot
ICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IHRo
aXMtPndvcmtlck9iamVjdCgpOworICAgICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBhc2tlZFRv
VGVybWluYXRlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZ1bmN0aW9uKCp3b3Jr
ZXJPYmplY3QpOworICAgIH0pOworfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB0YXNrKFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNjcmlwdENvbnRleHQpIG11dGFibGUgewordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYg
bWVzc2FnZSkKK3sKKyAgICBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBX
VEZNb3ZlKG1lc3NhZ2UpXShhdXRvJiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvJiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUmPihzY3JpcHRDb250ZXh0KTsKICAgICAgICAgYXV0byBwb3J0
cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1vdmUobWVz
c2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7CiAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVh
c2VOb25OdWxsKCkpKTsKICAgICAgICAgY29udGV4dC50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94
eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0Lmhhc1BlbmRpbmdBY3Rp
dml0eSgpKTsKICAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPiYmIHRhc2spCit7CisgICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKG1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgICsrbV91bmNvbmZpcm1l
ZE1lc3NhZ2VDb3VudDsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
ayhXVEZNb3ZlKHRhc2spKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoIW1fd29ya2VyVGhyZWFkKSB7
CiAgICAgICAgIG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OworICAgIG1fd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCAzYmI0ZDlkODE1YTIwOTE0
YWQ5ZjI1YjM0YTg3Y2E5MWUxYzg1YmFkLi5jNWI1NzViOWU2MTViM2YzZjU5NmJmYzNkZjY4M2M4
NzdjYzYyYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRp
bWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7CiAgICAg
dm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFs
OworICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKICAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgZmlu
YWw7CiAgICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmlu
YWw7CkBAIC02Miw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2Yg
V29ya2VyT2JqZWN0UHJveHkuCiAgICAgLy8gKE9ubHkgdXNlIHRoZXNlIGZ1bmN0aW9ucyBpbiB0
aGUgd29ya2VyIGNvbnRleHQgdGhyZWFkLikKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJP
YmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7CisgICAgdm9pZCBwb3N0VGFz
a1RvV29ya2VyT2JqZWN0KEZ1bmN0aW9uPHZvaWQoV29ya2VyJik+JiYpIGZpbmFsOwogICAgIHZv
aWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpIGZpbmFsOwogICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKICAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0
eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9iamVjdFByb3h5LmgKaW5kZXggMjgwMTMxNGUzNzJkMzBlZTlhY2JlNTRiOTg2OTlk
Y2VkZjc4ZjljYS4uOGU5MWVjNzk0NGYzMjU5YjY3ZDVlNGE1NTg1ZDg1NDRjYmNmNzI4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaApAQCAtMzIsMTQgKzMy
LDE5IEBACiAKICNpbmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUg
IldvcmtlclJlcG9ydGluZ1Byb3h5LmgiCisKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV29ya2VyOwor
CiAvLyBBIHByb3h5IHRvIHRhbGsgdG8gdGhlIHdvcmtlciBvYmplY3QuCiBjbGFzcyBXb3JrZXJP
YmplY3RQcm94eSA6IHB1YmxpYyBXb3JrZXJSZXBvcnRpbmdQcm94eSB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvV29ya2VyT2JqZWN0KEZ1
bmN0aW9uPHZvaWQoV29ya2VyJik+JiYpIHsgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb25maXJt
TWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KSA9IDA7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYjkyMmMyYjAxNzBmNmUxNTM3NTljNTRkNmI3ZTc1N2FmZmM4NDIx
Ny4uZTc1N2Q5ZTc2OTcxYjEwYmMwZmVlYWE2ODMyMzVjMWU5MzEwYzdkNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTExLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkxNDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0
Yy9yb3V0aW5lcy5qczogQWRkZWQuCisgICAgICAgIChjcmVhdGVDb25uZWN0aW9ucyk6CisgICAg
ICAgICogaHR0cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanM6IEFkZGVkLgorICAgICAg
ICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1l
ci5wcm90b3R5cGUuc3RhcnQpOgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyLnByb3Rv
dHlwZS5wcm9jZXNzKToKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9y
bS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUt
dHJhbnNmb3JtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy93ZWJydGMt
dHJhbnNmb3JtLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3dlYnJ0Yy93
ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMv
d2VicnRjLXRyYW5zZm9ybS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvd2VicnRjL3dl
YnJ0Yy10cmFuc2Zvcm0uaHRtbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanM6IEFkZGVkLgorICAg
ICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zv
cm1lci5wcm90b3R5cGUuc3RhcnQpOgorCiAyMDIwLTExLTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0RW5jb2RlclN0cmVhbUVuY29kZXIgc2hvdWxk
IG5vdCBiZSBleHBvc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
cm91dGluZXMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvcm91dGluZXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDhkYjcyZjY1ZDE3Njk2MWVhNzk3YzlkYzQ4MmJkMGI1MWVmOTNiMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAt
MCwwICsxLDI5OSBAQAorLy8gVGVzdCBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vd2VicnRjLmdpdGh1
Yi5pby9zYW1wbGVzLwordmFyIGxvY2FsQ29ubmVjdGlvbjsKK3ZhciByZW1vdGVDb25uZWN0aW9u
OworCitmdW5jdGlvbiBjcmVhdGVDb25uZWN0aW9ucyhzZXR1cExvY2FsQ29ubmVjdGlvbiwgc2V0
dXBSZW1vdGVDb25uZWN0aW9uLCBvcHRpb25zID0geyB9KSB7CisgICAgbG9jYWxDb25uZWN0aW9u
ID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcmVtb3RlQ29ubmVjdGlvbiA9IG5ldyBS
VENQZWVyQ29ubmVjdGlvbigpOworICAgIHJlbW90ZUNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUg
PSAoZXZlbnQpID0+IHsgaWNlQ2FsbGJhY2syKGV2ZW50LCBvcHRpb25zLmZpbHRlck91dElDRUNh
bmRpZGF0ZSkgfTsKKworICAgIGxvY2FsQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChldmVu
dCkgPT4geyBpY2VDYWxsYmFjazEoZXZlbnQsIG9wdGlvbnMuZmlsdGVyT3V0SUNFQ2FuZGlkYXRl
KSB9OworCisgICAgUHJvbWlzZS5yZXNvbHZlKHNldHVwTG9jYWxDb25uZWN0aW9uKGxvY2FsQ29u
bmVjdGlvbikpLnRoZW4oKCkgPT4geworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNl
dHVwUmVtb3RlQ29ubmVjdGlvbihyZW1vdGVDb25uZWN0aW9uKSk7CisgICAgfSkudGhlbigoKSA9
PiB7CisgICAgICAgIGxvY2FsQ29ubmVjdGlvbi5jcmVhdGVPZmZlcigpLnRoZW4oKGRlc2MpID0+
IGdvdERlc2NyaXB0aW9uMShkZXNjLCBvcHRpb25zKSwgb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRp
b25FcnJvcik7CisgICAgfSk7CisKKyAgICByZXR1cm4gW2xvY2FsQ29ubmVjdGlvbiwgcmVtb3Rl
Q29ubmVjdGlvbl0KK30KKworZnVuY3Rpb24gY2xvc2VDb25uZWN0aW9ucygpCit7CisgICAgbG9j
YWxDb25uZWN0aW9uLmNsb3NlKCk7CisgICAgcmVtb3RlQ29ubmVjdGlvbi5jbG9zZSgpOworfQor
CitmdW5jdGlvbiBvbkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkVycm9yKGVycm9yKQoreworICAg
IGFzc2VydF91bnJlYWNoZWQoKTsKK30KKworZnVuY3Rpb24gZ290RGVzY3JpcHRpb24xKGRlc2Ms
IG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMub2JzZXJ2ZU9mZmVyKSB7CisgICAgICAgIGNv
bnN0IHJlc3VsdCA9IG9wdGlvbnMub2JzZXJ2ZU9mZmVyKGRlc2MpOworICAgICAgICBpZiAocmVz
dWx0KQorICAgICAgICAgICAgZGVzYyA9IHJlc3VsdDsKKyAgICB9CisKKyAgICBsb2NhbENvbm5l
Y3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjKTsKKyAgICByZW1vdGVDb25uZWN0aW9uLnNl
dFJlbW90ZURlc2NyaXB0aW9uKGRlc2MpLnRoZW4oKCkgPT4geworICAgICAgICByZW1vdGVDb25u
ZWN0aW9uLmNyZWF0ZUFuc3dlcigpLnRoZW4oKGRlc2MpID0+IGdvdERlc2NyaXB0aW9uMihkZXNj
LCBvcHRpb25zKSwgb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25FcnJvcik7CisgICAgfSk7Cit9
CisKK2Z1bmN0aW9uIGdvdERlc2NyaXB0aW9uMihkZXNjLCBvcHRpb25zKQoreworICAgIGlmIChv
cHRpb25zLm9ic2VydmVBbnN3ZXIpCisgICAgICAgIG9wdGlvbnMub2JzZXJ2ZUFuc3dlcihkZXNj
KTsKKworICAgIHJlbW90ZUNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjKTsKKyAg
ICBsb2NhbENvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzYyk7Cit9CisKK2Z1bmN0
aW9uIGljZUNhbGxiYWNrMShldmVudCwgZmlsdGVyT3V0SUNFQ2FuZGlkYXRlKQoreworICAgIGlm
IChmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUgJiYgZmlsdGVyT3V0SUNFQ2FuZGlkYXRlKGV2ZW50LmNh
bmRpZGF0ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbW90ZUNvbm5lY3Rpb24uYWRkSWNl
Q2FuZGlkYXRlKGV2ZW50LmNhbmRpZGF0ZSkudGhlbihvbkFkZEljZUNhbmRpZGF0ZVN1Y2Nlc3Ms
IG9uQWRkSWNlQ2FuZGlkYXRlRXJyb3IpOworfQorCitmdW5jdGlvbiBpY2VDYWxsYmFjazIoZXZl
bnQsIGZpbHRlck91dElDRUNhbmRpZGF0ZSkKK3sKKyAgICBpZiAoZmlsdGVyT3V0SUNFQ2FuZGlk
YXRlICYmIGZpbHRlck91dElDRUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBsb2NhbENvbm5lY3Rpb24uYWRkSWNlQ2FuZGlkYXRlKGV2ZW50LmNhbmRp
ZGF0ZSkudGhlbihvbkFkZEljZUNhbmRpZGF0ZVN1Y2Nlc3MsIG9uQWRkSWNlQ2FuZGlkYXRlRXJy
b3IpOworfQorCitmdW5jdGlvbiBvbkFkZEljZUNhbmRpZGF0ZVN1Y2Nlc3MoKQoreworfQorCitm
dW5jdGlvbiBvbkFkZEljZUNhbmRpZGF0ZUVycm9yKGVycm9yKQoreworICAgIGNvbnNvbGUubG9n
KCJhZGRJY2VDYW5kaWRhdGUgZXJyb3I6ICIgKyBlcnJvcikKKyAgICBhc3NlcnRfdW5yZWFjaGVk
KCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJlbmVnb3RpYXRlKHBjMSwgcGMyKQoreworICAgIGxl
dCBkID0gYXdhaXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVz
Y3JpcHRpb24oZCk7CisgICAgYXdhaXQgcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKGQpOworICAg
IGQgPSBhd2FpdCBwYzIuY3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgcGMxLnNldFJlbW90ZURl
c2NyaXB0aW9uKGQpOworICAgIGF3YWl0IHBjMi5zZXRMb2NhbERlc2NyaXB0aW9uKGQpOworfQor
CitmdW5jdGlvbiBhbmFseXNlQXVkaW8oc3RyZWFtLCBkdXJhdGlvbiwgY29udGV4dCkKK3sKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB2YXIg
c291cmNlTm9kZSA9IGNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2Uoc3RyZWFtKTsKKwor
ICAgICAgICB2YXIgYW5hbHlzZXIgPSBjb250ZXh0LmNyZWF0ZUFuYWx5c2VyKCk7CisgICAgICAg
IHZhciBnYWluID0gY29udGV4dC5jcmVhdGVHYWluKCk7CisKKyAgICAgICAgdmFyIHJlc3VsdHMg
PSB7IGhlYXJkSHVtOiBmYWxzZSwgaGVhcmRCaXA6IGZhbHNlLCBoZWFyZEJvcDogZmFsc2UsIGhl
YXJkTm9pc2U6IGZhbHNlIH07CisKKyAgICAgICAgYW5hbHlzZXIuZmZ0U2l6ZSA9IDIwNDg7Cisg
ICAgICAgIGFuYWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCA9IDA7CisgICAgICAgIGFuYWx5
c2VyLm1pbkRlY2liZWxzID0gLTEwMDsKKyAgICAgICAgYW5hbHlzZXIubWF4RGVjaWJlbHMgPSAw
OworICAgICAgICBnYWluLmdhaW4udmFsdWUgPSAwOworCisgICAgICAgIHNvdXJjZU5vZGUuY29u
bmVjdChhbmFseXNlcik7CisgICAgICAgIGFuYWx5c2VyLmNvbm5lY3QoZ2Fpbik7CisgICAgICAg
IGdhaW4uY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKworICAgICAgIGZ1bmN0aW9uIGFu
YWx5c2UoKSB7CisgICAgICAgICAgIHZhciBmcmVxRG9tYWluID0gbmV3IFVpbnQ4QXJyYXkoYW5h
bHlzZXIuZnJlcXVlbmN5QmluQ291bnQpOworICAgICAgICAgICBhbmFseXNlci5nZXRCeXRlRnJl
cXVlbmN5RGF0YShmcmVxRG9tYWluKTsKKworICAgICAgICAgICB2YXIgaGFzRnJlcXVlbmN5ID0g
ZXhwZWN0ZWRGcmVxdWVuY3kgPT4geworICAgICAgICAgICAgICAgIHZhciBiaW4gPSBNYXRoLmZs
b29yKGV4cGVjdGVkRnJlcXVlbmN5ICogYW5hbHlzZXIuZmZ0U2l6ZSAvIGNvbnRleHQuc2FtcGxl
UmF0ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJpbiA8IGZyZXFEb21haW4ubGVuZ3RoICYm
IGZyZXFEb21haW5bYmluXSA+PSAxMDA7CisgICAgICAgICAgIH07CisKKyAgICAgICAgICAgaWYg
KCFyZXN1bHRzLmhlYXJkSHVtKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuaGVhcmRIdW0gPSBo
YXNGcmVxdWVuY3koMTUwKTsKKworICAgICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmRCaXApCisg
ICAgICAgICAgICAgICByZXN1bHRzLmhlYXJkQmlwID0gaGFzRnJlcXVlbmN5KDE1MDApOworCisg
ICAgICAgICAgIGlmICghcmVzdWx0cy5oZWFyZEJvcCkKKyAgICAgICAgICAgICAgICByZXN1bHRz
LmhlYXJkQm9wID0gaGFzRnJlcXVlbmN5KDUwMCk7CisKKyAgICAgICAgICAgaWYgKCFyZXN1bHRz
LmhlYXJkTm9pc2UpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5oZWFyZE5vaXNlID0gaGFzRnJl
cXVlbmN5KDMwMDApOworCisgICAgICAgICAgIGlmIChyZXN1bHRzLmhlYXJkSHVtICYmIHJlc3Vs
dHMuaGVhcmRCaXAgJiYgcmVzdWx0cy5oZWFyZEJvcCAmJiByZXN1bHRzLmhlYXJkTm9pc2UpCisg
ICAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9OworCisgICAgICAgZnVuY3Rpb24gZG9u
ZSgpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKyAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTsKKyAg
ICAgICB9CisKKyAgICAgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGRvbmUsIDMgKiBkdXJh
dGlvbik7CisgICAgICAgIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKGFuYWx5c2UsIGR1cmF0
aW9uIC8gMzApOworICAgICAgICBhbmFseXNlKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHdh
aXRGb3IoZHVyYXRpb24pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBz
ZXRUaW1lb3V0KHJlc29sdmUsIGR1cmF0aW9uKSk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JWaWRl
b1NpemUodmlkZW8sIHdpZHRoLCBoZWlnaHQsIGNvdW50KQoreworICAgIGlmICh2aWRlby52aWRl
b1dpZHRoID09PSB3aWR0aCAmJiB2aWRlby52aWRlb0hlaWdodCA9PT0gaGVpZ2h0KQorICAgICAg
ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCJ2aWRlbyBoYXMgZXhwZWN0ZWQgc2l6ZSIpOworCisg
ICAgaWYgKGNvdW50ID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvdW50ID0gMDsKKyAgICBpZiAo
Kytjb3VudCA+IDIwKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIndhaXRGb3JWaWRl
b1NpemUgdGltZWQgb3V0LCBleHBlY3RlZCAiICsgd2lkdGggKyAieCIrIGhlaWdodCArICIgYnV0
IGdvdCAiICsgdmlkZW8udmlkZW9XaWR0aCArICJ4IiArIHZpZGVvLnZpZGVvSGVpZ2h0KTsKKwor
ICAgIHJldHVybiB3YWl0Rm9yKDEwMCkudGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiB3YWl0
Rm9yVmlkZW9TaXplKHZpZGVvLCB3aWR0aCwgaGVpZ2h0LCBjb3VudCk7CisgICAgfSk7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIGRvSHVtQW5hbHlzaXMoc3RyZWFtLCBleHBlY3RlZCkKK3sKKyAgICB2
YXIgY29udGV4dCA9IG5ldyBBdWRpb0NvbnRleHQoKTsKKyAgICBmb3IgKHZhciBjcHRyID0gMDsg
Y3B0ciA8IDIwOyBjcHRyKyspIHsKKyAgICAgICAgdmFyIHJlc3VsdHMgPSBhd2FpdCBhbmFseXNl
QXVkaW8oc3RyZWFtLCAyMDAsIGNvbnRleHQpOworICAgICAgICBpZiAocmVzdWx0cy5oZWFyZEh1
bSA9PT0gZXhwZWN0ZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYXdhaXQg
d2FpdEZvcig1MCk7CisgICAgfQorICAgIGF3YWl0IGNvbnRleHQuY2xvc2UoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGlzVmlkZW9CbGFjayhjYW52YXMsIHZpZGVvLCBzdGFy
dFgsIHN0YXJ0WSwgZ3JhYmJlZFdpZHRoLCBncmFiYmVkSGVpZ2h0KQoreworICAgIGNhbnZhcy53
aWR0aCA9IHZpZGVvLnZpZGVvV2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IHZpZGVvLnZpZGVv
SGVpZ2h0OworICAgIGlmICghZ3JhYmJlZEhlaWdodCkgeworICAgICAgICBzdGFydFggPSAxMDsK
KyAgICAgICAgc3RhcnRZID0gMTA7CisgICAgICAgIGdyYWJiZWRXaWR0aCA9IGNhbnZhcy53aWR0
aCAtIDIwOworICAgICAgICBncmFiYmVkSGVpZ2h0ID0gY2FudmFzLmhlaWdodCAtIDIwOworICAg
IH0KKworICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRlbywgMCwgMCwg
Y2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgIGltYWdlRGF0YSA9IGNhbnZhcy5n
ZXRDb250ZXh0KCcyZCcpLmdldEltYWdlRGF0YShzdGFydFgsIHN0YXJ0WSwgZ3JhYmJlZFdpZHRo
LCBncmFiYmVkSGVpZ2h0KTsKKyAgICBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CisgICAgZm9yICh2
YXIgY3B0ciA9IDA7IGNwdHIgPCBncmFiYmVkV2lkdGggKiBncmFiYmVkSGVpZ2h0OyArK2NwdHIp
IHsKKyAgICAgICAgLy8gQXBwcm94aW1hdGl2ZWx5IGJsYWNrIHBpeGVscy4KKyAgICAgICAgaWYg
KGRhdGFbNCAqIGNwdHJdID4gMzAgfHwgZGF0YVs0ICogY3B0ciArIDFdID4gMzAgfHwgZGF0YVs0
ICogY3B0ciArIDJdID4gMzApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCithc3luYyBmdW5jdGlvbiBjaGVja1ZpZGVvQmxhY2soZXhwZWN0
ZWQsIGNhbnZhcywgdmlkZW8sIGVycm9yTWVzc2FnZSwgY291bnRlcikKK3sKKyAgICBpZiAoaXNW
aWRlb0JsYWNrKGNhbnZhcywgdmlkZW8pID09PSBleHBlY3RlZCkKKyAgICAgICAgcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpOworCisgICAgaWYgKGNvdW50ZXIgPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgY291bnRlciA9IDA7CisgICAgaWYgKGNvdW50ZXIgPiA0MDApIHsKKyAgICAgICAgaWYgKCFl
cnJvck1lc3NhZ2UpCisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiY2hlY2tWaWRlb0JsYWNr
IHRpbWVkIG91dCBleHBlY3RpbmcgIiArIGV4cGVjdGVkOworICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QoZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyAgICBhd2FpdCB3YWl0Rm9yKDUwKTsK
KyAgICByZXR1cm4gY2hlY2tWaWRlb0JsYWNrKGV4cGVjdGVkLCBjYW52YXMsIHZpZGVvLCBlcnJv
ck1lc3NhZ2UsICsrY291bnRlcik7Cit9CisKK2Z1bmN0aW9uIHNldENvZGVjKHNkcCwgY29kZWMp
Cit7CisgICAgcmV0dXJuIHNkcC5zcGxpdCgnXHJcbicpLmZpbHRlcihsaW5lID0+IHsKKyAgICAg
ICAgcmV0dXJuIGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZign
YT1ydGNwLWZiJykgPT09IC0xICYmIChsaW5lLmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xIHx8
IGxpbmUuaW5kZXhPZihjb2RlYykgIT09IC0xKTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIGdldFR5cGVkU3RhdHMoY29ubmVjdGlvbiwgdHlwZSkKK3sKKyAgICBj
b25zdCByZXBvcnQgPSBhd2FpdCBjb25uZWN0aW9uLmdldFN0YXRzKCk7CisgICAgdmFyIHN0YXRz
OworICAgIHJlcG9ydC5mb3JFYWNoKChzdGF0SXRlbSkgPT4geworICAgICAgICBpZiAoc3RhdEl0
ZW0udHlwZSA9PT0gdHlwZSkKKyAgICAgICAgICAgIHN0YXRzID0gc3RhdEl0ZW07CisgICAgfSk7
CisgICAgcmV0dXJuIHN0YXRzOworfQorCitmdW5jdGlvbiBnZXRSZWNlaXZlZFRyYWNrU3RhdHMo
Y29ubmVjdGlvbikKK3sKKyAgICByZXR1cm4gY29ubmVjdGlvbi5nZXRTdGF0cygpLnRoZW4oKHJl
cG9ydCkgPT4geworICAgICAgICB2YXIgc3RhdHM7CisgICAgICAgIHJlcG9ydC5mb3JFYWNoKChz
dGF0SXRlbSkgPT4geworICAgICAgICAgICAgaWYgKHN0YXRJdGVtLnR5cGUgPT09ICJ0cmFjayIp
IHsKKyAgICAgICAgICAgICAgICBzdGF0cyA9IHN0YXRJdGVtOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuIHN0YXRzOworICAgIH0pOworfQorCithc3luYyBmdW5j
dGlvbiBjb21wdXRlRnJhbWVSYXRlKHN0cmVhbSwgdmlkZW8pCit7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgaW50ZXJuYWxzLm9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKHN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVz
b2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTsgCisgICAgICAgIHJldHVybiBpbnRl
cm5hbHMudHJhY2tWaWRlb1NhbXBsZUNvdW50OworICAgIH0KKworICAgIGxldCBjb25uZWN0aW9u
OworICAgIHZpZGVvLnNyY09iamVjdCA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4g
eworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpWzBdLCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewor
ICAgICAgICAgICAgY29ubmVjdGlvbiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBz
ZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAg
ICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQi
KSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhd2FpdCB2aWRlby5wbGF5KCk7CisKKyAgICBjb25z
dCBzdGF0czEgPSBhd2FpdCBnZXRSZWNlaXZlZFRyYWNrU3RhdHMoY29ubmVjdGlvbik7CisgICAg
YXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTsg
CisgICAgY29uc3Qgc3RhdHMyID0gYXdhaXQgZ2V0UmVjZWl2ZWRUcmFja1N0YXRzKGNvbm5lY3Rp
b24pOworICAgIHJldHVybiAoc3RhdHMyLmZyYW1lc1JlY2VpdmVkIC0gc3RhdHMxLmZyYW1lc1Jl
Y2VpdmVkKSAqIDEwMDAgLyAoc3RhdHMyLnRpbWVzdGFtcCAtIHN0YXRzMS50aW1lc3RhbXApOwor
fQorCitmdW5jdGlvbiBzZXRIMjY0QmFzZWxpbmVDb2RlYyhzZHApCit7CisgICAgY29uc3QgbGlu
ZXMgPSBzZHAuc3BsaXQoJ1xyXG4nKTsKKyAgICBjb25zdCBoMjY0TGluZXMgPSBsaW5lcy5maWx0
ZXIobGluZSA9PiBsaW5lLmluZGV4T2YoImE9Zm10cCIpID09PSAwICYmIGxpbmUuaW5kZXhPZigi
NDJlMDFmIikgIT09IC0xKTsKKyAgICBjb25zdCBiYXNlbGluZU51bWJlciA9IGgyNjRMaW5lc1sw
XS5zdWJzdHJpbmcoNikuc3BsaXQoJyAnKVswXTsKKyAgICByZXR1cm4gbGluZXMuZmlsdGVyKGxp
bmUgPT4geworICAgICAgICByZXR1cm4gKGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09IC0xICYm
IGxpbmUuaW5kZXhPZignYT1ydGNwLWZiJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydHBt
YXAnKSA9PT0gLTEpIHx8IGxpbmUuaW5kZXhPZihiYXNlbGluZU51bWJlcikgIT09IC0xOworICAg
IH0pLmpvaW4oJ1xyXG4nKTsKK30KKworZnVuY3Rpb24gc2V0SDI2NEhpZ2hDb2RlYyhzZHApCit7
CisgICAgY29uc3QgbGluZXMgPSBzZHAuc3BsaXQoJ1xyXG4nKTsKKyAgICBjb25zdCBoMjY0TGlu
ZXMgPSBsaW5lcy5maWx0ZXIobGluZSA9PiBsaW5lLmluZGV4T2YoImE9Zm10cCIpID09PSAwICYm
IGxpbmUuaW5kZXhPZigiNjQwYzFmIikgIT09IC0xKTsKKyAgICBjb25zdCBiYXNlbGluZU51bWJl
ciA9IGgyNjRMaW5lc1swXS5zdWJzdHJpbmcoNikuc3BsaXQoJyAnKVswXTsKKyAgICByZXR1cm4g
bGluZXMuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gKGxpbmUuaW5kZXhPZignYT1m
bXRwJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydGNwLWZiJykgPT09IC0xICYmIGxpbmUu
aW5kZXhPZignYT1ydHBtYXAnKSA9PT0gLTEpIHx8IGxpbmUuaW5kZXhPZihiYXNlbGluZU51bWJl
cikgIT09IC0xOworICAgIH0pLmpvaW4oJ1xyXG4nKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVjODY1MGM5ZWJm
YmMzYmEyZWNlNTkyZmUxNjc0NGY5NDRkMWJlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCkBAIC0wLDAgKzEsMjcgQEAK
K2NsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhp
cy5wb3J0Lm9ubWVzc2FnZSA9IChldmVudCkgPT4gdGhpcy5wb3J0LnBvc3RNZXNzYWdlKGV2ZW50
LmRhdGEpOworICAgIH0KKyAgICBzdGFydChyZWFkYWJsZVN0cmVhbSwgd3JpdGFibGVTdHJlYW0p
CisgICAgeworICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJzdGFydGVkIik7CisgICAgICAgIHRo
aXMucmVhZGVyID0gcmVhZGFibGVTdHJlYW0uZ2V0UmVhZGVyKCk7CisgICAgICAgIHRoaXMud3Jp
dGVyID0gd3JpdGFibGVTdHJlYW0uZ2V0V3JpdGVyKCk7CisgICAgICAgIHRoaXMucHJvY2Vzcygp
OworICAgIH0KKworICAgIHByb2Nlc3MoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWFkZXIucmVh
ZCgpLnRoZW4oY2h1bmsgPT4geworICAgICAgICAgICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiY2h1bmsiKTsK
KyAgICAgICAgICAgIHRoaXMud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKKyAgICAgICAgICAg
IHRoaXMucHJvY2VzcygpOworICAgICAgICB9KTsKKyAgICB9Cit9OworCityZWdpc3RlclJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyKCJNb2NrUlRDUnRwVHJhbnNmb3JtIiwgTW9ja1JUQ1J0cFRyYW5z
Zm9ybWVyKTsKK3NlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMDBlODZkZGRlMjkzNWQxZjBmNWFjMDJkZDNhODdjNmEyZjc4ZGVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFu
c2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIENhbm5vdCByZXVzZSBh
dHRhY2hlZCB0cmFuc2Zvcm1zCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
c2ZyYW1lLXRyYW5zZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMDQ4ODBkMTQ1YWNmYjgxZDdlOTli
ZjExMzg0YTA4NTM1MTMzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0Pgor
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQ
ZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENS
dHBTRnJhbWVUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCBzZW5kZXIxID0gcGMuYWRkVHJhbnNjZWl2
ZXIoJ2F1ZGlvJykuc2VuZGVyOworICAgIGNvbnN0IHNlbmRlcjIgPSBwYy5hZGRUcmFuc2NlaXZl
cigndmlkZW8nKS5zZW5kZXI7CisgICAgY29uc3QgcmVjZWl2ZXIxID0gcGMuZ2V0UmVjZWl2ZXJz
KClbMF07CisgICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVjZWl2ZXJzKClbMV07CisKKyAg
ICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJh
bnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0p
OworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHJlY2Vp
dmVyMi50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybSk7CisKKyAgICBzZW5kZXIxLnRyYW5z
Zm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2
ZXJUcmFuc2Zvcm07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IG51bGw7CisgICAgcmVjZWl2
ZXIxLnRyYW5zZm9ybSA9IG51bGw7Cit9LCAiQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9y
bXMiKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNmOWQ1NmVlODVlNjBlNDcxOGRmNmQwMWMzMTMxYzExNDU0NGU1
ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRj
LXRyYW5zZm9ybS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKKworUEFTUyB0cmFuc2Zv
cm0gbWVzc2FnaW5nCitQQVNTIENhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zCitQQVNT
IGF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtCitQQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGgg
dHJhbnNmb3JtCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJy
dGMtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLXRy
YW5zZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViODc1MzA5YTAzMWJlY2QwMWY0Y2NmOGY1ZDM3MjI0
OWQ5YjdkYTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
d2VicnRjLXRyYW5zZm9ybS5odG1sCkBAIC0wLDAgKzEsMTMyIEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEi
IGF1dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8yIiBhdXRvcGxheT48
L3ZpZGVvPgorICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0
YSkKK3sKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVz
b2x2ZShldmVudC5kYXRhKSk7CisgICAgICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBj
b25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdl
ID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRh
dGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFuc2Zvcm0nKTsKKyAgICBjb25zdCBw
cm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB0cmFuc2Zvcm0ucG9ydC5vbm1lc3NhZ2Ug
PSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHRyYW5zZm9ybS5wb3J0LnBv
c3RNZXNzYWdlKCJ0ZXN0Iik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBwcm9taXNlLCAidGVz
dCIpOworfSwgInRyYW5zZm9ybSBtZXNzYWdpbmciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0
ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9ybS5qcycp
OworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5v
bm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9l
cXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKKworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJD
b25uZWN0aW9uKCk7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcmVj
ZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tS
VENSdHBUcmFuc2Zvcm0nKTsKKyAgICBjb25zdCBzZW5kZXIxID0gcGMuYWRkVHJhbnNjZWl2ZXIo
J2F1ZGlvJykuc2VuZGVyOworICAgIGNvbnN0IHNlbmRlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcign
dmlkZW8nKS5zZW5kZXI7CisgICAgY29uc3QgcmVjZWl2ZXIxID0gcGMuZ2V0UmVjZWl2ZXJzKClb
MF07CisgICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVjZWl2ZXJzKClbMV07CisKKyAgICBz
ZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNm
b3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRT
dGF0ZUVycm9yIiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0pOwor
ICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHJlY2VpdmVy
Mi50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybSk7CisKKyAgICBzZW5kZXIxLnRyYW5zZm9y
bSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJU
cmFuc2Zvcm07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IG51bGw7CisgICAgcmVjZWl2ZXIx
LnRyYW5zZm9ybSA9IG51bGw7Cit9LCAiQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdv
cmtlcignc2NyaXB0LXRyYW5zZm9ybS5qcycpOworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKKyAg
ICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzogdHJ1ZX0pOworCisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisgICAg
Y29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIs
ICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBu
ZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFuc2Zvcm0nKTsK
KworICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3Jr
ZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGNv
bnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAg
ICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25u
ZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3Ry
ZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Cisg
ICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBzZWNv
bmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRy
YWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVj
ZWl2ZXI7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFu
c2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7CisKKyAgICBhd2FpdCB3YWl0Rm9y
TWVzc2FnZSh3b3JrZXIsICJjaHVuayIpOworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVh
bTsKKyAgICBhd2FpdCB2aWRlbzEucGxheSgpOworfSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJh
bnNmb3JtIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9
IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiBy
ZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVk
Iik7CisKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOworCisgICAgbGV0IHNlbmRlciwgcmVjZWl2
ZXI7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFu
c2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFu
c2Zvcm0nKTsKKworICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsK
KworICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewor
ICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0g
Zmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0s
IGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFu
c2Zvcm07CisgICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBw
YzIgPSBzZWNvbmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRy
YWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNr
RXZlbnQucmVjZWl2ZXI7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVj
ZWl2ZXJUcmFuc2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVh
bXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQo
KCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGFz
c2VydF9lcXVhbHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7CisKKyAgICBhd2Fp
dCB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsICJjaHVuayIpOworCisgICAgdmlkZW8xLnNyY09iamVj
dCA9IHN0cmVhbTsKKyAgICBhd2FpdCB2aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdl
IHdpdGggdHJhbnNmb3JtIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MzM1
N2Y0YTBmZDI5NzI3NmU4NzYxNTg3NmNiMWFhN2ZmMzdiNThmLi5kZmZjNWNiMDMzZjJlNWY0ZmM5
YTIxNjlhNzQ4ZTgxMTU0YzdkNDE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zCkBAIC04NjcsNyArODY3LDcgQEAgd2Via2l0Lm9yZy9iLzIxODc4NyB3ZWJy
dGMvdmlkZW8tc3RhdHMuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxODc4NyBmYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3IuaHRtbCBbIFRpbWVv
dXQgXQogd2Via2l0Lm9yZy9iLzIxODc4NyB3ZWJydGMvY29uY3VycmVudFZpZGVvUGxheWJhY2su
aHRtbCBbIFRpbWVvdXQgXQogd2Via2l0Lm9yZy9iLzIxODc4NyB3ZWJydGMvaWNlLWNhbmRpZGF0
ZS1zZHBNTGluZUluZGV4Lmh0bWwgWyBUaW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8yMTg3ODcgd2Vi
cnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxODc4
NyBodHRwL3dwdC93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sIFsgRmFpbHVyZSBdCiAKICMv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBXZWJSVEMtcmVsYXRlZCBi
dWdzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcyBi
L0xheW91dFRlc3RzL3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNjhj
NjIyYmZjMTFhY2UxZWIxZjFmY2M4ZDgyZDIyZmM0ODJkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpAQCAtMCwwICsxLDcgQEAKK2Ns
YXNzIE1vY2tSVENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsgfQorICAgIHN0YXJ0KHJlYWRhYmxlU3RyZWFtLCB3cml0
YWJsZVN0cmVhbSkgeyByZWFkYWJsZVN0cmVhbS5waXBlVG8od3JpdGFibGVTdHJlYW0pOyB9Cit9
OworCityZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCJNb2NrUlRDUnRwVHJhbnNmb3Jt
IiwgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKTsKK3NlbGYucG9zdE1lc3NhZ2UoInN0YXJ0ZWQiKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4ZjUxYjNjODAwYzVkN2FjNDkzZDcwMzMw
MGFjZDY4Mjc4ZjlmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKKysr
IC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLQotCi1QQVNTIGF1ZGlvIGV4Y2hhbmdlIHdpdGgg
dHJhbnNmb3JtCi1QQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0
cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhOWM1YTZkZmE1NzdiYTNiYTkwZWVhZTUyMGM2MzI1MTU0ZTFhZjUwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy93
ZWJydGMtdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi08IWRv
Y3R5cGUgaHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Ci0gICAgICAgIDx0aXRsZT5UZXN0aW5nIG1lZGlhIGV4Y2hhbmdlIHdpdGggdHJhbnNm
b3JtPC90aXRsZT4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAg
ICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDx2aWRlbyBp
ZD0idmlkZW8yIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRp
bmVzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLXByb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4gewotICAgIGlmICghd2luZG93LmludGVybmFscykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgbGV0IHNlbmRlclRyYW5zZm9ybSA9IGlu
dGVybmFscy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0gICAgbGV0IHJlY2VpdmVyVHJh
bnNmb3JtID0gaW50ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLQotICAgIGNv
bnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe2F1ZGlvOiB0cnVlfSk7Ci0gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RD
b25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Ci0gICAg
ICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0
QXVkaW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5z
Zm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+
IHsKLSAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247Ci0gICAgICAgICAgICBzZWNv
bmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAg
IHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKLSAgICAgICAgICAgICAgICByZWNlaXZl
ci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKLSAgICAgICAgICAgICAgICByZXNvbHZl
KHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAg
ICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwot
ICAgIH0pOwotCi0gICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2aWRl
bzEucGxheSgpOwotCi0gICAgbGV0IGNvdW50ZXIgPSAwOwotICAgIHdoaWxlICghcmVjZWl2ZXJU
cmFuc2Zvcm0uaXNQcm9jZXNzaW5nICYmIGNvdW50ZXIrKyA8IDEwMCkKLSAgICAgICAgYXdhaXQg
bmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7Ci0KLSAgICBh
c3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0uaXNQcm9jZXNzaW5nLCAic2VuZGVyIik7Ci19LCAi
YXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0
ZXN0KSA9PiB7Ci0gICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKLSAgICBsZXQgc2VuZGVyVHJhbnNmb3JtID0gaW50
ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLSAgICBsZXQgcmVjZWl2ZXJUcmFu
c2Zvcm0gPSBpbnRlcm5hbHMuY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgY29u
c3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7dmlkZW86IHRydWV9KTsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0
Q29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAg
ICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdl
dFZpZGVvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFu
c2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9
PiB7Ci0gICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vj
b25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAg
ICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2
ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2
ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsK
LSAgICB9KTsKLQotICAgIHZpZGVvMi5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlk
ZW8yLnBsYXkoKTsKLQotICAgbGV0IGNvdW50ZXIgPSAwOwotICAgd2hpbGUgKCFyZWNlaXZlclRy
YW5zZm9ybS5pc1Byb2Nlc3NpbmcgJiYgY291bnRlcisrIDwgMTAwKQotICAgICAgIGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOwotCi0gICAgYXNz
ZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZywgInNlbmRlciIpOwotfSwgInZp
ZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwv
Ym9keT4KLTwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="431479"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414556</attachid>
            <date>2020-11-19 02:49:25 -0800</date>
            <delta_ts>2020-11-19 02:53:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219148-20201119114921.patch</filename>
            <type>text/plain</type>
            <size>175167</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4N2JjMDU3MTMzOWEy
YmU1ZTIzMjg0ODBhYjlmZTE0MDQ3YzZjZS4uMzQ1MzFlMDIzN2UwYmRhYTIwYjk2M2RkNGZmNWVj
ZTk1NTljMDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0xMS0xOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB3aGljaCBw
cm9jZXNzZXMgZW5jb2RlZCBmcmFtZXMgaW4gYSB3b3JrZXIgZm9yIGVpdGhlciBSVENSdHBTZW5k
ZXIgb3IgUlRDUnRwUmVjZWl2ZXIuCisgICAgICAgIFRoZSBtb2RlbCBmb2xsb3dzIEF1ZGlvV29y
a2xldE5vZGUgaW4gdGhlIHNlbnNlIHRoYXQgd2UgY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtIG9iamVjdCBpbiBtYWluIHRocmVhZCB0aGF0IGlzIHVzZWQgd2l0aCBSVENSdHAgb2JqZWN0
cy4KKyAgICAgICAgVGhlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB0YWtlcyBhIG5hbWUgYW5kIGEg
d29ya2VyIGFzIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIg
Y291bnRlciBwYXJ0IGluIGEgd29ya2VyLgorICAgICAgICBCZWZvcmUgdGhhdCwgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIgY29uc3RydWN0b3JzIGFyZSByZWdpc3RlcmVkIGluIHRoZSB3b3JrZXIg
d2l0aCBhIHNwZWNpZmljIG5hbWUuCisgICAgICAgIEEgbWVzc2FnZSBwb3J0IGlzIHNoYXJlZCBi
ZXR3ZWVuIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBhbmQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
CisKKyAgICAgICAgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGtlZXBzIGEgd2VhayBwb2ludGVyIHRv
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHNvIHRoYXQgd2Uga2VlcCBhbGwgcmVmIGNvdW50aW5n
IG9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIGluIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgICAg
ICBUbyBtYWtlIHN1cmUgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgc3RheXMgYWxpdmUgZm9yIGxv
bmcgZW5vdWdoLCB3ZSBzZXQgYSBwZW5kaW5nIGFjdGl2aXR5IHdoZW4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtIGlzIGxpbmtlZCB0byBpdHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuCisgICAgICAg
IFRoZSBwZW5kaW5nIGFjdGl2aXR5IGlzIHRoZW4gcmVtb3ZlZCBlaXRoZXIgYXQgd29ya2VyIGNs
b3N1cmUgb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGJlaW5nIG5vIGxvbmdlciBkb2luZyBwcm9j
ZXNzaW5nLgorCisgICAgICAgIFdlIGV4cG9zZSBpbmRpdmlkdWFsIGNvbXByZXNzZWQgZnJhbWVz
IGFzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIGFuZCBSVENFbmNvZGVkVmlkZW9GcmFtZS4KKyAgICAg
ICAgQWNjZXNzb3IgaXMgbGltaXRlZCB0byB0aGUgcmF3IGRhdGEgYnV0IGFkZGl0aW9uYWwgZ2V0
dGVycyBzaG91bGQgYmUgYWRkZWQgbGF0ZXIgb24uCisKKyAgICAgICAgVG8gaW1wbGVtZW50IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLCB3ZSBoYXZlIHRvIGJlIGFibGUgdG8gY3JlYXRlIFdyaXRh
YmxlU3RyZWFtIHdpdGggbmF0aXZlIHNpbmtzLgorICAgICAgICBUaGlzIGlzIHdoeSB3ZSBpbnRy
b2R1Y2UgV3JpdGFibGVTdHJlYW1TaW5rIGFuZCBXcml0YWJsZVN0cmVhbSBDKysgY2xhc3Nlcy4K
KyAgICAgICAgQmluZGluZyBiZXR3ZWVuIG5hdGl2ZSBmcmFtZXMgYW5kIHN0cmVhbXMgaXMgZG9u
ZSB0aHJvdWdoIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlIGFuZCBSVENSdHBXcml0YWJsZVN0
cmVhbVNpbmsuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zv
cm0uaHRtbCBhbmQgaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
VENFbmNvZGVkQXVkaW9GcmFtZTo6UlRDRW5jb2RlZEF1ZGlvRnJhbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpSVENFbmNvZGVkQXVkaW9GcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVv
RnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
citUcmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFu
c2Zvcm1lcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRh
Y2hlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFu
c2Zvcm06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRU
cmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtOjpzZXRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZv
clNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxD
bGVhckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpp
bml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjplbnF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6UlRDUnRwV3JpdGFi
bGVTdHJlYW1TaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
azo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXI6On5SVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI6OnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RvcFBlbmRpbmdBY3Rpdml0
eSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyV2l0aFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcldpdGhU
cmFuc2Zvcm06OnNldFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpm
cm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6UlRDUnRwVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1JlY2VpdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpjbGVhckJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwVHJhbnNmb3JtOjppbnRlcm5hbFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6
VHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5r
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3Ry
ZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyOjp0b1dyYXBwZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRl
ZCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6
dHJhbnNmb3JtKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdp
c3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAg
ICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9iamVj
dFByb3h5Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKwogMjAyMC0xMS0xNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFNGcmFtZSB0cmFuc2Zv
cm1hdGlvbiBpbXBsZW1lbnRhdGlvbiBhY2NvcmRpbmcgcG9zdC1jb21taXQgcmV2aWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDk0ZDA2MmJmOTkzZDFiNGM3YzQ0NDI0ZmE0ZTkxNjU3ZjQwMDdl
YWEuLjBjZDhiMzU0YjNlZjlmOTc3ZDYwZjNhZDJmMWYyZDI3MTQ4YzM3OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0zNzMsNiArMzczLDggQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklM
RVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEdHhTdGF0dXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC00MDMs
NiArNDA1LDEwIEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJ0eFBhcmFtZXRlcnMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm0uaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Q
cm92aWRlci5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJD
b25zdHJ1Y3Rvci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRQYXJhbWV0
ZXJzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwKQEAgLTQ4MSw2ICs0
ODcsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5pZGwKICAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1E
ZWZhdWx0V3JpdGVyLmlkbAorICAgIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsu
aWRsCiAKICAgICBNb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwKICAgICBNb2R1bGVz
L3dlYmF1ZGlvL0FuYWx5c2VyT3B0aW9ucy5pZGwKQEAgLTE3NTMsNyArMTc2MCw2IEBAIHNldChX
ZWJDb3JlVGVzdFN1cHBvcnRfSURMX0ZJTEVTCiAgICAgdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5p
ZGwKICAgICB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsCiAgICAgdGVzdGlu
Zy9Nb2NrUGFnZU92ZXJsYXkuaWRsCi0gICAgdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlk
bAogICAgIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKICAgICB0ZXN0aW5nL1R5
cGVDb252ZXJzaW9ucy5pZGwKICkKQEAgLTE3NzcsNyArMTc4Myw2IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVUZXN0U3VwcG9ydF9TT1VSQ0VTCiAgICAgdGVzdGluZy9Nb2NrTGliV2ViUlRDUGVlckNv
bm5lY3Rpb24uY3BwCiAgICAgdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXkuY3BwCiAgICAgdGVzdGlu
Zy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuY3BwCi0gICAgdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNm
b3JtLmNwcAogICAgIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKICAgICB0ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGIxNmQ4OGU4NDVjZDY2Y2VjOGNlY2Qw
ZTdjYjQwZjg0MmNjZDk2MDQuLjc4YjNkNGZhMDg5NDk0MzhkMGJlOTc0OTRkNDY5ZmVlOTIzOTQ0
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dApAQCAtMjA1LDYgKzIwNSw4IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsRXZlbnQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RlZ3JhZGF0aW9uUHJlZmVyZW5jZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlVHlwZS5pZGwKQEAgLTIzNyw2ICsyMzksMTAg
QEAgJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFu
c2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSdHhQYXJh
bWV0ZXJzLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybS5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbAorJChQUk9KRUNUX0RJUikv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlk
bAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1ldGVy
cy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyLmlkbApAQCAtMzM4LDYgKzM0NCw3IEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmpzCiAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5qcwogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCiskKFBS
T0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlkbAogJChQUk9K
RUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyT3B0aW9ucy5pZGwKICQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDI2ZDNjMTRhMmE2OGI4OTE2NjllYjBk
NTYwMjdjZTRmNWNlNzNjOGYuLmExNmI4MzI3NjlkNjdjODIwZDNiZTI2NTVmZDMyNmJhM2U3YWQw
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CkBAIC0xNjQ3LDYgKzE2NDcsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNSVENEZWdyYWRhdGlvblByZWZlcmVuY2UuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RlZ3JhZGF0aW9uUHJlZmVy
ZW5jZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JU
Q0R0eFN0YXR1cy5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUlRDRHR4U3RhdHVzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgKKyQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRW5jb2RlZFZpZGVv
RnJhbWUuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENJY2VDYW5kaWRhdGUuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENJY2VDYW5kaWRhdGVJbml0LmNw
cApAQCAtMTcwNyw2ICsxNzExLDE0IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwUnR4UGFyYW1ldGVycy5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcAorJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm0u
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmNw
cAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2VuZFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJz
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRw
U2VuZGVyK1RyYW5zZm9ybS5jcHAKQEAgLTI1NjksNiArMjU4MSw4IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5jCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuY3Bw
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxl
U3RyZWFtRGVmYXVsdFdyaXRlci5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtU2luay5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1TaW5rLmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWE1MRG9jdW1lbnQuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTERvY3VtZW50
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWE1MSHR0
cFJlcXVlc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCAyN2FjN2Q4MGVl
YjEwMzU2NGQxYWU2NTMyMWVmMDA3NTcwYmVjY2IxLi45YmE5YWRjMmE0NTc3MmE3YjEzMjI4YzQ5
YTE2OTk1NzQ4ZjRjY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTIzMSw2
ICsyMzEsOCBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RlZ3JhZGF0aW9uUHJlZmVyZW5jZS5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEdHhTdGF0dXMuaWRsIFwKKyAgICAkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQu
aWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRl
VHlwZS5pZGwgXApAQCAtMjY0LDEwICsyNjYsMTMgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRs
IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwgXAorICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFN5bmNocm9uaXph
dGlvblNvdXJjZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBUcmFuc2NlaXZlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5pZGwgXAotICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDU2RwVHlwZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdC5pZGwgXApAQCAtMzQyLDYg
KzM0Nyw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0
cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmlkbCBcCisgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsIFwKQEAgLTEyMzAsNyArMTIzNiw2IEBA
IEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50
Q29udGFjdEZpZWxkcy5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudENv
b3JkaW5hdG9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tQYXltZW50RXJyb3Iu
aWRsIFwKLSAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgXAog
ICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
IFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmlkbCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1
ZGlvRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4NTI3NzI2Mzc5ZmJmYjZkYTc4NDgzNzFlY2ZiMTMx
OGRiOGVkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJUQ0VuY29kZWRBdWRpb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JU
QykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSVENFbmNvZGVkQXVkaW9GcmFtZTo6UlRDRW5j
b2RlZEF1ZGlvRnJhbWUoVW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJiBmcmFt
ZSkKKyAgICA6IFJUQ0VuY29kZWRGcmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30KKworUlRDRW5j
b2RlZEF1ZGlvRnJhbWU6On5SVENFbmNvZGVkQXVkaW9GcmFtZSgpID0gZGVmYXVsdDsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0Zy
YW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRp
b0ZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODJiNmYwODI3NWU2OTM1OWI0N2MwZjA1MTZjMzJjZWVkNjA0
MDE1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ0VuY29kZWRGcmFtZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIDogcHVibGljIFJUQ0VuY29k
ZWRGcmFtZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSVENFbmNvZGVkQXVkaW9GcmFtZT4g
Y3JlYXRlKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYgZnJhbWUpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUlRDRW5jb2RlZEF1ZGlvRnJhbWUoV1RGTW92ZShmcmFtZSkpKTsg
fQorICAgIH5SVENFbmNvZGVkQXVkaW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+
JiYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRBdWRpb0ZyYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0MGQ1NmMxZDMwODgyYWNh
OTYzNjRhYTc1NmM0OWQ5ZGMwZWYzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbApAQCAtMCwwICsx
LDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRXhw
b3NlZD1EZWRpY2F0ZWRXb3JrZXIsCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKK10g
aW50ZXJmYWNlIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHsKKyAgICAvLyByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKKyAgICBhdHRyaWJ1dGUgQXJyYXlCdWZm
ZXIgZGF0YTsKKyAgICAvLyBSVENBdWRpb0ZyYW1lTWV0YWRhdGEgZ2V0TWV0YWRhdGEoKTsKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29k
ZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29k
ZWRGcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDc2YTkzOTU2YWJiYmU4NDYwNDdjY2UwMWFmMTJjNWMx
Y2IyZDUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRW5jb2RlZEZyYW1lLmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlJUQ0VuY29kZWRGcmFtZS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvU3Ryb25nSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JUQ0VuY29kZWRG
cmFtZTo6UlRDRW5jb2RlZEZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+
JiYgZnJhbWUpCisgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQoreworfQorCitSZWZQdHI8
SlNDOjpBcnJheUJ1ZmZlcj4gUlRDRW5jb2RlZEZyYW1lOjpkYXRhKCkgY29uc3QKK3sKKyAgICBh
dXRvIGRhdGEgPSBtX2ZyYW1lLT5kYXRhKCk7CisgICAgcmV0dXJuIEpTQzo6QXJyYXlCdWZmZXI6
OmNyZWF0ZShkYXRhLmRhdGEsIGRhdGEuc2l6ZSk7Cit9CisKK3ZvaWQgUlRDRW5jb2RlZEZyYW1l
OjpzZXREYXRhKEpTQzo6QXJyYXlCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBtX2ZyYW1lLT5zZXRE
YXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIu
Ynl0ZUxlbmd0aCgpIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRW5jb2RlZEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNWFkMDg0YWQ1Y2M3OWYyZTEw
MzNjNTMyYzViNDY2MGMzM2U0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZy
YW1lLmgiCisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUlRDRW5jb2RlZEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8UlRD
RW5jb2RlZEZyYW1lPiB7CitwdWJsaWM6CisgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGRh
dGEoKSBjb25zdDsKKyAgICB2b2lkIHNldERhdGEoSlNDOjpBcnJheUJ1ZmZlciYpOworCisgICAg
VW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4gdGFrZVJUQ0ZyYW1lKCkgeyByZXR1
cm4gV1RGTW92ZShtX2ZyYW1lKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgUlRDRW5j
b2RlZEZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOworCisgICAg
VW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4gbV9mcmFtZTsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRl
b0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWY2M2EwOWMyZDhhNjk1ZDQzNzYyZWY3ZDM5MGNmZjk3
ZTY2MTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSVENFbmNvZGVkVmlkZW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZFZpZGVvRnJhbWU6OlJUQ0VuY29k
ZWRWaWRlb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYgZnJhbWUp
CisgICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9CisKK1JUQ0VuY29k
ZWRWaWRlb0ZyYW1lOjp+UlRDRW5jb2RlZFZpZGVvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9G
cmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM3NzA1YWM4NTZhMDI2Mjk3ZjgxOTA3M2VhZjRjODMwZTM2MTlh
NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkVmlkZW9GcmFtZSA6IHB1YmxpYyBSVENFbmNvZGVk
RnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZFZpZGVvRnJhbWU+IGNy
ZWF0ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZyYW1lKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKFdURk1vdmUoZnJhbWUpKSk7IH0K
KyAgICB+UlRDRW5jb2RlZFZpZGVvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBS
VENFbmNvZGVkVmlkZW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYm
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkVmlkZW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGRkNmE4MTdmZTFkZWZhMDBk
YjEzYjc5YzZmY2FiZWNlZDYyOTYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5pZGwKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRDLAorICAgIEV4cG9z
ZWQ9RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCitdIGlu
dGVyZmFjZSBSVENFbmNvZGVkVmlkZW9GcmFtZSB7CisgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRl
IFJUQ0VuY29kZWRWaWRlb0ZyYW1lVHlwZSB0eXBlOworICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wOworICAgIGF0dHJpYnV0ZSBBcnJheUJ1ZmZl
ciBkYXRhOworICAgIC8vIFJUQ1ZpZGVvRnJhbWVNZXRhZGF0YSBnZXRNZXRhZGF0YSgpOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIrVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAppbmRleCBmMGIyZTExZDQ3ZmZiYjNhODQzYmY0
MTM5N2UwYzA4YzkxZTI2Mjc4Li40NjkzNGU0OGQwMmFmZjRiYmU2NGJiYTU5YWM3ZmUwNzA5YTBh
MmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCkBAIC0yMyw2ICsyMyw4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAordHlwZWRlZiAoUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtIG9yIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSkgUlRDUnRwVHJhbnNmb3Jt
OworCiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKICAgICBFbmFibGVkQnlTZXR0aW5nPVdl
YlJUQ0luc2VydGFibGVTdHJlYW1zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAppbmRleCAwYmZjYzk2NjNjMmYwNmQ0ZTkw
YzA5NDg4ZGYyNTJlMWZkMmIzYzAwLi5lZjdhMjk4MDAwNjJlMjM4YzZjYjNjNjBjNjUyMjVjZWQ1
YjM4MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJlY2VpdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFJlY2VpdmVyLmNwcApAQCAtODEsOCArODEsMTAgQEAgT3B0aW9uYWw8UlRDUnRwQ2Fw
YWJpbGl0aWVzPiBSVENSdHBSZWNlaXZlcjo6Z2V0Q2FwYWJpbGl0aWVzKFNjcmlwdEV4ZWN1dGlv
bkNvbnQKICAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZWNlaXZlckNhcGFiaWxp
dGllcyhjb250ZXh0LCBraW5kKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwUmVjZWl2
ZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKK0V4
Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0oT3B0aW9uYWw8UlRD
UnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKIHsKKyAgICBpZiAodHJhbnNmb3JtICYmIG1fdHJh
bnNmb3JtICYmICp0cmFuc2Zvcm0gPT0gKm1fdHJhbnNmb3JtKQorICAgICAgICByZXR1cm4geyB9
OwogICAgIGlmICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtLT5pc0F0dGFjaGVkKCkpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInRyYW5zZm9ybSBpcyBhbHJl
YWR5IGluIHVzZSJfcyB9OwogCkBAIC05NSw2ICs5NywxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBS
VENSdHBSZWNlaXZlcjo6c2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJh
bnNmbwogICAgIHJldHVybiB7IH07CiB9CiAKK09wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+IFJUQ1J0cFJlY2VpdmVyOjp0cmFuc2Zvcm0oKQoreworICAgIGlmICghbV90cmFuc2Zv
cm0pCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtLT5pbnRlcm5h
bFRyYW5zZm9ybSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwUmVjZWl2ZXIuaAppbmRleCA4Y2IxYTQzZDJiZDA0NDYyNGMyODdjYTZhZjcxYzdk
Zjg3OGQyMmI1Li4zYTE2MTcyMDU0M2MxZDRiYmZjNTFhMTQwMTM3ZDljYzc3MDBkM2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBSVENSdHBSZWNlaXZlckJhY2tlbmQq
IGJhY2tlbmQoKSB7IHJldHVybiBtX2JhY2tlbmQuZ2V0KCk7IH0KICAgICB2b2lkIGdldFN0YXRz
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCi0gICAgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zv
cm0oKSB7IHJldHVybiBtX3RyYW5zZm9ybS5nZXQoKTsgfQotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmKTsKKyAgICBPcHRpb25hbDxS
VENSdHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0oKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRUcmFuc2Zvcm0oT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtPiYmKTsKIAogcHJpdmF0
ZToKICAgICBSVENSdHBSZWNlaXZlcihQZWVyQ29ubmVjdGlvbkJhY2tlbmQmLCBSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJik7
CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2s+IG1f
dHJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4gbV9iYWNr
ZW5kOwogICAgIFdlYWtQdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5kPiBtX2Nvbm5lY3Rpb247Ci0g
ICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgT3B0aW9uYWw8UlRD
UnRwVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXJXaXRoVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oCmluZGV4IDRlYjliODQ3OTExM2RhMjE3OTVj
ODcwN2ViZGRlNGNhNmVhMmI0Y2YuLjgxNmNhNzljOWQzYjcwYjI3OTRlYjk2YjgyN2NmYTUyOTMz
NjkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaApAQCAtMzYsOCArMzYsOCBA
QCBjbGFzcyBSVENSdHBUcmFuc2Zvcm07CiAKIGNsYXNzIFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5z
Zm9ybSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJUQ1J0cFRyYW5zZm9ybSogdHJhbnNmb3JtKFJU
Q1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyByZXR1cm4gcmVjZWl2ZXIudHJhbnNmb3JtKCk7IH0K
LSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVy
JiByZWNlaXZlciwgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJu
IHJlY2VpdmVyLnNldFRyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpOyB9CisgICAgc3RhdGlj
IE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybShSVENSdHBSZWNl
aXZlciYgcmVjZWl2ZXIpIHsgcmV0dXJuIHJlY2VpdmVyLnRyYW5zZm9ybSgpOyB9CisgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBSZWNlaXZlciYgcmVjZWl2
ZXIsIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+JiYgdHJhbnNmb3JtKSB7IHJl
dHVybiByZWNlaXZlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtOjpmcm9tKFdURk1vdmUo
dHJhbnNmb3JtKSkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5jcHAKaW5kZXggMjk3NGM2NDBjOThhMWFlZmQxZTFiNmZhMjFkMTdhNmQ2NTBhNjYz
Ni4uNWM4N2NmNTY0YTUxNTMwMTQ3OTNjNDhmMmYyZGU5Mjc1Yzc5NzJlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0tleVJhdy5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ci5oIgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCIKICNpbmNsdWRlICJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgsMTEg
KzY5LDEyIEBAIHVpbnQ2NF90IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6Y291bnRlckZvclRlc3Rp
bmcoKSBjb25zdAogCiB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5z
Zm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQsIFNpZGUgc2lkZSkKIHsKKyAg
ICBtX2lzQXR0YWNoZWQgPSB0cnVlOwogICAgIG1fdHJhbnNmb3JtZXItPnNldElzU2VuZGluZyhz
aWRlID09IFNpZGU6OlNlbmRlcik7CiAgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNQcm9jZXNzaW5n
QXVkaW8oYmFja2VuZC5tZWRpYVR5cGUoKSA9PSBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpNZWRp
YVR5cGU6OkF1ZGlvKTsKIAogICAgIGJhY2tlbmQuc2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJh
Y2soW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zvcm1lciwgYmFja2VuZCA9IG1ha2VSZWYoYmFja2Vu
ZCldKGF1dG8mJiBmcmFtZSkgewotICAgICAgICBhdXRvIGNodW5rID0gZnJhbWUuZGF0YSgpOwor
ICAgICAgICBhdXRvIGNodW5rID0gZnJhbWUtPmRhdGEoKTsKICAgICAgICAgYXV0byByZXN1bHQg
PSB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKGNodW5rLmRhdGEsIGNodW5rLnNpemUpOwogCiAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKQEAgLTgwLDkgKzgyLDkgQEAgdm9pZCBS
VENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJiBiYWNrZW4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGZyYW1lLnNldERhdGEoeyByZXN1bHQucmV0dXJuVmFsdWUoKS5kYXRhKCksIHJlc3VsdC5y
ZXR1cm5WYWx1ZSgpLnNpemUoKSB9KTsKKyAgICAgICAgZnJhbWUtPnNldERhdGEoeyByZXN1bHQu
cmV0dXJuVmFsdWUoKS5kYXRhKCksIHJlc3VsdC5yZXR1cm5WYWx1ZSgpLnNpemUoKSB9KTsKIAot
ICAgICAgICBiYWNrZW5kLT5wcm9jZXNzVHJhbnNmb3JtZWRGcmFtZShXVEZNb3ZlKGZyYW1lKSk7
CisgICAgICAgIGJhY2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1vdmUoZnJhbWUu
Z2V0KCkpKTsKICAgICB9KTsKIH0KIApAQCAtMTAwLDYgKzEwMiw3IEBAIHZvaWQgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kJiBiCiB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQogewogICAgIGJhY2tlbmQuY2xlYXJUcmFu
c2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygpOworICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaAppbmRleCAxNTgxOTBh
OTA5NjYwY2YwNDBkMDY3ZTM2YWE1N2ZmYmNhNjE0YmFjLi5kNDdkYjliMjljOGE2YmQ1NzhjZTIz
MWFhMzFiNTY5YTA5YWU4NWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKQEAgLTI4LDMyICsyOCwz
NCBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKLSNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDcnlwdG9LZXk7CiBjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcjsKK2Ns
YXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ7CiAKLWNsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bSBmaW5hbCA6IHB1YmxpYyBSVENSdHBUcmFuc2Zvcm0geworY2xhc3MgUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKTsgfQogICAgIH5SVENSdHBT
RnJhbWVUcmFuc2Zvcm0oKTsKIAogICAgIHZvaWQgc2V0RW5jcnlwdGlvbktleShDcnlwdG9LZXkm
LCBPcHRpb25hbDx1aW50NjRfdD4sIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKIAorICAg
IGJvb2wgaXNBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdHRhY2hlZDsgfQorICAgIHZv
aWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7
CisgICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kJik7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQm
KTsKKwogICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGNvdW50ZXJGb3JUZXN0aW5nKCkgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CiAKLSAgICB2b2lk
IGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpIGZp
bmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJikgZmluYWw7Ci0KICAgICBlbnVtIGNsYXNzIFNpZGUgeyBTZW5kZXIsIFJlY2Vp
dmVyIH07CiAgICAgdm9pZCBpbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZCYsIFNpZGUpOwogCisgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9OwogICAgIFJl
ZjxSVENSdHBTRnJhbWVUcmFuc2Zvcm1lcj4gbV90cmFuc2Zvcm1lcjsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmlkbAppbmRleCA5N2I3Njk4YmQ4YzZkNGIyMmNlYzYwOWE4N2NhNzFhYjBhZTRi
OTQxLi4yNjQyOGRkOTJmNTE1OWQzZTkyMmI1MTBlNGRlMDc1NjY3YTkxMmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaWRsCkBAIC0yOCw4ICsyOCw5IEBACiAgICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwK
ICAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAg
IEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLV0gaW50ZXJmYWNlIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7CitdIGludGVyZmFjZSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm0gewogICAgIGNvbnN0cnVjdG9yKCk7CiAKICAgICBQcm9taXNlPHVuZGVmaW5lZD4gc2V0RW5j
cnlwdGlvbktleShDcnlwdG9LZXkga2V5LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGxvbmcga2V5
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NzM2MDc1ZGVkNzc2YjJm
NzY5Y2Q1ZTk4NGI1N2YzNTlkMjE1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKQEAgLTAsMCAr
MSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgiCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZUNoYW5uZWwuaCIKKyNpbmNsdWRlICJS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQuaCIKKyNpbmNsdWRlICJXb3JrZXIuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChSVENSdHBTY3JpcHRUcmFuc2Zvcm0pOworCitFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2NyaXB0
VHJhbnNmb3JtPj4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgV29ya2VyJiB3b3JrZXIsIFN0cmluZyYmIG5hbWUpCit7CisgICAg
aWYgKCF3b3JrZXIuaGFzUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIobmFtZSkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyIHdhcyByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CisKKyAgICBpZiAoIXdv
cmtlci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciwgIldvcmtlciBmcmFtZSBpcyBkZXRhY2hlZCJfcyB9OworCisg
ICAgYXV0byBtZXNzYWdlQ2hhbm5lbCA9IE1lc3NhZ2VDaGFubmVsOjpjcmVhdGUoKndvcmtlci5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGF1dG8gdHJhbnNmb3JtTWVzc2FnZVBvcnQg
PSBtZXNzYWdlQ2hhbm5lbC0+cG9ydDEoKTsKKyAgICBhdXRvIHRyYW5zZm9ybWVyTWVzc2FnZVBv
cnQgPSBtZXNzYWdlQ2hhbm5lbC0+cG9ydDIoKTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRv
cHRSZWYoKm5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0oY29udGV4dCwgbWFrZVJlZih3b3JrZXIp
LCBtYWtlUmVmKCp0cmFuc2Zvcm1NZXNzYWdlUG9ydCkpKTsKKyAgICB0cmFuc2Zvcm0tPnN1c3Bl
bmRJZk5lZWRlZCgpOworCisgICAgd29ya2VyLmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
KG5hbWUsIHRyYW5zZm9ybWVyTWVzc2FnZVBvcnQtPmRpc2VudGFuZ2xlKCksIHRyYW5zZm9ybSk7
CisKKyAgICByZXR1cm4gdHJhbnNmb3JtOworfQorCitSVENSdHBTY3JpcHRUcmFuc2Zvcm06OlJU
Q1J0cFNjcmlwdFRyYW5zZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8
V29ya2VyPiYmIHdvcmtlciwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCisgICAgOiBBY3RpdmVE
T01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3dvcmtlcihXVEZNb3ZlKHdvcmtlcikpCisgICAg
LCBtX3BvcnQoV1RGTW92ZShwb3J0KSkKK3sKK30KKworUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjp+
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKCkKK3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtZXIoUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyPiYmIHRyYW5zZm9ybWVyKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIGlmICghdHJhbnNmb3JtZXIpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
cXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpNZWRpYUVsZW1lbnQs
IEVycm9yRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgIkFuIGVycm9yIHdh
cyB0aHJvd24gZnJvbSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciBjb25zdHJ1Y3RvciJfcywgeyB9
LCAwLCAwLCB7IH0pKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFuc2Zvcm1lckxvY2spOwor
ICAgICAgICBBU1NFUlQoIW1faXNUcmFuc2Zvcm1lckluaXRpYWxpemVkKTsKKyAgICAgICAgbV9p
c1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQgPSB0cnVlOworICAgICAgICBtX3RyYW5zZm9ybWVyID0g
bWFrZVdlYWtQdHIodHJhbnNmb3JtZXIuZ2V0KCkpOworICAgIH0KKyAgICB0cmFuc2Zvcm1lci0+
c3RhcnRQZW5kaW5nQWN0aXZpdHkoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2Jh
Y2tlbmQpCisgICAgICAgICAgICBzZXR1cFRyYW5zZm9ybWVyKG1fYmFja2VuZC5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICB9KTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRp
YWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkK
K3sKKyAgICBpbml0aWFsaXplVHJhbnNmb3JtZXIoYmFja2VuZCk7Cit9CisKK3ZvaWQgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxpemVUcmFuc2Zvcm1lcihiYWNrZW5k
KTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRD
UnRwVHJhbnNmb3JtQmFja2VuZCYpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kJiBiYWNrZW5kKQoreworICAgIG1faXNBdHRhY2hlZCA9IHRydWU7CisgICAgaWYgKCFzZXR1
cFRyYW5zZm9ybWVyKG1ha2VSZWYoYmFja2VuZCkpKQorICAgICAgICBtX2JhY2tlbmQgPSBtYWtl
UmVmKGJhY2tlbmQpOworfQorCitib29sIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6c2V0dXBUcmFu
c2Zvcm1lcihSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5kKQoreworICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFuc2Zvcm1lckxvY2spOworICAgIGlmICghbV9pc1Ry
YW5zZm9ybWVySW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fd29y
a2VyLT5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW3RyYW5zZm9ybWVyID0gbV90cmFuc2Zv
cm1lciwgYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKHRyYW5zZm9ybWVyKQorICAgICAgICAgICAgdHJhbnNmb3JtZXItPnN0YXJ0KFdURk1v
dmUoYmFja2VuZCkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6Y2xlYXIoKQoreworICAgIG1faXNBdHRhY2hlZCA9IGZhbHNlOwor
CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgbV9p
c1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBtX3dvcmtlci0+cG9zdFRhc2tU
b1dvcmtlckdsb2JhbFNjb3BlKFt0cmFuc2Zvcm1lciA9IFdURk1vdmUobV90cmFuc2Zvcm1lcild
KGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHRyYW5zZm9ybWVyKQorICAgICAgICAgICAg
dHJhbnNmb3JtZXItPmNsZWFyKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDRkY2ViNWY0MGZmNTdmZDVmYTNjYzA3OTNhNjEwOGU4NTU2ZTY5NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI7CitjbGFzcyBSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kOworY2xhc3MgV29ya2VyOworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gZmluYWwK
KyAgICA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+
CisgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChSVENSdHBTY3JpcHRU
cmFuc2Zvcm0pOworcHVibGljOgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtPj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrZXImLCBT
dHJpbmcmJiBuYW1lKTsKKyAgICB+UlRDUnRwU2NyaXB0VHJhbnNmb3JtKCk7CisKKyAgICBNZXNz
YWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisgICAgdm9pZCBzZXRU
cmFuc2Zvcm1lcihSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+JiYpOworCisgICAgYm9v
bCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9CisgICAgdm9pZCBp
bml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAg
ICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQm
KTsKKyAgICB2b2lkIHdpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwor
CisgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBUaHJlYWRT
YWZlUmVmQ291bnRlZDo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8V29ya2VyPiYmLCBSZWY8TWVzc2FnZVBv
cnQ+JiYpOworCisgICAgdm9pZCBpbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZCYpOworICAgIGJvb2wgc2V0dXBUcmFuc2Zvcm1lcihSZWY8UlRDUnRwVHJhbnNmb3Jt
QmFja2VuZD4mJik7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
VENSdHBTY3JpcHRUcmFuc2Zvcm0iOyB9CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIFJlZjxXb3JrZXI+IG1f
d29ya2VyOworICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OworCisgICAgYm9vbCBtX2lzQXR0
YWNoZWQgeyBmYWxzZSB9OworICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX2Jh
Y2tlbmQ7CisKKyAgICBMb2NrIG1fdHJhbnNmb3JtZXJMb2NrOworICAgIGJvb2wgbV9pc1RyYW5z
Zm9ybWVySW5pdGlhbGl6ZWQgeyBmYWxzZSB9OworICAgIFdlYWtQdHI8UlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNjZhOWI5NTMxYzE3ODIxYzY4OTliNmY2MDBmZDU3MzBkOWZlOTlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRU
cmFuc2Zvcm0uaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQWN0aXZl
RE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRW5hYmxlZEJ5U2V0dGlu
Zz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBKU0dl
bmVyYXRlVG9OYXRpdmVPYmplY3QsCitdIGludGVyZmFjZSBSVENSdHBTY3JpcHRUcmFuc2Zvcm0g
OiBFdmVudFRhcmdldCB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIGNv
bnN0cnVjdG9yKFdvcmtlciB3b3JrZXIsIERPTVN0cmluZyBuYW1lKTsKKworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1Qcm92aWRlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYzYmU4YWRjMzAyN2U1NzhmNjZjZjRjNTljMWI1
NzRkNmZlMjYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsCkBAIC0wLDAgKzEsMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitpbnRlcmZhY2UgbWl4aW4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJv
dmlkZXIgeworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHJlZ2lzdGVyUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIoRE9NU3RyaW5nIG5hbWUsIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Q29uc3RydWN0b3IgcHJvY2Vzc29yQ29uc3RydWN0b3IpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMzNzRkNzIzZTA0NzU3OWQwZjhiMzU3ZmRiYzU0NWU2NDVj
YTM3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgiCisKKyNpZiBFTkFCTEUoV0VC
X1JUQykKKworI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVk
ZSAiSlNDYWxsYmFja0RhdGEuaCIKKyNpbmNsdWRlICJKU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgi
CisjaW5jbHVkZSAiSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oIgorI2luY2x1ZGUgIlJUQ1J0cFRy
YW5zZm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCisjaW5jbHVk
ZSAiUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlICJXcml0YWJsZVN0cmVhbS5oIgor
I2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtU2luay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlCisgICAgOiBwdWJsaWMgUmVhZGFibGVT
dHJlYW1Tb3VyY2UKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSVENSdHBSZWFkYWJsZVN0
cmVhbVNvdXJjZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVhZGFibGVTdHJl
YW1Tb3VyY2U+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwUmVhZGFibGVT
dHJlYW1Tb3VyY2UpOyB9CisKKyAgICB2b2lkIGNsb3NlKCkgeyBjb250cm9sbGVyKCkuY2xvc2Uo
KTsgfQorICAgIHZvaWQgZW5xdWV1ZShKU0M6OkpTVmFsdWUgdmFsdWUpIHsgY29udHJvbGxlcigp
LmVucXVldWUodmFsdWUpOyB9CisKK3ByaXZhdGU6CisgICAgUlRDUnRwUmVhZGFibGVTdHJlYW1T
b3VyY2UoKSA9IGRlZmF1bHQ7CisKKyAgICAvLyBSZWFkYWJsZVN0cmVhbVNvdXJjZQorICAgIHZv
aWQgc2V0QWN0aXZlKCkgZmluYWwgeyB9CisgICAgdm9pZCBzZXRJbmFjdGl2ZSgpIGZpbmFsIHsg
fQorICAgIHZvaWQgZG9TdGFydCgpIGZpbmFsIHsgfQorICAgIHZvaWQgZG9QdWxsKCkgZmluYWwg
eyB9CisgICAgdm9pZCBkb0NhbmNlbCgpIGZpbmFsIHsgfQorfTsKKworY2xhc3MgUlRDUnRwV3Jp
dGFibGVTdHJlYW1TaW5rIDogcHVibGljIFdyaXRhYmxlU3RyZWFtU2luayB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSVENSdHBXcml0YWJsZVN0cmVhbVNpbms+IGNyZWF0ZShGdW5jdGlvbjx2
b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPiYmIGVucXVldWVGdW5j
dGlvbikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBXcml0YWJsZVN0cmVhbVNpbmsoV1RG
TW92ZShlbnF1ZXVlRnVuY3Rpb24pKSk7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSVENS
dHBXcml0YWJsZVN0cmVhbVNpbmsoRnVuY3Rpb248dm9pZChVbmlxdWVSZWY8UlRDUnRwVHJhbnNm
b3JtYWJsZUZyYW1lPiYmKT4mJiBlbnF1ZXVlRnVuY3Rpb24pCisgICAgICAgIDogbV9lbnF1ZXVl
RnVuY3Rpb24oV1RGTW92ZShlbnF1ZXVlRnVuY3Rpb24pKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIHdyaXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKKyAgICB7CisgICAgICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9ICpjb250ZXh0Lmdsb2JhbE9iamVjdCgpOworCisgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdsb2JhbE9iamVjdC52bSgpKTsKKyAg
ICAgICAgYXV0byBmcmFtZSA9IGNvbnZlcnQ8SURMVW5pb248SURMSW50ZXJmYWNlPFJUQ0VuY29k
ZWRBdWRpb0ZyYW1lPiwgSURMSW50ZXJmYWNlPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPj4+KGdsb2Jh
bE9iamVjdCwgdmFsdWUpOworCisgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9LCBSZWplY3RBc0hhbmRsZWQ6Olllcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBXVEY6OnN3aXRjaE9uKGZyYW1lLCBbJl0oUmVmUHRyPFJUQ0VuY29kZWRB
dWRpb0ZyYW1lPiYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fZW5xdWV1ZUZ1bmN0aW9uKHZhbHVl
LT50YWtlUlRDRnJhbWUoKSk7CisgICAgICAgIH0sIFsmXShSZWZQdHI8UlRDRW5jb2RlZFZpZGVv
RnJhbWU+JiB2YWx1ZSkgeworICAgICAgICAgICAgbV9lbnF1ZXVlRnVuY3Rpb24odmFsdWUtPnRh
a2VSVENGcmFtZSgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZSgpOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hldGhlciBjbGVhcmluZyBhbGwgcGVuZGlu
ZyBmcmFtZXMuCisgICAgdm9pZCBjbG9zZSgpIGZpbmFsIHsgfQorICAgIHZvaWQgZXJyb3IoU3Ry
aW5nJiYpIGZpbmFsIHsgfQorCisgICAgRnVuY3Rpb248dm9pZChVbmlxdWVSZWY8UlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lPiYmKT4gbV9lbnF1ZXVlRnVuY3Rpb247Cit9OworCitFeGNlcHRpb25P
cjxSZWY8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAgYXV0byBwb3J0
ID0gZG93bmNhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRha2VQZW5k
aW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0KCk7CisgICAgaWYgKCFwb3J0KQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTm8gcGVuZGluZyBjb25zdHJ1Y3Rpb24gZGF0
YSBmb3IgdGhpcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciJfcyB9OworCisgICAgYXV0byB0cmFu
c2Zvcm1lciA9IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoY29udGV4dCwg
cG9ydC5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgdHJhbnNmb3JtZXItPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiB0cmFuc2Zvcm1lcjsKK30KKworUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXI6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250
ZXh0KQorICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCit7Cit9CisKK1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyOjp+UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKQoreworfQorCitSZWZQdHI8UlRD
UnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U+IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpzdGFydFN0
cmVhbXMoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkKK3sKKyAgICBhdXRvIGNhbGxi
YWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKTsKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxXb3JrZXJHbG9i
YWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgYXV0byYgZ2xvYmFsT2Jq
ZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY29udGV4dC5nbG9iYWxPYmpl
Y3QoKSk7CisKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgYXV0byByZWFkYWJsZVN0cmVhbVNvdXJjZSA9IFJU
Q1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlYWRhYmxlU3Ry
ZWFtID0gUmVhZGFibGVTdHJlYW06OmNyZWF0ZShnbG9iYWxPYmplY3QsIHJlYWRhYmxlU3RyZWFt
U291cmNlLmNvcHlSZWYoKSk7CisgICAgaWYgKHJlYWRhYmxlU3RyZWFtLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gd3JpdGFibGVTdHJlYW0gPSBX
cml0YWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgUlRDUnRwV3JpdGFibGVTdHJlYW1T
aW5rOjpjcmVhdGUoW2JhY2tlbmQgPSBtYWtlUmVmKGJhY2tlbmQpXShhdXRvJiYgZnJhbWUpIHsK
KyAgICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZS5n
ZXQoKSkpOworICAgIH0pKTsKKyAgICBpZiAod3JpdGFibGVTdHJlYW0uaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gQ2FsbCBzdGFydCBjYWxsYmFjay4K
KyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9K
U05ld2x5Q3JlYXRlZCgmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCByZWFkYWJsZVN0cmVh
bS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworICAgIGFyZ3MuYXBwZW5kKHRvSlNOZXdseUNyZWF0
ZWQoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgd3JpdGFibGVTdHJlYW0ucmVsZWFzZVJl
dHVyblZhbHVlKCkpKTsKKworICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4
Y2VwdGlvbjsKKyAgICBjYWxsYmFjay0+aW52b2tlQ2FsbGJhY2soSlNDOjpqc1VuZGVmaW5lZCgp
LCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInN0YXJ0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAv
LyBGSVhNRTogRG8gc29tZXRoaW5nIGluIGNhc2Ugb2YgZXhjZXB0aW9uPyBXZSBzaG91bGQgYXQg
bGVhc3QgbG9nIGVycm9ycy4KKworICAgIHJldHVybiByZWFkYWJsZVN0cmVhbVNvdXJjZTsKK30K
Kwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RhcnQoUmVmPFJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQ+JiYgYmFja2VuZCkKK3sKKyAgICBhdXRvIHJlYWRhYmxlU3RyZWFtU291cmNlID0g
c3RhcnRTdHJlYW1zKGJhY2tlbmQuZ2V0KCkpOworICAgIGlmICghcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYmFja2VuZCA9IFdURk1vdmUoYmFja2VuZCk7
CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fYmFja2VuZC0+c2V0VHJhbnNmb3JtYWJsZUZy
YW1lQ2FsbGJhY2soW3JlYWRhYmxlU3RyZWFtU291cmNlID0gbWFrZVdlYWtQdHIocmVhZGFibGVT
dHJlYW1Tb3VyY2UuZ2V0KCkpLCBpc0F1ZGlvID0gbV9iYWNrZW5kLT5tZWRpYVR5cGUoKSA9PSBS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpNZWRpYVR5cGU6OkF1ZGlvLCB0aHJlYWQgPSBtYWtlUmVm
KGNvbnRleHQudGhyZWFkKCkpXShhdXRvJiYgZnJhbWUpIG11dGFibGUgeworICAgICAgICB0aHJl
YWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlYWRhYmxlU3RyZWFtU291cmNlLCBpc0F1
ZGlvLCBmcmFtZSA9IFdURk1vdmUoZnJhbWUpXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICghcmVhZGFibGVTdHJlYW1Tb3VyY2UpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgIGF1
dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CisgICAgICAgICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrKHZtKTsKKworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGlzQXVkaW8gPyB0b0pTKCZn
bG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIFJUQ0VuY29kZWRBdWRpb0ZyYW1lOjpjcmVhdGUo
V1RGTW92ZShmcmFtZSkpKSA6IHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgUlRD
RW5jb2RlZEF1ZGlvRnJhbWU6OmNyZWF0ZShXVEZNb3ZlKGZyYW1lKSkpOworICAgICAgICAgICAg
cmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUodmFsdWUpOworICAgICAgICB9LCBXb3JrZXJS
dW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICB9KTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcjo6Y2xlYXIoKQoreworICAgIGlmIChtX2JhY2tlbmQpCisgICAgICAgIG1fYmFj
a2VuZC0+Y2xlYXJUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygpOworICAgIG1fYmFja2VuZCA9
IG51bGxwdHI7CisgICAgc3RvcFBlbmRpbmdBY3Rpdml0eSgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMmFkZGNlNGYxMjBkZWI4NDRjMDRmYjFiZGI2ZjZhNTBhMGNlODc0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJfUlRDKQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEpTQ2FsbGJhY2tEYXRhU3Ryb25nOworY2xhc3MgTWVzc2FnZVBvcnQ7
CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZDsKK2NsYXNzIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOworCitjbGFzcyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcgorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXI+CisgICAgLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0CisgICAgLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICB+UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKTsKKwor
ICAgIHZvaWQgc2V0Q2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tEYXRhU3Ryb25n
PiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorICAgIE1l
c3NhZ2VQb3J0JiBwb3J0KCkgeyByZXR1cm4gbV9wb3J0LmdldCgpOyB9CisKKyAgICB2b2lkIHN0
YXJ0KFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmKTsKKyAgICB2b2lkIGNsZWFyKCk7CisK
KyAgICB2b2lkIHN0YXJ0UGVuZGluZ0FjdGl2aXR5KCkgeyBtX3BlbmRpbmdBY3Rpdml0eSA9IG1h
a2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOyB9CisKK3ByaXZhdGU6CisgICAgUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxNZXNzYWdlUG9ydD4mJik7
CisKKyAgICBSZWZQdHI8UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U+IHN0YXJ0U3RyZWFtcyhS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgeyByZXR1cm4gIlJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyIjsgfQorICAgIHZvaWQgc3RvcCgpIGZpbmFsIHsgc3RvcFBlbmRpbmdB
Y3Rpdml0eSgpOyB9CisgICAgdm9pZCBzdG9wUGVuZGluZ0FjdGl2aXR5KCkgeyBhdXRvIHBlbmRp
bmdBY3Rpdml0eSA9IFdURk1vdmUobV9wZW5kaW5nQWN0aXZpdHkpOyB9CisKKyAgICBSZWY8TWVz
c2FnZVBvcnQ+IG1fcG9ydDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJv
bmc+IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFj
a2VuZDsKKyAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Pj4gbV9wZW5kaW5nQWN0aXZpdHk7CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44Nzc0NTU3ZDA1ZGM1YTA1MDNlOWUxNzJiYjkyZDY0N2U0OTAwOTZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lci5pZGwKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEZJWE1F
OiBBZGQgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKK1sKKyAgICBB
Y3RpdmVET01PYmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFeHBvc2VkPURl
ZGljYXRlZFdvcmtlciwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCitdIGludGVyZmFj
ZSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRdIGNvbnN0cnVjdG9yKC8qIG9wdGlvbmFsIG9iamVjdCB0cmFuc2Zvcm1PcHRpb25z
ICovKTsKKworICAgIC8vIEZJWE1FOiBhZGQgY29udHJvbGxlciBhdHRyaWJ1dGUuCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0
cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWQ5YmRiOGJlMTM3M2JmN2Zm
YzBmN2YxYWQ5MGI4MmRmNDg0NDNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmgK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAi
QWN0aXZlRE9NQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJDYWxsYmFja1Jlc3VsdC5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXI7CisKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29u
c3RydWN0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0
cnVjdG9yPiwgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICB1c2luZyBB
Y3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2s7CisKKyAgICB2aXJ0dWFsIENhbGxi
YWNrUmVzdWx0PFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IGhhbmRsZUV2ZW50KCkg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNzIxZTUzZjZiNjU1YjRmOGFhOWIxNzJlMjNiMjcwMzE0YzU3YmY2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbApAQCAtMCwwICsxLDMxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25h
bD1XRUJfUlRDLAorXSBjYWxsYmFjayBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9y
ID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCmlu
ZGV4IDMzOGE3ZTMwN2Q2MjRjMTM0Zjc4MGNjYjcxMGM4YzY4MjRkYzBkZGEuLmI5MTJkMDFhNmQ5
OTU1YTMwNGJiYjFhNWNmZDhhOWY1MDBjOTAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlk
bApAQCAtMjMsNiArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKK3R5cGVkZWYgKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBvciBSVENSdHBTY3JpcHRUcmFu
c2Zvcm0pIFJUQ1J0cFRyYW5zZm9ybTsKKwogWwogICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCiAg
ICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAppbmRleCBj
N2FjM2M0OWJkOWQ3OTZiMjQ4NzVmOWQ5MjMwNmQzZTkzYTc1NDNiLi4zZTAzMmI2NTkzYTc2NDNi
NDYyZDNkZmE4ZTIyZmIyYjA5NDQ2ZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBAIC0xOTMsOCArMTkzLDEwIEBAIE9w
dGlvbmFsPFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBSVENSdHBTZW5kZXI6OmN1cnJlbnRU
cmFuc2NlaXZlckRpcmVjdGlvbigpCiAgICAgcmV0dXJuIHNlbmRlclRyYW5zY2VpdmVyLT5jdXJy
ZW50RGlyZWN0aW9uKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0
VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKQorRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRUcmFuc2Zvcm0oT3B0aW9uYWw8UlRDUnRwVHJhbnNm
b3JtPiYmIHRyYW5zZm9ybSkKIHsKKyAgICBpZiAodHJhbnNmb3JtICYmIG1fdHJhbnNmb3JtICYm
ICp0cmFuc2Zvcm0gPT0gKm1fdHJhbnNmb3JtKQorICAgICAgICByZXR1cm4geyB9OwogICAgIGlm
ICh0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtLT5pc0F0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgInRyYW5zZm9ybSBpcyBhbHJlYWR5IGluIHVz
ZSJfcyB9OwogCkBAIC0yMDcsNiArMjA5LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNl
bmRlcjo6c2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAorT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4g
UlRDUnRwU2VuZGVyOjp0cmFuc2Zvcm0oKQoreworICAgIGlmICghbV90cmFuc2Zvcm0pCisgICAg
ICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtLT5pbnRlcm5hbFRyYW5zZm9y
bSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VC
X1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5oCmluZGV4IDcwYWQ5NTkyNzBiYjJhMjlhZTM0OTNiMWQxZWI4MDk0YTliNTA1YjUuLmVk
ZTRkOWRhMGI4NTBhOGNhOWY4OWFhMjRjMWNhYTU3ODdiOWY0MjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAtODIsOCArODIs
OCBAQCBwdWJsaWM6CiAgICAgUlRDRFRNRlNlbmRlciogZHRtZigpOwogICAgIE9wdGlvbmFsPFJU
Q1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uPiBjdXJyZW50VHJhbnNjZWl2ZXJEaXJlY3Rpb24oKSBj
b25zdDsKIAotICAgIFJUQ1J0cFRyYW5zZm9ybSogdHJhbnNmb3JtKCkgeyByZXR1cm4gbV90cmFu
c2Zvcm0uZ2V0KCk7IH0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUmVmUHRy
PFJUQ1J0cFRyYW5zZm9ybT4mJik7CisgICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRl
cm5hbD4gdHJhbnNmb3JtKCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKE9w
dGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4mJik7CiAKIHByaXZhdGU6CiAgICAgUlRDUnRwU2VuZGVy
KFJUQ1BlZXJDb25uZWN0aW9uJiwgU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYm
IG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7
CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNl
bmRlckJhY2tlbmQ+IG1fYmFja2VuZDsKICAgICBXZWFrUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247CiAgICAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IG1fZHRtZlNlbmRlcjsKLSAg
ICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKKyAgICBPcHRpb25hbDxSVENS
dHBUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXJXaXRoVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaAppbmRleCA4NzE0MzhlZTY2NWIyNmY4MGUxNTFjMTk1
ZWM4NzZjY2VhYWE5MzBlLi40NmQzN2E3NzM2ZjE2ZGMwNzk1Yjk1ZDQwNThlYWE5NDNmZGE2Yjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlcldpdGhUcmFuc2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaApAQCAtMzYsOCArMzYsOCBAQCBjbGFzcyBS
VENSdHBUcmFuc2Zvcm07CiAKIGNsYXNzIFJUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0gewogcHVi
bGljOgotICAgIHN0YXRpYyBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybShSVENSdHBTZW5kZXIm
IHNlbmRlcikgeyByZXR1cm4gc2VuZGVyLnRyYW5zZm9ybSgpOyB9Ci0gICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBTZW5kZXImIHNlbmRlciwgUmVmUHRyPFJU
Q1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHNlbmRlci5zZXRUcmFuc2Zvcm0o
V1RGTW92ZSh0cmFuc2Zvcm0pKTsgfQorICAgIHN0YXRpYyBPcHRpb25hbDxSVENSdHBUcmFuc2Zv
cm06OkludGVybmFsPiB0cmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIpIHsgcmV0dXJuIHNl
bmRlci50cmFuc2Zvcm0oKTsgfQorICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFu
c2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIsIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0VHJhbnNmb3JtKFJUQ1J0cFRy
YW5zZm9ybTo6ZnJvbShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBUcmFuc2Zvcm0uY3BwCmluZGV4IDNiZjVlNWU1YzJkZjcwZjk2MzAzZGY5NDk0ZmM1
YjMxNWM2OTNiMWQuLjNjN2ZjZjRiZDI0Mjc1NmUzMWM1ZGIzOGFjOTZiYjhhMWY3NDA4MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNm
b3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRy
YW5zZm9ybS5jcHAKQEAgLTMzLDEwICszMywzMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K09wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gUlRDUnRwVHJhbnNmb3JtOjpmcm9tKE9wdGlvbmFs
PEludGVybmFsPiYmIGludGVybmFsKQoreworICAgIGlmICghaW50ZXJuYWwpCisgICAgICAgIHJl
dHVybiB7IH07CisgICAgcmV0dXJuIFJUQ1J0cFRyYW5zZm9ybShXVEZNb3ZlKCppbnRlcm5hbCkp
OworfQorCitSVENSdHBUcmFuc2Zvcm06OlJUQ1J0cFRyYW5zZm9ybShJbnRlcm5hbCYmIHRyYW5z
Zm9ybSkKKyAgICA6IG1fdHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSkKK3sKK30KKwogUlRD
UnRwVHJhbnNmb3JtOjp+UlRDUnRwVHJhbnNmb3JtKCkKIHsKLSAgICBpZiAobV9iYWNrZW5kKQot
ICAgICAgICB3aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOworICAgIGNsZWFyQmFja2VuZCgp
OworfQorCitib29sIFJUQ1J0cFRyYW5zZm9ybTo6aXNBdHRhY2hlZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAgICAgICByZXR1cm4gc2ZyYW1lVHJh
bnNmb3JtLT5pc0F0dGFjaGVkKCk7CisgICAgfSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgcmV0dXJuIHNjcmlwdFRy
YW5zZm9ybS0+aXNBdHRhY2hlZCgpOworICAgIH0pOwogfQogCiB2b2lkIFJUQ1J0cFRyYW5zZm9y
bTo6YXR0YWNoVG9SZWNlaXZlcihSVENSdHBSZWNlaXZlciYgcmVjZWl2ZXIpCkBAIC00NCw4ICs2
NCwxMyBAQCB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9SZWNlaXZlcihSVENSdHBSZWNl
aXZlciYgcmVjZWl2ZXIpCiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwogICAgIGlmIChhdXRv
KiBiYWNrZW5kID0gcmVjZWl2ZXIuYmFja2VuZCgpKQogICAgICAgICBtX2JhY2tlbmQgPSBiYWNr
ZW5kLT5jcmVhdGVSVENSdHBUcmFuc2Zvcm1CYWNrZW5kKCk7Ci0gICAgaWYgKG1fYmFja2VuZCkK
LSAgICAgICAgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9iYWNrZW5kKTsKKyAgICBp
ZiAobV9iYWNrZW5kKSB7CisgICAgICAgIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0oUmVmUHRy
PFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAgICAgICAgICAg
c2ZyYW1lVHJhbnNmb3JtLT5pbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKCptX2JhY2tlbmQp
OworICAgICAgICB9LCBbJl0oUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlwdFRy
YW5zZm9ybSkgeworICAgICAgICAgICAgc2NyaXB0VHJhbnNmb3JtLT5pbml0aWFsaXplQmFja2Vu
ZEZvclJlY2VpdmVyKCptX2JhY2tlbmQpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQg
UlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1NlbmRlcihSVENSdHBTZW5kZXImIHNlbmRlcikKQEAg
LTUzLDI2ICs3OCw1NCBAQCB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIoUlRD
UnRwU2VuZGVyJiBzZW5kZXIpCiAgICAgQVNTRVJUKCFpc0F0dGFjaGVkKCkpOwogICAgIGlmIChh
dXRvKiBiYWNrZW5kID0gc2VuZGVyLmJhY2tlbmQoKSkKICAgICAgICAgbV9iYWNrZW5kID0gYmFj
a2VuZC0+Y3JlYXRlUlRDUnRwVHJhbnNmb3JtQmFja2VuZCgpOwotICAgIGlmIChtX2JhY2tlbmQp
Ci0gICAgICAgIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKCptX2JhY2tlbmQpOworICAgIGlm
IChtX2JhY2tlbmQpIHsKKyAgICAgICAgc3dpdGNoT24obV90cmFuc2Zvcm0sIFsmXShSZWZQdHI8
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtKSB7CisgICAgICAgICAgICBz
ZnJhbWVUcmFuc2Zvcm0tPmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKCptX2JhY2tlbmQpOwor
ICAgICAgICB9LCBbJl0oUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlwdFRyYW5z
Zm9ybSkgeworICAgICAgICAgICAgc2NyaXB0VHJhbnNmb3JtLT5pbml0aWFsaXplQmFja2VuZEZv
clNlbmRlcigqbV9iYWNrZW5kKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCi12b2lkIFJUQ1J0
cFRyYW5zZm9ybTo6ZGV0YWNoRnJvbVJlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJikKK3ZvaWQgUlRD
UnRwVHJhbnNmb3JtOjpjbGVhckJhY2tlbmQoKQogewogICAgIGlmICghbV9iYWNrZW5kKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB3aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOworICAgIHN3
aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0oUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNm
cmFtZVRyYW5zZm9ybSkgeworICAgICAgICBzZnJhbWVUcmFuc2Zvcm0tPndpbGxDbGVhckJhY2tl
bmQoKm1fYmFja2VuZCk7CisgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+
JiBzY3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgc2NyaXB0VHJhbnNmb3JtLT53aWxsQ2xlYXJC
YWNrZW5kKCptX2JhY2tlbmQpOworICAgIH0pOworCiAgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsK
IH0KIAordm9pZCBSVENSdHBUcmFuc2Zvcm06OmRldGFjaEZyb21SZWNlaXZlcihSVENSdHBSZWNl
aXZlciYpCit7CisgICAgY2xlYXJCYWNrZW5kKCk7Cit9CisKIHZvaWQgUlRDUnRwVHJhbnNmb3Jt
OjpkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpCiB7Ci0gICAgaWYgKCFtX2JhY2tlbmQp
Ci0gICAgICAgIHJldHVybjsKKyAgICBjbGVhckJhY2tlbmQoKTsKK30KIAotICAgIHdpbGxDbGVh
ckJhY2tlbmQoKm1fYmFja2VuZCk7Ci0gICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKK2Jvb2wgb3Bl
cmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGEsIGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYg
YikKK3sKKyAgICByZXR1cm4gc3dpdGNoT24oYS5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0
cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1BKSB7CisgICAgICAgIHJl
dHVybiBzd2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybUIpIHsKKyAgICAgICAgICAgIHJldHVybiBzZnJh
bWVUcmFuc2Zvcm1BLmdldCgpID09IHNmcmFtZVRyYW5zZm9ybUIuZ2V0KCk7CisgICAgICAgIH0s
IFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYpIHsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgfSwgWyZdKGNvbnN0IFJlZlB0cjxSVENS
dHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm1BKSB7CisgICAgICAgIHJldHVybiBz
d2l0Y2hPbihiLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybT4mKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0sIFsmXShjb25z
dCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQikgeworICAg
ICAgICAgICAgcmV0dXJuIHNjcmlwdFRyYW5zZm9ybUEuZ2V0KCkgPT0gc2NyaXB0VHJhbnNmb3Jt
Qi5nZXQoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRy
YW5zZm9ybS5oCmluZGV4IGRiN2ZkODQyN2Y1ODBjODY4YWFlYzQzZTA2N2EzOGY5MDczY2ZlMGIu
LjYxYjkxZWFjZTg2OGNkN2FjNzRjYzQ0YzM5MmI5NWZjMGEyOWJlYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaApAQCAt
MjcsMTggKzI3LDIyIEBACiAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAorI2luY2x1ZGUgIlJUQ1J0
cFNGcmFtZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oIgog
I2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSVENSdHBSZWNlaXZlcjsKIGNsYXNzIFJUQ1J0cFNlbmRlcjsKIAotY2xhc3MgV0VC
Q09SRV9FWFBPUlQgUlRDUnRwVHJhbnNmb3JtIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwVHJh
bnNmb3JtPiB7CitjbGFzcyBSVENSdHBUcmFuc2Zvcm0gIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5SVENSdHBUcmFuc2Zvcm0oKTsKKyAgICB1c2luZyBJbnRlcm5hbCA9IFZhcmlhbnQ8UmVmUHRy
PFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4sIFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PjsK
KyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtPiBmcm9tKE9wdGlvbmFsPEludGVy
bmFsPiYmKTsKKworICAgIGV4cGxpY2l0IFJUQ1J0cFRyYW5zZm9ybShJbnRlcm5hbCYmKTsKKyAg
ICB+UlRDUnRwVHJhbnNmb3JtKCk7CiAKICAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdDsKICAg
ICB2b2lkIGF0dGFjaFRvUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImKTsKQEAgLTQ2LDMwICs1MCwy
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2hGcm9tUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXIm
KTsKICAgICB2b2lkIGRldGFjaEZyb21TZW5kZXIoUlRDUnRwU2VuZGVyJik7CiAKKyAgICBJbnRl
cm5hbCBpbnRlcm5hbFRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CisKKyAgICBm
cmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYsIGNvbnN0IFJUQ1J0
cFRyYW5zZm9ybSYpOworCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQmFj
a2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7Ci0gICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQm
KTsKKyAgICB2b2lkIGNsZWFyQmFja2VuZCgpOwogCi1wcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFJU
Q1J0cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBJbnRlcm5hbCBtX3RyYW5zZm9y
bTsKIH07CiAKLWlubGluZSBib29sIFJUQ1J0cFRyYW5zZm9ybTo6aXNBdHRhY2hlZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuICEhbV9iYWNrZW5kOwotfQotCi1pbmxpbmUgdm9pZCBSVENSdHBUcmFu
c2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQm
KQotewotfQotCi1pbmxpbmUgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5k
Rm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpCi17Ci19Ci0KLWlubGluZSB2b2lk
IFJUQ1J0cFRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
JikKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mLCBjb25zdCBSVENSdHBU
cmFuc2Zvcm0mKTsKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUlRDUnRwVHJhbnNmb3Jt
JiBhLCBjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGIpCiB7CisgICAgcmV0dXJuICEoYSA9PSBiKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaWRsCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjZTZlMzI4MTJiYzQzZmYxZTNmNWZhYjEwNTE2NjZlNGVjNDMzNWE2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbAorKysgL2Rldi9udWxs
CkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKLSAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLAotICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JU
LAotICAgIEV4cG9zZWQ9V2luZG93Ci1dIGludGVyZmFjZSBSVENSdHBUcmFuc2Zvcm0gewotICAg
IC8vIEZJWE1FOiBBZGQgcmVhZGFibGUvd3JpdGFibGUgZ2V0dGVycwotICAgIC8vIHJlYWRvbmx5
IGF0dHJpYnV0ZSBSZWFkYWJsZVN0cmVhbSByZWFkYWJsZTsKLSAgICAvLyByZWFkb25seSBhdHRy
aWJ1dGUgV3JpdGFibGVTdHJlYW0gd3JpdGFibGU7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaApp
bmRleCA0MTIxNDkyMjAxYWU2NDYzNWI4ODI5MzU0NTVlNWI4ZjM3M2JiY2E5Li5hYTkyMmQzMjc5
Mzc0NGFhOWNlODk5MzI2MTJmODZkY2I1NGM1OWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaApA
QCAtMzYsNyArMzYsNyBAQCBjbGFzcyBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbgogcHVibGljOgogICAgIHZp
cnR1YWwgflJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAKLSAgICB1c2luZyBD
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lJiYpPjsKKyAg
ICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9y
bWFibGVGcmFtZT4mJik+OwogICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1hYmxlRnJhbWVD
YWxsYmFjayhDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVHJhbnNmb3Jt
YWJsZUZyYW1lQ2FsbGJhY2soKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NUcmFuc2Zv
cm1lZEZyYW1lKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSYmKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybWFibGVGcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaAppbmRleCA1NzI2MzYwMDdlZmMyNzZjMzk1OGMyZTcyYzM5YTIxM2M5YWY5OTkw
Li5kYjViMWYxMWNmMTM4YmIwMzY4YmYxNzc0OGEzMTNjODI4M2IzMTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybWFibGVGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNm
b3JtYWJsZUZyYW1lLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUoKSA9
IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZC5jcHAKaW5kZXggMDE2MmQzMGQxZmRkMzAyYTNiNWMzZWRiMzhkY2NiOWVlZTEzMzEw
NC4uMWU1NTk1NTU0MThmODE3ZGNiOGQ0MGZmOWQzZGY3YjUyYmM3M2ZlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
VHJhbnNmb3JtQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHAKQEAgLTI4LDEy
ICsyOCwxMiBAQAogI2lmIEVOQUJMRShXRUJfUlRDKSAmJiBVU0UoTElCV0VCUlRDKQogCiAjaW5j
bHVkZSAiTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTGliV2ViUlRDUnRwVHJh
bnNmb3JtQmFja2VuZDo6c2V0SW5wdXRDYWxsYmFjayhDYWxsYmFjayYmIGNhbGxiYWNrKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2lucHV0Q2FsbGJhY2tMb2NrKTsKICAgICBtX2lucHV0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKTsKIH0KQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kOjpUcmFuc2Zvcm0oc3RkOjp1bmlxdWVfcHRyPHdlYnJ0Yzo6VHJhbnNmb3JtYWIKICAgICB7
CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbnB1dENhbGxiYWNrTG9jayk7CiAg
ICAgICAgIGlmIChtX2lucHV0Q2FsbGJhY2spIHsKLSAgICAgICAgICAgIG1faW5wdXRDYWxsYmFj
ayhMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUoV1RGTW92ZShydGNGcmFtZSkpKTsKKyAg
ICAgICAgICAgIG1faW5wdXRDYWxsYmFjayhtYWtlVW5pcXVlUmVmPExpYldlYlJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZT4oV1RGTW92ZShydGNGcmFtZSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbVNpbmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWZhNTVkOTQ1YzVlNzM5NjA3ZTA1
MGI0N2ExZWU5YWViNTJkNjNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTVmFsdWU7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV3JpdGFibGVTdHJlYW1TaW5rIDogcHVibGljIFJlZkNvdW50
ZWQ8V3JpdGFibGVTdHJlYW1TaW5rPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V3JpdGFibGVT
dHJlYW1TaW5rKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIHdyaXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
cnJvcihTdHJpbmcmJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iM2YwNjAwOTRiOGVjZWQ3Yzk2ODllMTVkYmNiNDdkZjNhNjgzZjAyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtU2luay5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworWworICAgIExl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0LAorICAgIFNraXBWVGFibGVWYWxpZGF0aW9uCitdIGludGVy
ZmFjZSBXcml0YWJsZVN0cmVhbVNpbmsgeworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSBQcm9taXNlPHVuZGVmaW5lZD4gd3JpdGUoYW55IHZhbHVlKTsKKyAgICB1bmRlZmlu
ZWQgY2xvc2UoKTsKKyAgICB1bmRlZmluZWQgZXJyb3IoRE9NU3RyaW5nIG1lc3NhZ2UpOworfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggNWRmOGQ1YWI0YTAwYjdiMTJhYzRmMGU0NDQ4NWNlNDZkMjc0OTAw
OS4uYjBmODkwODk3MzI1NGY1NDExMzlmMjQ5ZTk4MWQyYTgyNTg4ZWQ5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE1OCw2ICsxNTgsOSBAQCBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIu
Y3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEYXRhQ2hhbm5lbEV2ZW50LmNwcAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVk
aW9GcmFtZS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEZyYW1lLmNwcAorTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VUcmFu
c3BvcnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApAQCAt
MTY1LDYgKzE2OCw4IEBAIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JY2VF
dmVudC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2NlaXZlci5jcHAKQEAgLTYyMiw2ICs2MjcsNyBAQCBiaW5kaW5ncy9qcy9XZWJD
b3JlSklUT3BlcmF0aW9ucy5jcHAKIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3Bw
CiBiaW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9q
cy9XaW5kb3dQcm94eS5jcHAKK2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcAogYnJpZGdl
L0lkZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNvYmplY3QuY3BwCiBicmlkZ2UvYy9DUnVu
dGltZU9iamVjdC5jcHAKQEAgLTMyOTUsNiArMzMwMSw4IEBAIEpTUlRDRGF0YUNoYW5uZWwuY3Bw
CiBKU1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCiBKU1JUQ0RlZ3JhZGF0aW9uUHJlZmVyZW5jZS5j
cHAKIEpTUlRDRHR4U3RhdHVzLmNwcAorSlNSVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKK0pTUlRD
RW5jb2RlZFZpZGVvRnJhbWUuY3BwCiBKU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKIEpTUlRDSWNlQ2Fu
ZGlkYXRlSW5pdC5jcHAKIEpTUlRDSWNlQ2FuZGlkYXRlVHlwZS5jcHAKQEAgLTMzMjMsMTIgKzMz
MzEsMTQgQEAgSlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBSZWNlaXZlci5jcHAKIEpT
UlRDUnRwUnR4UGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorSlNS
VENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCitKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcAor
SlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmNwcAogSlNSVENSdHBTZW5kUGFy
YW1ldGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNwcAogSlNSVENSdHBTeW5jaHJvbml6YXRpb25T
b3VyY2UuY3BwCiBKU1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAogSlNSVENSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbi5jcHAKLUpTUlRDUnRwVHJhbnNmb3JtLmNwcAogSlNSVENTZHBUeXBlLmNwcAogSlNS
VENTZXNzaW9uRGVzY3JpcHRpb24uY3BwCiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuY3Bw
CkBAIC0zNzIxLDYgKzM3MzEsNyBAQCBKU1dvcmtsZXRPcHRpb25zLmNwcAogSlNXcml0YWJsZVN0
cmVhbS5jcHAKIEpTV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKIEpTV3JpdGFi
bGVTdHJlYW1EZWZhdWx0V3JpdGVyLmNwcAorSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiBKU1hN
TERvY3VtZW50LmNwcAogSlNYTUxIdHRwUmVxdWVzdC5jcHAKIEpTWE1MSHR0cFJlcXVlc3RFdmVu
dFRhcmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhMDQxNDhjYThmMjhmMWQyOWMwYzI2YjJlNWVkMTY0MjAzYmMzNmIy
Li4zNGMyMTI3NjQzMGRhZjMwOGI3ZTQ0NDAyNWUyZDI2MTYxZmY5OGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA1LDkg
KzExMDUsNiBAQAogCQk0MTgxQzVDQjI1NTU4MkU0MDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTgxQzVDQTI1NTU4MkUzMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgg
Ki87IH07CiAJCTQxODFDNUNEMjU1NTgzNjkwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zv
cm1hYmxlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxODFDNUNDMjU1NTgzNjgwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWUuaCAqLzsgfTsKIAkJNDE4MUM1RDEyNTU1ODk1NjAwQUVCMEZGIC8qIExpYldlYlJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQxODFDNUNGMjU1NTg5NTYwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kLmggKi87IH07Ci0JCTQxODFDNUQ2MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRD
UnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTgxQzVENTI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICov
OyB9OwotCQk0MTgxQzVENzI1NTVDNDlBMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVE
MzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87IH07Ci0JCTQx
ODFDNjM5MjU1QUU5MEYwMEFFQjBGRiAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOTIxQzFGODU1
NTAwNjFEQkU0IC8qIEpTTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87IH07CiAJCTQxODFDNjQ4
MjU1QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2NDIyNTVCNEMyNjAwQUVC
MEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybS5oICovOyB9OwogCQk0MTgyMDU0NzFFNTNFOThDMDBENjIyMDcgLyogUlRDQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjA1
NDUxRTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzU3Myw3ICs3NTcwLDYgQEAKIAkJNDEz
QzJDMzMxQkMyOUE3QjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTNDOEIyNDI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXIr
VHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiUlRDUnRwUmVjZWl2ZXIrVHJh
bnNmb3JtLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0M4QjI2MjU1MkVF
QTkwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSAiUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTNDOEIyOTI1NTJGMDEzMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIyRTI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwU2Vu
ZGVyV2l0aFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENS
dHBTZW5kZXJXaXRoVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
M0M4QjJGMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxM0M4QjMwMjU1MkYyN0MwMEU2NTA1NSAvKiBSVENSdHBSZWNlaXZlcldp
dGhUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwUmVj
ZWl2ZXJXaXRoVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTgy
LDYgKzc1NzgsMjcgQEAKIAkJNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1lbW9yeVJlbGVh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UmVsZWFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3QjFEQjBFNzA3MDAyMzQxRDIgLyog
TWVtb3J5UmVsZWFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTWVtb3J5UmVsZWFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTNGQzRDRDFGRDFERDhDMDA1NDFDNEIgLyogU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUVG
MjU2MkRGMEMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGMDI1NjJERjU1MDAzNjM0MTcgLyog
UlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlG
MTI1NjJERjU2MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjIyNTYyRTMyQjAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjMyNTYy
RTMyQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjQyNTYyRTMyQzAwMzYzNDE3IC8qIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTQxODlGNTI1NjJFMzJEMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjYyNTYyRTY3QTAwMzYz
NDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGNzI1NjJFNjdBMDAzNjM0MTcg
LyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY5MjU2NDE2NTAwMDM2MzQxNyAvKiBSVENFbmNv
ZGVkQXVkaW9GcmFtZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDRW5jb2RlZEF1ZGlv
RnJhbWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGQTI1NjQxNjUx
MDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE0MTg5RkIyNTY0MTc1NzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUZEMjU2NDE3NjYwMDM2MzQxNyAvKiBS
VENFbmNvZGVkVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
VENFbmNvZGVkVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQx
ODlGRTI1NjQxOEUwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGRjI1NjQxOEU3MDAzNjM0MTcgLyog
UlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTQxOEEwMDI1NjQzNTk3MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1TaW5rLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwMjI1NjQzNTk4MDAzNjM0MTcgLyogV3JpdGFibGVT
dHJlYW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3Ry
ZWFtU2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwMzI1NjQzRTEy
MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRG
cmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENFbmNvZGVk
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwNjI1NjY2MEIw
MDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJUQ0VuY29kZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTQ0NjBBMDI0MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JZGVudGlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDU5OEJFMjNDOEFBQjgwMDJCOUNDOCAvKiBT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxNDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFNhbXBsZUJ1ZmZl
ckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY5Nyw5ICs3
NzE0LDYgQEAKIAkJNDE4MUM1Q0MyNTU1ODM2ODAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM1
Q0UyNTU1ODk1NTAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2Vu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUNGMjU1NTg5NTYwMEFF
QjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaDsgcGF0aCA9IGxp
YndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTQxODFDNUQzMjU1NUMxQjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNm
b3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSVENSdHBU
cmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTgxQzVENTI1NTVD
MUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxODFDNjM2MjU1QUUyNjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3Jt
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bWVyQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxODFDNjQxMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zv
cm1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNjQyMjU1QjRDMjYw
MEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTcwMzAsNiArMTcwNDQsMTQgQEAKIAkJCQkwNzIyMUI2RTE3Q0VDMzI3
MDA4NDhFNTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgKi8sCiAJCQkJNDFGQ0I3NUUy
MTQ4NjZGRjAwMzhBREM2IC8qIFJUQ0R0eFN0YXR1cy5oICovLAogCQkJCTQxRkNCNzU3MjE0ODY1
RDEwMDM4QURDNiAvKiBSVENEdHhTdGF0dXMuaWRsICovLAorCQkJCTQxNDE4OUZFMjU2NDE4RTAw
MDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAgKi8sCisJCQkJNDE0MTg5RkIyNTY0
MTc1NzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmggKi8sCisJCQkJNDE0MTg5Rjky
NTY0MTY1MDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbCAqLywKKwkJCQk0MTQx
OEEwNTI1NjY2MEFGMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmNwcCAqLywKKwkJCQk0MTQx
OEEwNjI1NjY2MEIwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8sCisJCQkJNDE0MTg5
RkYyNTY0MThFNzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAqLywKKwkJCQk0
MTQxODlGRDI1NjQxNzY2MDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCAqLywKKwkJ
CQk0MTQxODlGQTI1NjQxNjUxMDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsICov
LAogCQkJCTA3MjIxQjcxMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRhdGUuY3BwICov
LAogCQkJCTA3MjIxQjcyMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRhdGUuaCAqLywK
IAkJCQkwNzIyMUI3MzE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRlLmlkbCAqLywK
QEAgLTE3MDkwLDYgKzE3MTEyLDE1IEBACiAJCQkJNDEzQzhCMzAyNTUyRjI3QzAwRTY1MDU1IC8q
IFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oICovLAogCQkJCTQxRkNCNzYwMjE0ODY3MDAw
MDM4QURDNiAvKiBSVENSdHBSdHhQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDFGQ0I3NTgyMTQ4NjVE
MjAwMzhBREM2IC8qIFJUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsICovLAorCQkJCTQxNDE4OUY0MjU2
MkUzMkMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwICovLAorCQkJCTQxNDE4
OUYyMjU2MkUzMkIwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCAqLywKKwkJCQk0
MTQxODlGMDI1NjJERjU1MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbCAqLywK
KwkJCQk0MTQxODlGMzI1NjJFMzJDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
Y3BwICovLAorCQkJCTQxNDE4OUY1MjU2MkUzMkQwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5oICovLAorCQkJCTQxNDE4OUYxMjU2MkRGNTYwMDM2MzQxNyAvKiBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lci5pZGwgKi8sCisJCQkJNDE0MTg5RjYyNTYyRTY3QTAwMzYzNDE3IC8qIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCAqLywKKwkJCQk0MTQxODlGNzI1NjJF
NjdBMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwgKi8s
CisJCQkJNDE0MTg5RUYyNTYyREYwQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVBy
b3ZpZGVyLmlkbCAqLywKIAkJCQk0MTNDOEIyNjI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwU2Vu
ZGVyK1RyYW5zZm9ybS5pZGwgKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8qIFJU
Q1J0cFNlbmRlci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0
cFNlbmRlci5oICovLApAQCAtMTcxMTMsNyArMTcxNDQsNiBAQAogCQkJCTMxNkRDQjE3MUU3OEMz
MzAwMDFCNUY4NyAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5pZGwgKi8sCiAJCQkJNDE4
MUM1QzYyNTU1NzM1MTAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybS5jcHAgKi8sCiAJCQkJNDEz
QzhCMkYyNTUyRjI3QjAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oICovLAotCQkJCTQxM0M4
QjI5MjU1MkYwMTMwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaWRsICovLAogCQkJCTQxODFD
NUNBMjU1NTgyRTMwMEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCAqLywKIAkJ
CQk0MTgxQzVDODI1NTU3M0RGMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oICov
LAogCQkJCTQxMEY1NjU4MjRGQ0Y4NTQwMEEyRTUwQyAvKiBSVENTZHBUeXBlLmlkbCAqLywKQEAg
LTE5MjY4LDkgKzE5Mjk4LDYgQEAKIAkJCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9j
a1BheW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMTQwNjE4OTFFMkVDQTBBMDAzMkIzNEUgLyogTW9j
a1ByZXZpZXdMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUExNDA2MThBMUUyRUNBMEEwMDMyQjM0
RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oICovLAotCQkJCTQxODFDNUQzMjU1NUMxQjEw
MEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCAqLywKLQkJCQk0MTgxQzVENTI1NTVD
MUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovLAotCQkJCTQxODFDNjM2MjU1
QUUyNjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmlkbCAqLywKIAkJCQk1NzE1NjEw
ODIzNEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5o
ICovLAogCQkJCTU3MTU2MTBEMjM0Qzc0ODEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmlkbCAqLywKIAkJCQk0MTdGMEQ4MDFGRkVFMTRGMDA4RUYzMDMgLyog
U2VydmljZVdvcmtlckludGVybmFscy5jcHAgKi8sCkBAIC0xOTM4Nyw2ICsxOTQxNCw4IEBACiAJ
CQkJNDE3NjY3MzAyNERDMDhFQTAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRl
ci5pZGwgKi8sCiAJCQkJNDE3NjY3MzIyNERDMDhFQjAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFt
RGVmYXVsdFdyaXRlci5qcyAqLywKIAkJCQk5OTA4QjBGMTFCQ0FDRjkxMDBFRDBGNzUgLyogV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHMuanMgKi8sCisJCQkJNDE0MThBMDIyNTY0MzU5ODAwMzYzNDE3
IC8qIFdyaXRhYmxlU3RyZWFtU2luay5oICovLAorCQkJCTQxNDE4QTAwMjU2NDM1OTcwMDM2MzQx
NyAvKiBXcml0YWJsZVN0cmVhbVNpbmsuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSBzdHJlYW1z
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2ODE5LDYgKzI2ODQ4LDggQEAKIAkJ
CQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVy
LmggKi8sCiAJCQkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAq
LywKIAkJCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLywKKwkJ
CQk0MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3BwICovLAorCQkJ
CTQxNDE4QTA0MjU2NDNFMTMwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbS5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzQ4MSw3ICsz
MzUxMiw2IEBACiAJCQkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0VFNzZFQzFCRTk2REIwMDBG
ODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
RUU3NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDE4MUM1RDYyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBU
cmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAv
KiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkx
ODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTU2
MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTM1NTcxLDcgKzM1NjAxLDYgQEAKIAkJCQlBMTA0RUM1RDIy
MEEzRTRCMDBDQkY2N0EgLyogSlNNb2NrUGF5bWVudENvbnRhY3RGaWVsZHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTE0NkQzMUExRjk5QkNGODAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29y
ZGluYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxODFDNjM5MjU1
QUU5MEYwMEFFQjBGRiAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTcxNTYxMTQyMzRDN0ZENjAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MjdEQTcxRDEzNzM1REZBMDA3
QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUVCRjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTM1NTg3LDcgKzM1NjE2LDYgQEAKIAkJCQkyRDk3RjA0NzE5REQ0MTNDMDAx
RUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
QUZFREU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUExNDA2MThCMUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xv
YWRlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTgxQzVENzI1NTVDNDlBMDBBRUIw
RkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTVGM0I4
RjE2Q0M0QjM5MDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE3RjBEODIxRkZFRTk3OTAwOEVGMzAzIC8qIFNlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFENDFDNjcyMjU2ODc0RjAwNjk3
OTQyIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5jcHAKaW5kZXggMWUxNjhiN2RkYWJmNDBlODkxZjZkZDU3YmMwMzMwMGE5
ZjBlYzgzZS4uMDg5YjJiMDNkNjVkN2ZkNGMzN2Y1NWJjZDFhMzRjZTEzZDQ5YjhiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5jcHAKQEAgLTg5LDYgKzg5LDIyIEBAIHZvaWQgUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZXJyb3IoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24p
CiAgICAgaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGdsb2Jh
bE9iamVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKIH0KIAorYm9vbCBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CisgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKCZqc0NvbnRyb2xsZXIoKSk7Cisg
ICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisKKyAgICBhdXRvKiBjbGllbnREYXRhID0gc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkuY2xpZW50
RGF0YSk7CisgICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rp
b25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXJFbnF1ZXVlUHJpdmF0ZU5hbWUoKTsKKworICAgIHJldHVybiBpbnZva2VS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24oZ2xvYmFsT2JqZWN0KCksIHBy
aXZhdGVOYW1lLCBhcmd1bWVudHMpOworfQorCiBib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXI6OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewog
ICAgIGlmICghYnVmZmVyKSB7CkBAIC0xMDksMTQgKzEyNSw3IEBAIGJvb2wgUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKCZqc0NvbnRyb2xs
ZXIoKSk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7Ci0KLSAgICBhdXRvKiBjbGllbnRE
YXRhID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LnZt
KCkuY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWls
dGluRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXJFbnF1ZXVlUHJpdmF0ZU5hbWUoKTsKLQotICAgIHJldHVy
biBpbnZva2VSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24oZ2xvYmFsT2Jq
ZWN0KCksIHByaXZhdGVOYW1lLCBhcmd1bWVudHMpOworICAgIHJldHVybiBlbnF1ZXVlKHZhbHVl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCmlu
ZGV4IDZkMTIzNDM0MjQ1YzRhZjc2MDhiMGQ4YzBmZjE5YmVhMzk5MTY5ZGQuLjg4NGMwYTlhYzc3
M2M5MzUzYTM0ZDBkNzZkODAyODMwYmNiYTExYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgK
QEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIoSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9s
bGVyKSA6IG1fanNDb250cm9sbGVyKGNvbnRyb2xsZXIpIHsgfQogCiAgICAgYm9vbCBlbnF1ZXVl
KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmKTsKKyAgICBib29sIGVucXVldWUoSlNDOjpKU1Zh
bHVlKTsKICAgICB2b2lkIGVycm9yKGNvbnN0IEV4Y2VwdGlvbiYpOwogICAgIHZvaWQgY2xvc2Uo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0
aW5OYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1l
cy5oCmluZGV4IDE0ZDZkZjQ3MjE4MjFjZTU5MTJmMTU4ZWM0MTAwMzI5ZjM2YmUwMzAuLjBmNzQ3
Y2RmMWViZGRkNjlkNDNkODFhYzkyYzQ3NDU2YjdhMzQ3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTIyMCw2ICsyMjAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVu
dCkgXAogICAgIG1hY3JvKFJUQ1J0cFJlY2VpdmVyKSBcCiAgICAgbWFjcm8oUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtKSBcCisgICAgbWFjcm8oUlRDUnRwU2NyaXB0VHJhbnNmb3JtKSBcCiAgICAgbWFj
cm8oUlRDUnRwU2VuZGVyKSBcCiAgICAgbWFjcm8oUlRDUnRwVHJhbnNjZWl2ZXIpIFwKICAgICBt
YWNybyhSVENSdHBUcmFuc2Zvcm0pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dy
aXRhYmxlU3RyZWFtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Mjk2OWJkZTE1ZjM5NzY4YWQzNDZlNzdlOGNj
ZDUzNjBiNGY0NzViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV3JpdGFibGVTdHJlYW0uY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV3JpdGFibGVTdHJlYW0uaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMuaCIKKyNp
bmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtU2luay5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CitFeGNlcHRpb25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBXcml0YWJsZVN0cmVhbTo6Y3JlYXRl
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZlB0cjxXcml0YWJs
ZVN0cmVhbVNpbms+JiYgc2luaykKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8qIGNvbnN0cnVjdG9y
ID0gSlNDOjphc09iamVjdChnbG9iYWxPYmplY3QuZ2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
bGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLldyaXRhYmxlU3RyZWFtUHJpdmF0ZU5hbWUoKSkpOwor
CisgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3RydWN0RGF0YSh2bSwgY29uc3RydWN0
b3IpOworICAgIEFTU0VSVChjb25zdHJ1Y3REYXRhLnR5cGUgIT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZChz
aW5rID8gdG9KU05ld2x5Q3JlYXRlZCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVj
dCwgc2luay5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBKU09iamVjdCogb2JqZWN0ID0gSlND
Ojpjb25zdHJ1Y3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RE
YXRhLCBhcmdzKTsKKyAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhb2JqZWN0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2Vw
dGlvbkVycm9yIH0pOworCisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsICpqc0Nhc3Q8
SlNXcml0YWJsZVN0cmVhbSo+KG9iamVjdCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWRiODA1ODljMDJmMDZmMWQ4
NDQ0NTE5YjM2M2MwZGFlZWZiNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaApAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUg
IkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1
ZGUgIkpTV3JpdGFibGVTdHJlYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBX
cml0YWJsZVN0cmVhbVNpbms7CisKK2NsYXNzIFdyaXRhYmxlU3RyZWFtIGZpbmFsIDogcHVibGlj
IERPTUd1YXJkZWQ8SlNXcml0YWJsZVN0cmVhbT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V3JpdGFibGVTdHJlYW0+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBK
U1dyaXRhYmxlU3RyZWFtJiBqc1N0cmVhbSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXcml0YWJs
ZVN0cmVhbShnbG9iYWxPYmplY3QsIGpzU3RyZWFtKSk7IH0KKworICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8V3JpdGFibGVTdHJlYW0+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJl
ZlB0cjxXcml0YWJsZVN0cmVhbVNpbms+JiYpOworICAgIEpTV3JpdGFibGVTdHJlYW0qIHdyaXRh
YmxlU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gZ3VhcmRlZCgpOyB9CisKK3ByaXZhdGU6CisgICAg
V3JpdGFibGVTdHJlYW0oSlNET01HbG9iYWxPYmplY3QmLCBKU1dyaXRhYmxlU3RyZWFtJik7Cit9
OworCitzdHJ1Y3QgSlNXcml0YWJsZVN0cmVhbVdyYXBwZXJDb252ZXJ0ZXIgeworICAgIHN0YXRp
YyBSZWZQdHI8V3JpdGFibGVTdHJlYW0+IHRvV3JhcHBlZChKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBK
U0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICBh
dXRvKiBnbG9iYWxPYmplY3QgPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
Pih2bSwgJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGF1dG8qIFdyaXRhYmxlU3Ry
ZWFtID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTV3JpdGFibGVTdHJlYW0qPih2bSwgdmFsdWUpOwor
ICAgICAgICBpZiAoIVdyaXRhYmxlU3RyZWFtKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAgICAgcmV0dXJuIFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoKmdsb2JhbE9iamVjdCwg
KldyaXRhYmxlU3RyZWFtKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdy
YXBwZXJDb252ZXJ0ZXJUcmFpdHM8V3JpdGFibGVTdHJlYW0+IHsKKyAgICB1c2luZyBXcmFwcGVy
Q2xhc3MgPSBKU1dyaXRhYmxlU3RyZWFtV3JhcHBlckNvbnZlcnRlcjsKKyAgICB1c2luZyBUb1dy
YXBwZWRSZXR1cm5UeXBlID0gUmVmUHRyPFdyaXRhYmxlU3RyZWFtPjsKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgbmVlZHNTdGF0ZSA9IHRydWU7Cit9OworCitpbmxpbmUgV3JpdGFibGVTdHJl
YW06OldyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTV3Jp
dGFibGVTdHJlYW0mIFdyaXRhYmxlU3RyZWFtKQorICAgIDogRE9NR3VhcmRlZDxKU1dyaXRhYmxl
U3RyZWFtPihnbG9iYWxPYmplY3QsIFdyaXRhYmxlU3RyZWFtKQoreworfQorCitpbmxpbmUgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBXcml0YWJsZVN0cmVhbSogc3RyZWFtKQoreworICAgIHJldHVybiBzdHJlYW0gPyBzdHJlYW0t
PndyaXRhYmxlU3RyZWFtKCkgOiBKU0M6OmpzVW5kZWZpbmVkKCk7Cit9CisKK2lubGluZSBKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqLCBSZWY8V3JpdGFibGVTdHJlYW0+JiYgc3RyZWFtKQoreworICAgIHJldHVybiBz
dHJlYW0tPndyaXRhYmxlU3RyZWFtKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluCmluZGV4IGE5ZGE5NDUyOGYxYjQwZmNiZGU4OWZhMGM1NGUyZWRmMTk4
OTg4YjIuLjFjOTI5ZDgwZGU1ZWJmZWUwNDBmYjU4MDc4Y2RjNzFlNzZjMThlNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMzgsNiArMzgsNyBAQCBSZW1v
dGVQbGF5YmFjayBjb25kaXRpb25hbD1XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQKIFJUQ0RhdGFD
aGFubmVsIGNvbmRpdGlvbmFsPVdFQl9SVEMKIFJUQ0RUTUZTZW5kZXIgY29uZGl0aW9uYWw9V0VC
X1JUQwogUlRDUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9V0VCX1JUQworUlRDUnRwU2NyaXB0
VHJhbnNmb3JtIGNvbmRpdGlvbmFsPVdFQl9SVEMKIFNlcnZpY2VXb3JrZXIgY29uZGl0aW9uYWw9
U0VSVklDRV9XT1JLRVIKIFNlcnZpY2VXb3JrZXJDb250YWluZXIgY29uZGl0aW9uYWw9U0VSVklD
RV9XT1JLRVIKIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSBjb25kaXRpb25hbD1TRVJWSUNFX1dP
UktFUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUzZGZlNzk1MTZjMzU5
YWQ4NDA3N2JmNWZlODUyZmI5MWY3ZTNlZDAuLmFkNjM3ZmY0NGY5NmYwYjU0ZTFmMTZkODNkMTk4
ZDZhMzQzMGE1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEzOCw3
ICsxMzgsNiBAQAogI2luY2x1ZGUgIk1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIk1vY2tQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIk1vY2tQYWdlT3ZlcmxheUNsaWVu
dC5oIgotI2luY2x1ZGUgIk1vY2tSVENSdHBUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJOYXZpZ2F0
b3JCZWFjb24uaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JNZWRpYURldmljZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrTG9hZEluZm9ybWF0aW9uLmgiCkBAIC0xNTc3LDExICsxNTc2LDYgQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCB2YWx1ZSkKICNlbmRpZgogfQog
Ci1SZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4gSW50ZXJuYWxzOjpjcmVhdGVNb2NrUlRDUnRwVHJh
bnNmb3JtKCkKLXsKLSAgICByZXR1cm4gTW9ja1JUQ1J0cFRyYW5zZm9ybTo6Y3JlYXRlKCk7Ci19
Ci0KIHVpbnQ2NF90IEludGVybmFsczo6c2ZyYW1lQ291bnRlcihjb25zdCBSVENSdHBTRnJhbWVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKICAgICByZXR1cm4gdHJhbnNmb3JtLmNvdW50ZXJGb3JU
ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBiODM3YzNiM2EwNGQz
NjAzMDU3ZGUyNzU0MDIzYWU3MjdmZWVhOTJmLi4xOGM0NWViYzM2MzBlOTRhOTdiMDJkNjM0NDdk
YWY0ZDBlZDI3ZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkhFVkNVdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgotI2luY2x1ZGUgIk1vY2tSVENSdHBUcmFuc2Zvcm0u
aCIKICNpbmNsdWRlICJPcmllbnRhdGlvbk5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNv
bGVDbGllbnQuaCIKICNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCkBAIC02MTAsNyAr
NjA5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2ViUlRDSDI2NVN1cHBvcnQoYm9vbCk7CiAg
ICAgdm9pZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2wpOwogICAgIHZvaWQgc2V0V2ViUlRDVlA5
VlRCU3VwcG9ydChib29sKTsKLSAgICBSZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4gY3JlYXRlTW9j
a1JUQ1J0cFRyYW5zZm9ybSgpOwogICAgIHVpbnQ2NF90IHNmcmFtZUNvdW50ZXIoY29uc3QgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtJik7CiAgICAgdm9pZCBzZXRFbmFibGVXZWJSVENFbmNyeXB0aW9u
KGJvb2wpOwogICAgIHZvaWQgc2V0VXNlRFRMUzEwKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGFlM2E2MWZjYTAzZGM0YjY2NzQ3M2QwMDVmODI4ZTE1ZTBiOTk4
M2EuLjU0M2E5NTQwZWM0YzYzNGFjYmEzZWVjNjYxOGYwMzY2MTY2MWNjNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTgwMiw3ICs4MDIsNiBAQCBlbnVtIFRyZWVUeXBl
IHsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5kZWZpbmVkIHNldFdlYlJUQ0gyNjVTdXBw
b3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5l
ZCBzZXRXZWJSVENWUDlTdXBwb3J0KGJvb2xlYW4gYWxsb3dlZCk7CiAgICAgW0NvbmRpdGlvbmFs
PVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2xlYW4gYWxsb3dl
ZCk7Ci0gICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIE1vY2tSVENSdHBUcmFuc2Zvcm0gY3JlYXRl
TW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bnNpZ25l
ZCBsb25nIGxvbmcgc2ZyYW1lQ291bnRlcihSVENSdHBTRnJhbWVUcmFuc2Zvcm0gdHJhbnNmb3Jt
KTsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU1dIHVuZGVmaW5lZCBzZXRNb2NrQXVk
aW9UcmFja0NoYW5uZWxOdW1iZXIoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgdW5zaWduZWQgc2hv
cnQgY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9y
bS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkM2ExNmE4NGU4ZWQ5YTI3ZDgw
YzE0YWI4ZmNmODViMzAyZmJkNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1v
Y2tSVENSdHBUcmFuc2Zvcm0uaCIKLQotI2lmIEVOQUJMRShXRUJfUlRDKQotCi0jaW5jbHVkZSAi
UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm1lciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxNb2NrUlRDUnRwVHJhbnNmb3JtZXIsIFdURjo6RGVzdHJ1
Y3Rpb25UaHJlYWQ6Ok1haW4+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1vY2tSVENSdHBU
cmFuc2Zvcm1lcj4gY3JlYXRlKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmIGJhY2tlbmQp
Ci0gICAgewotICAgICAgICBhdXRvIHRyYW5zZm9ybWVyID0gYWRvcHRSZWYoKm5ldyBNb2NrUlRD
UnRwVHJhbnNmb3JtZXIoV1RGTW92ZShiYWNrZW5kKSkpOwotICAgICAgICB0cmFuc2Zvcm1lci0+
bV9iYWNrZW5kLT5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXJdKGF1
dG8mJiBmcmFtZSkgewotICAgICAgICAgICAgdHJhbnNmb3JtZXItPnRyYW5zZm9ybShXVEZNb3Zl
KGZyYW1lKSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm4gdHJhbnNmb3JtZXI7Ci0gICAg
fQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX2JhY2tlbmQtPmNsZWFyVHJh
bnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soKTsKLSAgICAgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsK
LSAgICB9Ci0KLSAgICB2b2lkIHRyYW5zZm9ybShSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUmJiBm
cmFtZSkKLSAgICB7Ci0gICAgICAgIG1faXNQcm9jZXNzaW5nID0gdHJ1ZTsKLQotICAgICAgICBh
dXRvIGRhdGEgPSBmcmFtZS5kYXRhKCk7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2Zv
cm1lZERhdGE7Ci0gICAgICAgIHNpemVfdCBzdGFydCA9IG1faXNBdWRpbyA/IDAgOiAxMDA7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGNwdHIgPSAwOyBjcHRyIDwgc3RhcnQ7ICsrY3B0cikKLSAgICAg
ICAgICAgIHRyYW5zZm9ybWVkRGF0YS5hcHBlbmQoZGF0YS5kYXRhW2NwdHJdKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgY3B0ciA9IHN0YXJ0OyBjcHRyIDwgZGF0YS5zaXplOyArK2NwdHIpCi0gICAg
ICAgICAgICB0cmFuc2Zvcm1lZERhdGEuYXBwZW5kKDI1NiAtIGRhdGEuZGF0YVtjcHRyXSk7Ci0g
ICAgICAgIGZyYW1lLnNldERhdGEoeyB0cmFuc2Zvcm1lZERhdGEuZGF0YSgpLCBkYXRhLnNpemUg
fSk7Ci0KLSAgICAgICAgbV9iYWNrZW5kLT5wcm9jZXNzVHJhbnNmb3JtZWRGcmFtZShXVEZNb3Zl
KGZyYW1lKSk7Ci0gICAgfQotCi0gICAgYm9vbCBpc1Byb2Nlc3NpbmcoKSBjb25zdCB7IHJldHVy
biBtX2lzUHJvY2Vzc2luZzsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IE1vY2tSVENSdHBU
cmFuc2Zvcm1lcihSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5kKQotICAgICAg
ICA6IG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQotICAgICAgICAsIG1faXNTZW5kZXIobV9i
YWNrZW5kLT5zaWRlKCkgPT0gUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6U2lkZTo6U2VuZGVyKQot
ICAgICAgICAsIG1faXNBdWRpbyhtX2JhY2tlbmQtPm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5z
Zm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pCi0gICAgewotICAgIH0KLQotICAgIFJlZlB0
cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX2JhY2tlbmQ7Ci0gICAgYm9vbCBtX2lzU2VuZGVy
OwotICAgIGJvb2wgbV9pc0F1ZGlvOwotICAgIGJvb2wgbV9pc1Byb2Nlc3NpbmcgeyBmYWxzZSB9
OwotfTsKLQotTW9ja1JUQ1J0cFRyYW5zZm9ybTo6TW9ja1JUQ1J0cFRyYW5zZm9ybSgpCi17Ci19
Ci0KLU1vY2tSVENSdHBUcmFuc2Zvcm06On5Nb2NrUlRDUnRwVHJhbnNmb3JtKCkKLXsKLX0KLQot
Ym9vbCBNb2NrUlRDUnRwVHJhbnNmb3JtOjppc1Byb2Nlc3NpbmcoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3RyYW5zZm9ybWVyID8gbV90cmFuc2Zvcm1lci0+aXNQcm9jZXNzaW5nKCkgOiBmYWxz
ZTsKLX0KLQotdm9pZCBNb2NrUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclJl
Y2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCi17Ci0gICAgbV90cmFuc2Zv
cm1lciA9IE1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6Y3JlYXRlKGJhY2tlbmQpOwotfQotCi12b2lk
IE1vY2tSVENSdHBUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCi17Ci0gICAgbV90cmFuc2Zvcm1lciA9IE1vY2tSVENS
dHBUcmFuc2Zvcm1lcjo6Y3JlYXRlKGJhY2tlbmQpOwotfQotCi12b2lkIE1vY2tSVENSdHBUcmFu
c2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpCi17Ci0gICAg
bV90cmFuc2Zvcm1lci0+Y2xlYXIoKTsKLSAgICBtX3RyYW5zZm9ybWVyID0gbnVsbHB0cjsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA0ZDk5NGRmZjcxNzQzMjM1MzUxZjhmMGEzMzk2ZmM1OWExY2Fk
MjkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0KLSNpbmNsdWRlICJSVENS
dHBUcmFuc2Zvcm0uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNb2NrUlRDUnRw
VHJhbnNmb3JtZXI7Ci0KLWNsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMg
UlRDUnRwVHJhbnNmb3JtIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1vY2tSVENSdHBUcmFu
c2Zvcm0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1JUQ1J0cFRyYW5zZm9y
bSgpKTsgfQotICAgIH5Nb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0KLSAgICBib29sIGlzUHJvY2Vz
c2luZygpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIE1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLQot
ICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kJikgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsKLQotICAgIFJlZlB0cjxNb2NrUlRDUnRwVHJhbnNm
b3JtZXI+IG1fdHJhbnNmb3JtZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tS
VENSdHBUcmFuc2Zvcm0uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTYzMTg3
NjA1OTRiNjlmMjdhMDFkNjVlMDg4OTgwNWYzMzc0MWMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0
cFRyYW5zZm9ybS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdF
Ql9SVEMsCi0gICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCi0gICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LAotICAgIExlZ2FjeU5vSW50ZXJmYWNlT2JqZWN0LAotXSBpbnRlcmZhY2UgTW9ja1JU
Q1J0cFRyYW5zZm9ybSA6IFJUQ1J0cFRyYW5zZm9ybSB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gaXNQcm9jZXNzaW5nOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZWYxZDhiY2FkYTI1YmMy
NWYxNTE3ZTc4ODllMjQxYzNlNDllM2RhZS4uMTU5OWNjYzkzZTQ2MmQyMGU2OWIzZDkxNGE2OTA1
MDczYTdhYjc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTM1LDcgKzM1LDEwIEBACiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSAiSlNSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lci5oIgorI2luY2x1ZGUgIkpTUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgiCiAjaW5jbHVkZSAiUmVxdWVzdEFuaW1hdGlvbkZyYW1l
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQpAQCAtMTEyLDQgKzExNSw3MiBAQCB2b2lkIERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlOjpjYW5jZWxBbmltYXRpb25GcmFtZShDYWxsYmFja0lkIGNhbGxiYWNrSWQpCiB9
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGU6OnJlZ2lzdGVyUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoU3Ry
aW5nJiYgbmFtZSwgUmVmPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvcj4mJiB0
cmFuc2Zvcm1lckNvbnN0cnVjdG9yKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsICJOYW1lIGNhbm5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIl9zIH07CisK
KyAgICBpZiAobV9ydGNSdHBUcmFuc2Zvcm1lckNvbnN0cnVjdG9yTWFwLmNvbnRhaW5zKG5hbWUp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJBIHRyYW5z
Zm9ybWVyIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIG5hbWUiX3MgfTsKKworICAg
IEpTQzo6SlNPYmplY3QqIGpzQ29uc3RydWN0b3IgPSB0cmFuc2Zvcm1lckNvbnN0cnVjdG9yLT5j
YWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBp
ZiAoIWpzQ29uc3RydWN0b3ItPmlzQ29uc3RydWN0b3Iodm0pKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCAiQ2xhc3MgZGVmaW5pdGl0aW9uIHBhc3NlZCB0byByZWdpc3Rl
clJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCkgaXMgbm90IGEgY29uc3RydWN0b3IiX3MgfTsKKwor
ICAgIGF1dG8gcHJvdG90eXBlID0ganNDb25zdHJ1Y3Rvci0+Z2V0UHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4
aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisKKyAgICBpZiAoIXByb3RvdHlwZS5pc09iamVjdCgp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiQ2xhc3MgZGVmaW5pdGl0
aW9uIHBhc3NlZCB0byByZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCkgaGFzIGludmFs
aWQgcHJvdG90eXBlIl9zIH07CisKKyAgICBtX3J0Y1J0cFRyYW5zZm9ybWVyQ29uc3RydWN0b3JN
YXAuYWRkKG5hbWUsIFdURk1vdmUodHJhbnNmb3JtZXJDb25zdHJ1Y3RvcikpOworCisgICAgdGhy
ZWFkKCkud29ya2VyT2JqZWN0UHJveHkoKS5wb3N0VGFza1RvV29ya2VyT2JqZWN0KFtuYW1lID0g
bmFtZS5pc29sYXRlZENvcHkoKV0oYXV0byYgd29ya2VyKSBtdXRhYmxlIHsKKyAgICAgICAgd29y
a2VyLmFkZFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFdURk1vdmUobmFtZSkpOworICAgIH0pOwor
CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiBE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIo
U3RyaW5nJiYgbmFtZSwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCBwb3J0KQoreworICAgIGF1dG8g
Y29uc3RydWN0b3IgPSBtX3J0Y1J0cFRyYW5zZm9ybWVyQ29uc3RydWN0b3JNYXAuZ2V0KG5hbWUp
OworICAgIEFTU0VSVChjb25zdHJ1Y3Rvcik7CisgICAgaWYgKCFjb25zdHJ1Y3RvcikKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBqc0NvbnN0cnVjdG9yID0gY29uc3RydWN0
b3ItPmNhbGxiYWNrRGF0YSgpLT5jYWxsYmFjaygpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGNvbnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sgeyBnbG9iYWxPYmplY3QgfTsK
KworICAgIG1fcGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydCA9IE1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZSgqdGhpcywgV1RGTW92ZShwb3J0KSk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3M7CisgICAgYXV0byogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3QoZ2xvYmFsT2Jq
ZWN0LCBqc0NvbnN0cnVjdG9yLCBhcmdzLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lciIpOworICAgIEFTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFvYmpl
Y3QpOworCisgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKKworICAgIGF1dG8mIGpzVHJhbnNmb3JtZXIg
PSAqSlNDOjpqc0Nhc3Q8SlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcio+KG9iamVjdCk7CisgICAg
YXV0byYgdHJhbnNmb3JtZXIgPSBqc1RyYW5zZm9ybWVyLndyYXBwZWQoKTsKKyAgICB0cmFuc2Zv
cm1lci5zZXRDYWxsYmFjayhtYWtlVW5pcXVlPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPigmanNUcmFu
c2Zvcm1lciwgZ2xvYmFsT2JqZWN0KSk7CisKKyAgICByZXR1cm4gJnRyYW5zZm9ybWVyOworfQor
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGNhYWQ0Y2ViYTU4
YmE4MzMyZDVlOWE2MDNkZTEyNjI2M2RhZWE3NTcuLjAxOGY0YWEwOTU1NGYyNzg3MWFlNDliOGE4
OWNhMmY0NTBkNGQ0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiBjbGFz
cyBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ7CitjbGFzcyBKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Q29uc3RydWN0b3I7CiBjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyOwogY2xhc3MgUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2s7CiBjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CiAKQEAgLTU0LDYgKzU2LDggQEAgY2xhc3MgV29ya2VyQW5pbWF0
aW9uQ29udHJvbGxlcjsKIHVzaW5nIENhbGxiYWNrSWQgPSBpbnQ7CiAjZW5kaWYKIAordXNpbmcg
VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllcj47CisKIGNsYXNzIERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlIGZpbmFsIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKTsK
IHB1YmxpYzoKQEAgLTcxLDYgKzc1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbEFuaW1h
dGlvbkZyYW1lKENhbGxiYWNrSWQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAg
ICBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+IGNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKFN0cmluZyYmLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0KTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiByZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFN0cmluZyYmLCBSZWY8SlNS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yPiYmKTsKKyAgICBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+IHRha2VQZW5kaW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0KCkgeyByZXR1cm4gV1RG
TW92ZShtX3BlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQpOyB9CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICB1c2luZyBCYXNlID0gV29ya2VyR2xvYmFsU2NvcGU7CiAKQEAgLTg1LDYgKzk1
LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCiAgICAgUmVmUHRy
PFdvcmtlckFuaW1hdGlvbkNvbnRyb2xsZXI+IG1fd29ya2VyQW5pbWF0aW9uQ29udHJvbGxlcjsK
ICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8
SlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yPj4gbV9ydGNSdHBUcmFuc2Zvcm1l
ckNvbnN0cnVjdG9yTWFwOworICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gbV9wZW5kaW5nUlRDVHJh
bnNmb21lck1lc3NhZ2VQb3J0OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaWRsCmluZGV4IDJkMGNlODI5NTFmYmU5OTdhOGJiNThhN2Q2YjhmODNkZjYxNTY3NzEu
LjhjZTM4NDJjMjgzNWYxNzgyMzI4MWM1NGMzNjcwMjU3ZmY1MTM0ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsCkBA
IC00OCwzICs0OCw1IEBACiB9OwogCiBbQ29uZGl0aW9uYWw9T0ZGU0NSRUVOX0NBTlZBUywgRW5h
YmxlZEF0UnVudGltZT1PZmZzY3JlZW5DYW52YXNdIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
IGluY2x1ZGVzIEFuaW1hdGlvbkZyYW1lUHJvdmlkZXI7CisvLyBGSVhNRTogRW5hYmxlIHRoaXMg
YmFzZWQgb24gV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMgc2V0dGluZy4KK1tDb25kaXRpb25hbD1X
RUJfUlRDXSBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBpbmNsdWRlcyBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1Qcm92aWRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCA4MDgzMzVk
MDI3NDFmYzk4Mzk1ZDljZDI3OWViZTU5YzIzMzAwZTE0Li42MmY5MTdhMzY3ODE5ZGVjM2NkNDEw
ZDk3NjY5NWNlZTYyZjZkNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKKyNp
bmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXb3JrZXJHbG9i
YWxTY29wZVByb3h5LmgiCkBAIC0yMzAsNCArMjMxLDI4IEBAIHZvaWQgV29ya2VyOjpkaXNwYXRj
aEV2ZW50KEV2ZW50JiBldmVudCkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKK3Zv
aWQgV29ya2VyOjphZGRSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJiBuYW1lKQorewor
ICAgIG1fdHJhbnNmb3JtZXJzLmFkZChXVEZNb3ZlKG5hbWUpKTsKK30KKwordm9pZCBXb3JrZXI6
OmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKGNvbnN0IFN0cmluZyYgbmFtZSwgVHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydCBwb3J0LCBSVENSdHBTY3JpcHRUcmFuc2Zvcm0mIHRyYW5zZm9ybSkK
K3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9jb250ZXh0UHJveHkucG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFtuYW1lID0g
bmFtZS5pc29sYXRlZENvcHkoKSwgcG9ydCwgdHJhbnNmb3JtID0gbWFrZVJlZih0cmFuc2Zvcm0p
XShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgdHJhbnNmb3JtLT5zZXRUcmFuc2Zv
cm1lcihkb3duY2FzdDxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuY3JlYXRl
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoV1RGTW92ZShuYW1lKSwgcG9ydCkpOworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0cmFuc2Zvcm0gPSBXVEZNb3ZlKHRyYW5zZm9ybSldIHsgfSk7Cisg
ICAgfSk7CisKK30KKwordm9pZCBXb3JrZXI6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShG
dW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQoreworICAgIG1f
Y29udGV4dFByb3h5LnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShXVEZNb3ZlKHRhc2spKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
aAppbmRleCA2N2Y0YjJiNThhYjVhZGVmZjZmY2QxY2Q5NTlkNGI2M2I5ZmY1OTVkLi41M2Y1ZTZm
ZmYyN2M5ZmEzZTVjMGUwMWYwZjZjNDJjNmNiNmY5ZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgSlNWYWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm07CitjbGFzcyBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXb3JrZXJHbG9i
YWxTY29wZVByb3h5OwogY2xhc3MgV29ya2VyU2NyaXB0TG9hZGVyOwpAQCAtNzAsNiArNzIsMTMg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50JikgZmluYWw7CiAKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKyAgICB2b2lkIGFkZFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFN0
cmluZyYmKTsKKyAgICBib29sIGhhc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKGNvbnN0IFN0cmlu
ZyYgbmFtZSkgeyByZXR1cm4gbV90cmFuc2Zvcm1lcnMuY29udGFpbnMobmFtZSk7IH0KKyAgICB2
b2lkIGNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKGNvbnN0IFN0cmluZyYsIFRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQsIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSYpOworICAgIHZvaWQgcG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdvcmtlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgSlNDOjpSdW50aW1lRmxhZ3MsIGNvbnN0IE9wdGlvbnMmKTsKIApA
QCAtMTAwLDYgKzEwOSw5IEBAIHByaXZhdGU6CiAgICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50
aW1lRmxhZ3M7CiAgICAgRGVxdWU8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwogICAg
IGJvb2wgbV93YXNUZXJtaW5hdGVkIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAg
ICBIYXNoU2V0PFN0cmluZz4gbV90cmFuc2Zvcm1lcnM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZVByb3h5LmgKaW5kZXggNTZkYTEyMDdiNzc3OWYyZWE3YmFlNmFiNzM2ZjlkMmM5NTRmNzI0
NC4uNDAwMDNjM2UwMTA5OTk2MGY2NDc4NjFlNzAxNjg3ZDBlMzcxZDcyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAgLTMzLDExICsz
MywxMyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9SdW50aW1lRmxhZ3MuaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKK2NsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXb3JrZXI7CiBlbnVtIGNsYXNzIFJlZmVycmVy
UG9saWN5IDogdWludDhfdDsKIApAQCAtNDksNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNv
bnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIEpTQzo6UnVudGlt
ZUZsYWdzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3Bl
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUo
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFz
a1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik+JiYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmlu
ZGV4IGE2MWI0MTQ4NjMzYmRmMjBkNTJiZTU3NjRkYTliNTU0ZTE2MTBkN2QuLjExZmUwNmZjNmEz
NmQ4NGNlN2MyZWFlZWYzOWVjZjYxNDk0MjM1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xMTAsMjQgKzExMCwzOCBAQCB2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbQogICAgIH0pOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiBtZXNzYWdlKQordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1dvcmtl
ck9iamVjdChGdW5jdGlvbjx2b2lkKFdvcmtlciYpPiYmIGZ1bmN0aW9uKQogewotICAgIGlmICht
X2Fza2VkVG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShh
dXRvJikgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIHdvcmtlck9iamVjdCA9IHRoaXMtPndvcmtl
ck9iamVjdCgpOworICAgICAgICBpZiAoIXdvcmtlck9iamVjdCB8fCBhc2tlZFRvVGVybWluYXRl
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZ1bmN0aW9uKCp3b3JrZXJPYmplY3Qp
OworICAgIH0pOworfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtt
ZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlw
dENvbnRleHQpIG11dGFibGUgewordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3Nh
Z2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkK
K3sKKyAgICBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW21lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpXShhdXRvJiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOwogICAgICAgICBhdXRvJiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUmPihzY3JpcHRDb250ZXh0KTsKICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFu
c2ZlcnJlZFBvcnRzKSk7CiAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxs
KCkpKTsKICAgICAgICAgY29udGV4dC50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZp
cm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0Lmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsK
ICAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tUb1dvcmtl
ckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRh
c2spCit7CisgICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKG1fd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VD
b3VudDsKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3Zl
KHRhc2spKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoIW1fd29ya2VyVGhyZWFkKSB7CiAgICAgICAg
IG1fcXVldWVkRWFybHlUYXNrcy5hcHBlbmQobWFrZVVuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPihXVEZNb3ZlKHRhc2spKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
KyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OworICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAppbmRleCAzYmI0ZDlkODE1YTIwOTE0YWQ5ZjI1YjM0
YTg3Y2E5MWUxYzg1YmFkLi5jNWI1NzViOWU2MTViM2YzZjU5NmJmYzNkZjY4M2M4NzdjYzYyYmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCkBA
IC01Myw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNz
TWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4s
IFJlZmVycmVyUG9saWN5LCBKU0M6OlJ1bnRpbWVGbGFncykgZmluYWw7CiAgICAgdm9pZCB0ZXJt
aW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIGZpbmFsOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOworICAgIHZv
aWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpPiYmKSBmaW5hbDsKICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0IGZpbmFsOwogICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgZmluYWw7CiAgICAg
dm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGluZSkgZmluYWw7CkBAIC02
Miw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgV29ya2VyT2Jq
ZWN0UHJveHkuCiAgICAgLy8gKE9ubHkgdXNlIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgd29ya2Vy
IGNvbnRleHQgdGhyZWFkLikKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7CisgICAgdm9pZCBwb3N0VGFza1RvV29ya2Vy
T2JqZWN0KEZ1bmN0aW9uPHZvaWQoV29ya2VyJik+JiYpIGZpbmFsOwogICAgIHZvaWQgcG9zdEV4
Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIGZpbmFs
OwogICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KSBmaW5hbDsKICAgICB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9i
amVjdFByb3h5LmgKaW5kZXggMjgwMTMxNGUzNzJkMzBlZTlhY2JlNTRiOTg2OTlkY2VkZjc4Zjlj
YS4uOGU5MWVjNzk0NGYzMjU5YjY3ZDVlNGE1NTg1ZDg1NDRjYmNmNzI4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaApAQCAtMzIsMTQgKzMyLDE5IEBACiAK
ICNpbmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUgIldvcmtlclJl
cG9ydGluZ1Byb3h5LmgiCisKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV29ya2VyOworCiAvLyBBIHBy
b3h5IHRvIHRhbGsgdG8gdGhlIHdvcmtlciBvYmplY3QuCiBjbGFzcyBXb3JrZXJPYmplY3RQcm94
eSA6IHB1YmxpYyBXb3JrZXJSZXBvcnRpbmdQcm94eSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvV29ya2VyT2JqZWN0KEZ1bmN0aW9uPHZv
aWQoV29ya2VyJik+JiYpIHsgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb25maXJtTWVzc2FnZUZy
b21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYjkyMmMyYjAxNzBmNmUxNTM3NTljNTRkNmI3ZTc1N2FmZmM4NDIxNy4uZTc1N2Q5
ZTc2OTcxYjEwYmMwZmVlYWE2ODMyMzVjMWU5MzEwYzdkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDIwLTExLTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgc3VwcG9ydCBmb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkxNDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy9yb3V0aW5l
cy5qczogQWRkZWQuCisgICAgICAgIChjcmVhdGVDb25uZWN0aW9ucyk6CisgICAgICAgICogaHR0
cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanM6IEFkZGVkLgorICAgICAgICAoTW9ja1JU
Q1J0cFRyYW5zZm9ybWVyKToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lci5wcm90b3R5
cGUuc3RhcnQpOgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyLnByb3RvdHlwZS5wcm9j
ZXNzKToKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3Jt
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3Jt
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJh
bnNmb3JtLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvd2VicnRjLXRy
YW5zZm9ybS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0Yy10cmFu
c2Zvcm0uaHRtbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanM6IEFkZGVkLgorICAgICAgICAoTW9j
a1JUQ1J0cFRyYW5zZm9ybWVyKToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lci5wcm90
b3R5cGUuc3RhcnQpOgorCiAyMDIwLTExLTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBUZXh0RW5jb2RlclN0cmVhbUVuY29kZXIgc2hvdWxkIG5vdCBiZSBl
eHBvc2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvcm91dGluZXMu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvcm91dGluZXMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDhkYjcyZjY1ZDE3Njk2MWVhNzk3YzlkYzQ4MmJkMGI1MWVmOTNiMgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9yb3V0aW5lcy5qcwpAQCAtMCwwICsxLDI5
OSBAQAorLy8gVGVzdCBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vd2VicnRjLmdpdGh1Yi5pby9zYW1w
bGVzLwordmFyIGxvY2FsQ29ubmVjdGlvbjsKK3ZhciByZW1vdGVDb25uZWN0aW9uOworCitmdW5j
dGlvbiBjcmVhdGVDb25uZWN0aW9ucyhzZXR1cExvY2FsQ29ubmVjdGlvbiwgc2V0dXBSZW1vdGVD
b25uZWN0aW9uLCBvcHRpb25zID0geyB9KSB7CisgICAgbG9jYWxDb25uZWN0aW9uID0gbmV3IFJU
Q1BlZXJDb25uZWN0aW9uKCk7CisgICAgcmVtb3RlQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworICAgIHJlbW90ZUNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQp
ID0+IHsgaWNlQ2FsbGJhY2syKGV2ZW50LCBvcHRpb25zLmZpbHRlck91dElDRUNhbmRpZGF0ZSkg
fTsKKworICAgIGxvY2FsQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4geyBp
Y2VDYWxsYmFjazEoZXZlbnQsIG9wdGlvbnMuZmlsdGVyT3V0SUNFQ2FuZGlkYXRlKSB9OworCisg
ICAgUHJvbWlzZS5yZXNvbHZlKHNldHVwTG9jYWxDb25uZWN0aW9uKGxvY2FsQ29ubmVjdGlvbikp
LnRoZW4oKCkgPT4geworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNldHVwUmVtb3Rl
Q29ubmVjdGlvbihyZW1vdGVDb25uZWN0aW9uKSk7CisgICAgfSkudGhlbigoKSA9PiB7CisgICAg
ICAgIGxvY2FsQ29ubmVjdGlvbi5jcmVhdGVPZmZlcigpLnRoZW4oKGRlc2MpID0+IGdvdERlc2Ny
aXB0aW9uMShkZXNjLCBvcHRpb25zKSwgb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25FcnJvcik7
CisgICAgfSk7CisKKyAgICByZXR1cm4gW2xvY2FsQ29ubmVjdGlvbiwgcmVtb3RlQ29ubmVjdGlv
bl0KK30KKworZnVuY3Rpb24gY2xvc2VDb25uZWN0aW9ucygpCit7CisgICAgbG9jYWxDb25uZWN0
aW9uLmNsb3NlKCk7CisgICAgcmVtb3RlQ29ubmVjdGlvbi5jbG9zZSgpOworfQorCitmdW5jdGlv
biBvbkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkVycm9yKGVycm9yKQoreworICAgIGFzc2VydF91
bnJlYWNoZWQoKTsKK30KKworZnVuY3Rpb24gZ290RGVzY3JpcHRpb24xKGRlc2MsIG9wdGlvbnMp
Cit7CisgICAgaWYgKG9wdGlvbnMub2JzZXJ2ZU9mZmVyKSB7CisgICAgICAgIGNvbnN0IHJlc3Vs
dCA9IG9wdGlvbnMub2JzZXJ2ZU9mZmVyKGRlc2MpOworICAgICAgICBpZiAocmVzdWx0KQorICAg
ICAgICAgICAgZGVzYyA9IHJlc3VsdDsKKyAgICB9CisKKyAgICBsb2NhbENvbm5lY3Rpb24uc2V0
TG9jYWxEZXNjcmlwdGlvbihkZXNjKTsKKyAgICByZW1vdGVDb25uZWN0aW9uLnNldFJlbW90ZURl
c2NyaXB0aW9uKGRlc2MpLnRoZW4oKCkgPT4geworICAgICAgICByZW1vdGVDb25uZWN0aW9uLmNy
ZWF0ZUFuc3dlcigpLnRoZW4oKGRlc2MpID0+IGdvdERlc2NyaXB0aW9uMihkZXNjLCBvcHRpb25z
KSwgb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25FcnJvcik7CisgICAgfSk7Cit9CisKK2Z1bmN0
aW9uIGdvdERlc2NyaXB0aW9uMihkZXNjLCBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLm9i
c2VydmVBbnN3ZXIpCisgICAgICAgIG9wdGlvbnMub2JzZXJ2ZUFuc3dlcihkZXNjKTsKKworICAg
IHJlbW90ZUNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihkZXNjKTsKKyAgICBsb2NhbENv
bm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzYyk7Cit9CisKK2Z1bmN0aW9uIGljZUNh
bGxiYWNrMShldmVudCwgZmlsdGVyT3V0SUNFQ2FuZGlkYXRlKQoreworICAgIGlmIChmaWx0ZXJP
dXRJQ0VDYW5kaWRhdGUgJiYgZmlsdGVyT3V0SUNFQ2FuZGlkYXRlKGV2ZW50LmNhbmRpZGF0ZSkp
CisgICAgICAgIHJldHVybjsKKworICAgIHJlbW90ZUNvbm5lY3Rpb24uYWRkSWNlQ2FuZGlkYXRl
KGV2ZW50LmNhbmRpZGF0ZSkudGhlbihvbkFkZEljZUNhbmRpZGF0ZVN1Y2Nlc3MsIG9uQWRkSWNl
Q2FuZGlkYXRlRXJyb3IpOworfQorCitmdW5jdGlvbiBpY2VDYWxsYmFjazIoZXZlbnQsIGZpbHRl
ck91dElDRUNhbmRpZGF0ZSkKK3sKKyAgICBpZiAoZmlsdGVyT3V0SUNFQ2FuZGlkYXRlICYmIGZp
bHRlck91dElDRUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpKQorICAgICAgICByZXR1cm47CisK
KyAgICBsb2NhbENvbm5lY3Rpb24uYWRkSWNlQ2FuZGlkYXRlKGV2ZW50LmNhbmRpZGF0ZSkudGhl
bihvbkFkZEljZUNhbmRpZGF0ZVN1Y2Nlc3MsIG9uQWRkSWNlQ2FuZGlkYXRlRXJyb3IpOworfQor
CitmdW5jdGlvbiBvbkFkZEljZUNhbmRpZGF0ZVN1Y2Nlc3MoKQoreworfQorCitmdW5jdGlvbiBv
bkFkZEljZUNhbmRpZGF0ZUVycm9yKGVycm9yKQoreworICAgIGNvbnNvbGUubG9nKCJhZGRJY2VD
YW5kaWRhdGUgZXJyb3I6ICIgKyBlcnJvcikKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIHJlbmVnb3RpYXRlKHBjMSwgcGMyKQoreworICAgIGxldCBkID0gYXdh
aXQgcGMxLmNyZWF0ZU9mZmVyKCk7CisgICAgYXdhaXQgcGMxLnNldExvY2FsRGVzY3JpcHRpb24o
ZCk7CisgICAgYXdhaXQgcGMyLnNldFJlbW90ZURlc2NyaXB0aW9uKGQpOworICAgIGQgPSBhd2Fp
dCBwYzIuY3JlYXRlQW5zd2VyKCk7CisgICAgYXdhaXQgcGMxLnNldFJlbW90ZURlc2NyaXB0aW9u
KGQpOworICAgIGF3YWl0IHBjMi5zZXRMb2NhbERlc2NyaXB0aW9uKGQpOworfQorCitmdW5jdGlv
biBhbmFseXNlQXVkaW8oc3RyZWFtLCBkdXJhdGlvbiwgY29udGV4dCkKK3sKKyAgICByZXR1cm4g
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB2YXIgc291cmNlTm9k
ZSA9IGNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2Uoc3RyZWFtKTsKKworICAgICAgICB2
YXIgYW5hbHlzZXIgPSBjb250ZXh0LmNyZWF0ZUFuYWx5c2VyKCk7CisgICAgICAgIHZhciBnYWlu
ID0gY29udGV4dC5jcmVhdGVHYWluKCk7CisKKyAgICAgICAgdmFyIHJlc3VsdHMgPSB7IGhlYXJk
SHVtOiBmYWxzZSwgaGVhcmRCaXA6IGZhbHNlLCBoZWFyZEJvcDogZmFsc2UsIGhlYXJkTm9pc2U6
IGZhbHNlIH07CisKKyAgICAgICAgYW5hbHlzZXIuZmZ0U2l6ZSA9IDIwNDg7CisgICAgICAgIGFu
YWx5c2VyLnNtb290aGluZ1RpbWVDb25zdGFudCA9IDA7CisgICAgICAgIGFuYWx5c2VyLm1pbkRl
Y2liZWxzID0gLTEwMDsKKyAgICAgICAgYW5hbHlzZXIubWF4RGVjaWJlbHMgPSAwOworICAgICAg
ICBnYWluLmdhaW4udmFsdWUgPSAwOworCisgICAgICAgIHNvdXJjZU5vZGUuY29ubmVjdChhbmFs
eXNlcik7CisgICAgICAgIGFuYWx5c2VyLmNvbm5lY3QoZ2Fpbik7CisgICAgICAgIGdhaW4uY29u
bmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKworICAgICAgIGZ1bmN0aW9uIGFuYWx5c2UoKSB7
CisgICAgICAgICAgIHZhciBmcmVxRG9tYWluID0gbmV3IFVpbnQ4QXJyYXkoYW5hbHlzZXIuZnJl
cXVlbmN5QmluQ291bnQpOworICAgICAgICAgICBhbmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0
YShmcmVxRG9tYWluKTsKKworICAgICAgICAgICB2YXIgaGFzRnJlcXVlbmN5ID0gZXhwZWN0ZWRG
cmVxdWVuY3kgPT4geworICAgICAgICAgICAgICAgIHZhciBiaW4gPSBNYXRoLmZsb29yKGV4cGVj
dGVkRnJlcXVlbmN5ICogYW5hbHlzZXIuZmZ0U2l6ZSAvIGNvbnRleHQuc2FtcGxlUmF0ZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJpbiA8IGZyZXFEb21haW4ubGVuZ3RoICYmIGZyZXFEb21h
aW5bYmluXSA+PSAxMDA7CisgICAgICAgICAgIH07CisKKyAgICAgICAgICAgaWYgKCFyZXN1bHRz
LmhlYXJkSHVtKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuaGVhcmRIdW0gPSBoYXNGcmVxdWVu
Y3koMTUwKTsKKworICAgICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmRCaXApCisgICAgICAgICAg
ICAgICByZXN1bHRzLmhlYXJkQmlwID0gaGFzRnJlcXVlbmN5KDE1MDApOworCisgICAgICAgICAg
IGlmICghcmVzdWx0cy5oZWFyZEJvcCkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmhlYXJkQm9w
ID0gaGFzRnJlcXVlbmN5KDUwMCk7CisKKyAgICAgICAgICAgaWYgKCFyZXN1bHRzLmhlYXJkTm9p
c2UpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5oZWFyZE5vaXNlID0gaGFzRnJlcXVlbmN5KDMw
MDApOworCisgICAgICAgICAgIGlmIChyZXN1bHRzLmhlYXJkSHVtICYmIHJlc3VsdHMuaGVhcmRC
aXAgJiYgcmVzdWx0cy5oZWFyZEJvcCAmJiByZXN1bHRzLmhlYXJkTm9pc2UpCisgICAgICAgICAg
ICAgICAgZG9uZSgpOworICAgICAgICB9OworCisgICAgICAgZnVuY3Rpb24gZG9uZSgpIHsKKyAg
ICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTsKKyAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoaW50ZXJ2YWwpOworICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHRzKTsKKyAgICAgICB9CisK
KyAgICAgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGRvbmUsIDMgKiBkdXJhdGlvbik7Cisg
ICAgICAgIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKGFuYWx5c2UsIGR1cmF0aW9uIC8gMzAp
OworICAgICAgICBhbmFseXNlKCk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3IoZHVy
YXRpb24pCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0
KHJlc29sdmUsIGR1cmF0aW9uKSk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JWaWRlb1NpemUodmlk
ZW8sIHdpZHRoLCBoZWlnaHQsIGNvdW50KQoreworICAgIGlmICh2aWRlby52aWRlb1dpZHRoID09
PSB3aWR0aCAmJiB2aWRlby52aWRlb0hlaWdodCA9PT0gaGVpZ2h0KQorICAgICAgICByZXR1cm4g
UHJvbWlzZS5yZXNvbHZlKCJ2aWRlbyBoYXMgZXhwZWN0ZWQgc2l6ZSIpOworCisgICAgaWYgKGNv
dW50ID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvdW50ID0gMDsKKyAgICBpZiAoKytjb3VudCA+
IDIwKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoIndhaXRGb3JWaWRlb1NpemUgdGlt
ZWQgb3V0LCBleHBlY3RlZCAiICsgd2lkdGggKyAieCIrIGhlaWdodCArICIgYnV0IGdvdCAiICsg
dmlkZW8udmlkZW9XaWR0aCArICJ4IiArIHZpZGVvLnZpZGVvSGVpZ2h0KTsKKworICAgIHJldHVy
biB3YWl0Rm9yKDEwMCkudGhlbigoKSA9PiB7CisgICAgICAgIHJldHVybiB3YWl0Rm9yVmlkZW9T
aXplKHZpZGVvLCB3aWR0aCwgaGVpZ2h0LCBjb3VudCk7CisgICAgfSk7Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIGRvSHVtQW5hbHlzaXMoc3RyZWFtLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgY29udGV4
dCA9IG5ldyBBdWRpb0NvbnRleHQoKTsKKyAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IDIw
OyBjcHRyKyspIHsKKyAgICAgICAgdmFyIHJlc3VsdHMgPSBhd2FpdCBhbmFseXNlQXVkaW8oc3Ry
ZWFtLCAyMDAsIGNvbnRleHQpOworICAgICAgICBpZiAocmVzdWx0cy5oZWFyZEh1bSA9PT0gZXhw
ZWN0ZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcig1
MCk7CisgICAgfQorICAgIGF3YWl0IGNvbnRleHQuY2xvc2UoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Z1bmN0aW9uIGlzVmlkZW9CbGFjayhjYW52YXMsIHZpZGVvLCBzdGFydFgsIHN0YXJ0
WSwgZ3JhYmJlZFdpZHRoLCBncmFiYmVkSGVpZ2h0KQoreworICAgIGNhbnZhcy53aWR0aCA9IHZp
ZGVvLnZpZGVvV2lkdGg7CisgICAgY2FudmFzLmhlaWdodCA9IHZpZGVvLnZpZGVvSGVpZ2h0Owor
ICAgIGlmICghZ3JhYmJlZEhlaWdodCkgeworICAgICAgICBzdGFydFggPSAxMDsKKyAgICAgICAg
c3RhcnRZID0gMTA7CisgICAgICAgIGdyYWJiZWRXaWR0aCA9IGNhbnZhcy53aWR0aCAtIDIwOwor
ICAgICAgICBncmFiYmVkSGVpZ2h0ID0gY2FudmFzLmhlaWdodCAtIDIwOworICAgIH0KKworICAg
IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndp
ZHRoLCBjYW52YXMuaGVpZ2h0KTsKKworICAgIGltYWdlRGF0YSA9IGNhbnZhcy5nZXRDb250ZXh0
KCcyZCcpLmdldEltYWdlRGF0YShzdGFydFgsIHN0YXJ0WSwgZ3JhYmJlZFdpZHRoLCBncmFiYmVk
SGVpZ2h0KTsKKyAgICBkYXRhID0gaW1hZ2VEYXRhLmRhdGE7CisgICAgZm9yICh2YXIgY3B0ciA9
IDA7IGNwdHIgPCBncmFiYmVkV2lkdGggKiBncmFiYmVkSGVpZ2h0OyArK2NwdHIpIHsKKyAgICAg
ICAgLy8gQXBwcm94aW1hdGl2ZWx5IGJsYWNrIHBpeGVscy4KKyAgICAgICAgaWYgKGRhdGFbNCAq
IGNwdHJdID4gMzAgfHwgZGF0YVs0ICogY3B0ciArIDFdID4gMzAgfHwgZGF0YVs0ICogY3B0ciAr
IDJdID4gMzApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCithc3luYyBmdW5jdGlvbiBjaGVja1ZpZGVvQmxhY2soZXhwZWN0ZWQsIGNhbnZh
cywgdmlkZW8sIGVycm9yTWVzc2FnZSwgY291bnRlcikKK3sKKyAgICBpZiAoaXNWaWRlb0JsYWNr
KGNhbnZhcywgdmlkZW8pID09PSBleHBlY3RlZCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSgpOworCisgICAgaWYgKGNvdW50ZXIgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgY291bnRl
ciA9IDA7CisgICAgaWYgKGNvdW50ZXIgPiA0MDApIHsKKyAgICAgICAgaWYgKCFlcnJvck1lc3Nh
Z2UpCisgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAiY2hlY2tWaWRlb0JsYWNrIHRpbWVkIG91
dCBleHBlY3RpbmcgIiArIGV4cGVjdGVkOworICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3Qo
ZXJyb3JNZXNzYWdlKTsKKyAgICB9CisKKyAgICBhd2FpdCB3YWl0Rm9yKDUwKTsKKyAgICByZXR1
cm4gY2hlY2tWaWRlb0JsYWNrKGV4cGVjdGVkLCBjYW52YXMsIHZpZGVvLCBlcnJvck1lc3NhZ2Us
ICsrY291bnRlcik7Cit9CisKK2Z1bmN0aW9uIHNldENvZGVjKHNkcCwgY29kZWMpCit7CisgICAg
cmV0dXJuIHNkcC5zcGxpdCgnXHJcbicpLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJu
IGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydGNwLWZi
JykgPT09IC0xICYmIChsaW5lLmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xIHx8IGxpbmUuaW5k
ZXhPZihjb2RlYykgIT09IC0xKTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIGdldFR5cGVkU3RhdHMoY29ubmVjdGlvbiwgdHlwZSkKK3sKKyAgICBjb25zdCByZXBv
cnQgPSBhd2FpdCBjb25uZWN0aW9uLmdldFN0YXRzKCk7CisgICAgdmFyIHN0YXRzOworICAgIHJl
cG9ydC5mb3JFYWNoKChzdGF0SXRlbSkgPT4geworICAgICAgICBpZiAoc3RhdEl0ZW0udHlwZSA9
PT0gdHlwZSkKKyAgICAgICAgICAgIHN0YXRzID0gc3RhdEl0ZW07CisgICAgfSk7CisgICAgcmV0
dXJuIHN0YXRzOworfQorCitmdW5jdGlvbiBnZXRSZWNlaXZlZFRyYWNrU3RhdHMoY29ubmVjdGlv
bikKK3sKKyAgICByZXR1cm4gY29ubmVjdGlvbi5nZXRTdGF0cygpLnRoZW4oKHJlcG9ydCkgPT4g
eworICAgICAgICB2YXIgc3RhdHM7CisgICAgICAgIHJlcG9ydC5mb3JFYWNoKChzdGF0SXRlbSkg
PT4geworICAgICAgICAgICAgaWYgKHN0YXRJdGVtLnR5cGUgPT09ICJ0cmFjayIpIHsKKyAgICAg
ICAgICAgICAgICBzdGF0cyA9IHN0YXRJdGVtOworICAgICAgICAgICAgfQorICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuIHN0YXRzOworICAgIH0pOworfQorCithc3luYyBmdW5jdGlvbiBjb21w
dXRlRnJhbWVSYXRlKHN0cmVhbSwgdmlkZW8pCit7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgaW50ZXJuYWxzLm9ic2VydmVNZWRpYVN0cmVhbVRyYWNrKHN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdKTsKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBz
ZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTsgCisgICAgICAgIHJldHVybiBpbnRlcm5hbHMudHJh
Y2tWaWRlb1NhbXBsZUNvdW50OworICAgIH0KKworICAgIGxldCBjb25uZWN0aW9uOworICAgIHZp
ZGVvLnNyY09iamVjdCA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
KyAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAg
ICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
LCBzdHJlYW0pOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAg
ICAgY29ubmVjdGlvbiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBzZWNvbmRDb25u
ZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlc29s
dmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOwor
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7
CisgICAgfSk7CisKKyAgICBhd2FpdCB2aWRlby5wbGF5KCk7CisKKyAgICBjb25zdCBzdGF0czEg
PSBhd2FpdCBnZXRSZWNlaXZlZFRyYWNrU3RhdHMoY29ubmVjdGlvbik7CisgICAgYXdhaXQgbmV3
IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMDApKTsgCisgICAgY29u
c3Qgc3RhdHMyID0gYXdhaXQgZ2V0UmVjZWl2ZWRUcmFja1N0YXRzKGNvbm5lY3Rpb24pOworICAg
IHJldHVybiAoc3RhdHMyLmZyYW1lc1JlY2VpdmVkIC0gc3RhdHMxLmZyYW1lc1JlY2VpdmVkKSAq
IDEwMDAgLyAoc3RhdHMyLnRpbWVzdGFtcCAtIHN0YXRzMS50aW1lc3RhbXApOworfQorCitmdW5j
dGlvbiBzZXRIMjY0QmFzZWxpbmVDb2RlYyhzZHApCit7CisgICAgY29uc3QgbGluZXMgPSBzZHAu
c3BsaXQoJ1xyXG4nKTsKKyAgICBjb25zdCBoMjY0TGluZXMgPSBsaW5lcy5maWx0ZXIobGluZSA9
PiBsaW5lLmluZGV4T2YoImE9Zm10cCIpID09PSAwICYmIGxpbmUuaW5kZXhPZigiNDJlMDFmIikg
IT09IC0xKTsKKyAgICBjb25zdCBiYXNlbGluZU51bWJlciA9IGgyNjRMaW5lc1swXS5zdWJzdHJp
bmcoNikuc3BsaXQoJyAnKVswXTsKKyAgICByZXR1cm4gbGluZXMuZmlsdGVyKGxpbmUgPT4gewor
ICAgICAgICByZXR1cm4gKGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09IC0xICYmIGxpbmUuaW5k
ZXhPZignYT1ydGNwLWZiJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydHBtYXAnKSA9PT0g
LTEpIHx8IGxpbmUuaW5kZXhPZihiYXNlbGluZU51bWJlcikgIT09IC0xOworICAgIH0pLmpvaW4o
J1xyXG4nKTsKK30KKworZnVuY3Rpb24gc2V0SDI2NEhpZ2hDb2RlYyhzZHApCit7CisgICAgY29u
c3QgbGluZXMgPSBzZHAuc3BsaXQoJ1xyXG4nKTsKKyAgICBjb25zdCBoMjY0TGluZXMgPSBsaW5l
cy5maWx0ZXIobGluZSA9PiBsaW5lLmluZGV4T2YoImE9Zm10cCIpID09PSAwICYmIGxpbmUuaW5k
ZXhPZigiNjQwYzFmIikgIT09IC0xKTsKKyAgICBjb25zdCBiYXNlbGluZU51bWJlciA9IGgyNjRM
aW5lc1swXS5zdWJzdHJpbmcoNikuc3BsaXQoJyAnKVswXTsKKyAgICByZXR1cm4gbGluZXMuZmls
dGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gKGxpbmUuaW5kZXhPZignYT1mbXRwJykgPT09
IC0xICYmIGxpbmUuaW5kZXhPZignYT1ydGNwLWZiJykgPT09IC0xICYmIGxpbmUuaW5kZXhPZign
YT1ydHBtYXAnKSA9PT0gLTEpIHx8IGxpbmUuaW5kZXhPZihiYXNlbGluZU51bWJlcikgIT09IC0x
OworICAgIH0pLmpvaW4oJ1xyXG4nKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVjODY1MGM5ZWJmYmMzYmEyZWNl
NTkyZmUxNjc0NGY5NDRkMWJlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2NsYXNzIE1v
Y2tSVENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgdGhpcy5wb3J0Lm9u
bWVzc2FnZSA9IChldmVudCkgPT4gdGhpcy5wb3J0LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEpOwor
ICAgIH0KKyAgICBzdGFydChyZWFkYWJsZVN0cmVhbSwgd3JpdGFibGVTdHJlYW0pCisgICAgewor
ICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJzdGFydGVkIik7CisgICAgICAgIHRoaXMucmVhZGVy
ID0gcmVhZGFibGVTdHJlYW0uZ2V0UmVhZGVyKCk7CisgICAgICAgIHRoaXMud3JpdGVyID0gd3Jp
dGFibGVTdHJlYW0uZ2V0V3JpdGVyKCk7CisgICAgICAgIHRoaXMucHJvY2VzcygpOworICAgIH0K
KworICAgIHByb2Nlc3MoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZWFkZXIucmVhZCgpLnRoZW4o
Y2h1bmsgPT4geworICAgICAgICAgICAgaWYgKGNodW5rLmRvbmUpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiY2h1bmsiKTsKKyAgICAgICAg
ICAgIHRoaXMud3JpdGVyLndyaXRlKGNodW5rLnZhbHVlKTsKKyAgICAgICAgICAgIHRoaXMucHJv
Y2VzcygpOworICAgICAgICB9KTsKKyAgICB9Cit9OworCityZWdpc3RlclJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyKCJNb2NrUlRDUnRwVHJhbnNmb3JtIiwgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKTsK
K3NlbGYucG9zdE1lc3NhZ2UoInJlZ2lzdGVyZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMDBlODZkZGRlMjkzNWQxZjBmNWFjMDJkZDNhODdjNmEyZjc4ZGVlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIENhbm5vdCByZXVzZSBhdHRhY2hlZCB0
cmFuc2Zvcm1zCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJh
bWUtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRy
YW5zZm9ybS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMDQ4ODBkMTQ1YWNmYjgxZDdlOTliZjExMzg0YTA4
NTM1MTMzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMv
c2ZyYW1lLXRyYW5zZm9ybS5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0PgorCitwcm9taXNl
X3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVj
dGlvbigpOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0oKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTRnJhbWVU
cmFuc2Zvcm0oKTsKKyAgICBjb25zdCBzZW5kZXIxID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlv
Jykuc2VuZGVyOworICAgIGNvbnN0IHNlbmRlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8n
KS5zZW5kZXI7CisgICAgY29uc3QgcmVjZWl2ZXIxID0gcGMuZ2V0UmVjZWl2ZXJzKClbMF07Cisg
ICAgY29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVjZWl2ZXJzKClbMV07CisKKyAgICBzZW5kZXIx
LnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0g
cmVjZWl2ZXJUcmFuc2Zvcm07CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVy
cm9yIiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0pOworICAgIGFz
c2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHJlY2VpdmVyMi50cmFu
c2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybSk7CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNl
bmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zv
cm07CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IG51bGw7CisgICAgcmVjZWl2ZXIxLnRyYW5z
Zm9ybSA9IG51bGw7Cit9LCAiQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMiKTsKKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNmOWQ1NmVlODVlNjBlNDcxOGRmNmQwMWMzMTMxYzExNDU0NGU1ZTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLXRyYW5zZm9y
bS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKKworUEFTUyB0cmFuc2Zvcm0gbWVzc2Fn
aW5nCitQQVNTIENhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zCitQQVNTIGF1ZGlvIGV4
Y2hhbmdlIHdpdGggdHJhbnNmb3JtCitQQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3Jt
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNm
b3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViODc1MzA5YTAzMWJlY2QwMWY0Y2NmOGY1ZDM3MjI0OWQ5YjdkYTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLXRy
YW5zZm9ybS5odG1sCkBAIC0wLDAgKzEsMTMyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzEiIGF1dG9wbGF5
PjwvdmlkZW8+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8yIiBhdXRvcGxheT48L3ZpZGVvPgor
ICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KK2FzeW5jIGZ1bmN0aW9uIHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgZGF0YSkKK3sKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBjb25zdCByZWNlaXZlZCA9IGF3YWl0IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVu
dC5kYXRhKSk7CisgICAgICAgIGlmIChkYXRhID09PSByZWNlaXZlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICB9Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdv
cmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRh
ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50
KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdp
c3RlcmVkIik7CisKKyAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFuc2Zvcm0nKTsKKyAgICBjb25zdCBwcm9taXNlID0g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB0cmFuc2Zvcm0ucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQp
ID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIHRyYW5zZm9ybS5wb3J0LnBvc3RNZXNzYWdl
KCJ0ZXN0Iik7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBwcm9taXNlLCAidGVzdCIpOworfSwg
InRyYW5zZm9ybSBtZXNzYWdpbmciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9ybS5qcycpOworICAgIGNv
bnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2Ug
PSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0
YSwgInJlZ2lzdGVyZWQiKTsKKworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9u
KCk7CisgICAgY29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFu
c2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFu
c2Zvcm0nKTsKKyAgICBjb25zdCBzZW5kZXIxID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ2F1ZGlvJyku
c2VuZGVyOworICAgIGNvbnN0IHNlbmRlcjIgPSBwYy5hZGRUcmFuc2NlaXZlcigndmlkZW8nKS5z
ZW5kZXI7CisgICAgY29uc3QgcmVjZWl2ZXIxID0gcGMuZ2V0UmVjZWl2ZXJzKClbMF07CisgICAg
Y29uc3QgcmVjZWl2ZXIyID0gcGMuZ2V0UmVjZWl2ZXJzKClbMV07CisKKyAgICBzZW5kZXIxLnRy
YW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVj
ZWl2ZXJUcmFuc2Zvcm07CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFsaWRTdGF0ZUVycm9y
IiwgKCkgPT4gc2VuZGVyMi50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm0pOworICAgIGFzc2Vy
dF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHJlY2VpdmVyMi50cmFuc2Zv
cm0gPSByZWNlaXZlclRyYW5zZm9ybSk7CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IHNlbmRl
clRyYW5zZm9ybTsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07
CisKKyAgICBzZW5kZXIxLnRyYW5zZm9ybSA9IG51bGw7CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9y
bSA9IG51bGw7Cit9LCAiQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMiKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2Ny
aXB0LXRyYW5zZm9ybS5qcycpOworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0
YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKKyAgICBjb25zdCBs
b2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHth
dWRpbzogdHJ1ZX0pOworCisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisgICAgY29uc3Qgc2Vu
ZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRD
UnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFuc2Zvcm0nKTsKKworICAgIGNv
bnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNz
YWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGNvbnN0IHN0cmVh
bSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3Jl
YXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMxID0g
Zmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFk
ZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAg
ICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgICAgIH0s
IChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0
aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Cisg
ICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0
IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
c3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7CisKKyAgICBhd2FpdCB3YWl0Rm9yTWVzc2FnZSh3
b3JrZXIsICJjaHVuayIpOworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKKyAgICBh
d2FpdCB2aWRlbzEucGxheSgpOworfSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2
ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAg
ICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHt2aWRlbzogdHJ1ZX0pOworCisgICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7CisgICAg
Y29uc3Qgc2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIs
ICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBu
ZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFuc2Zvcm0nKTsK
KworICAgIGNvbnN0IHN0YXJ0ZWRQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3Jr
ZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGNv
bnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4geworICAgICAgICAg
ICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOworICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25u
ZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGxvY2FsU3Ry
ZWFtKTsKKyAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Cisg
ICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzIgPSBzZWNv
bmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRy
YWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVj
ZWl2ZXI7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFu
c2Zvcm07CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVq
ZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGFzc2VydF9lcXVh
bHMoYXdhaXQgc3RhcnRlZFByb21pc2UsICJzdGFydGVkIik7CisKKyAgICBhd2FpdCB3YWl0Rm9y
TWVzc2FnZSh3b3JrZXIsICJjaHVuayIpOworCisgICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVh
bTsKKyAgICBhd2FpdCB2aWRlbzEucGxheSgpOworfSwgInZpZGVvIGV4Y2hhbmdlIHdpdGggdHJh
bnNmb3JtIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1MzM1N2Y0YTBmZDI5
NzI3NmU4NzYxNTg3NmNiMWFhN2ZmMzdiNThmLi5kZmZjNWNiMDMzZjJlNWY0ZmM5YTIxNjlhNzQ4
ZTgxMTU0YzdkNDE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RF
eHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRp
b25zCkBAIC04NjcsNyArODY3LDcgQEAgd2Via2l0Lm9yZy9iLzIxODc4NyB3ZWJydGMvdmlkZW8t
c3RhdHMuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIxODc4NyBmYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3IuaHRtbCBbIFRpbWVvdXQgXQogd2Vi
a2l0Lm9yZy9iLzIxODc4NyB3ZWJydGMvY29uY3VycmVudFZpZGVvUGxheWJhY2suaHRtbCBbIFRp
bWVvdXQgXQogd2Via2l0Lm9yZy9iLzIxODc4NyB3ZWJydGMvaWNlLWNhbmRpZGF0ZS1zZHBNTGlu
ZUluZGV4Lmh0bWwgWyBUaW1lb3V0IF0KLXdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL3dlYnJ0
Yy10cmFuc2Zvcm0uaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIxODc4NyBodHRwL3dw
dC93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sIFsgRmFpbHVyZSBdCiAKICMvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBXZWJSVEMtcmVsYXRlZCBidWdzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcyBiL0xheW91dFRl
c3RzL3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNjhjNjIyYmZjMTFh
Y2UxZWIxZjFmY2M4ZDgyZDIyZmM0ODJkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE1vY2tS
VENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHsKKyAgICBj
b25zdHJ1Y3RvcigpIHsgfQorICAgIHN0YXJ0KHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVh
bSkgeyByZWFkYWJsZVN0cmVhbS5waXBlVG8od3JpdGFibGVTdHJlYW0pOyB9Cit9OworCityZWdp
c3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCJNb2NrUlRDUnRwVHJhbnNmb3JtIiwgTW9ja1JU
Q1J0cFRyYW5zZm9ybWVyKTsKK3NlbGYucG9zdE1lc3NhZ2UoInN0YXJ0ZWQiKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4ZjUxYjNjODAwYzVkN2FjNDkzZDcwMzMwMGFjZDY4Mjc4
ZjlmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLQotCi1QQVNTIGF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3Jt
Ci1QQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMv
d2VicnRjLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWM1
YTZkZmE1NzdiYTNiYTkwZWVhZTUyMGM2MzI1MTU0ZTFhZjUwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJh
bnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi08IWRvY3R5cGUgaHRt
bD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci0g
ICAgICAgIDx0aXRsZT5UZXN0aW5nIG1lZGlhIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtPC90aXRs
ZT4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBv
cnQuanMiPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHZpZGVv
IGlkPSJ2aWRlbzEiIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8y
IiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpzIj48
L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
ewotICAgIGlmICghd2luZG93LmludGVybmFscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbGV0
IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgbGV0IHNlbmRlclRyYW5zZm9ybSA9IGludGVybmFscy5j
cmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0gICAgbGV0IHJlY2VpdmVyVHJhbnNmb3JtID0g
aW50ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLQotICAgIGNvbnN0IGxvY2Fs
U3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlv
OiB0cnVlfSk7Ci0gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9u
KSA9PiB7Ci0gICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Ci0gICAgICAgICAgICBz
ZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNl
bmRlclRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAg
ICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247Ci0gICAgICAgICAgICBzZWNvbmRDb25uZWN0
aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAgIHJlY2VpdmVy
ID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKLSAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zv
cm0gPSByZWNlaXZlclRyYW5zZm9ybTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZl
bnQuc3RyZWFtc1swXSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAgc2V0
VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwotICAgIH0pOwot
Ci0gICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2aWRlbzEucGxheSgp
OwotCi0gICAgbGV0IGNvdW50ZXIgPSAwOwotICAgIHdoaWxlICghcmVjZWl2ZXJUcmFuc2Zvcm0u
aXNQcm9jZXNzaW5nICYmIGNvdW50ZXIrKyA8IDEwMCkKLSAgICAgICAgYXdhaXQgbmV3IFByb21p
c2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7Ci0KLSAgICBhc3NlcnRfdHJ1
ZShzZW5kZXJUcmFuc2Zvcm0uaXNQcm9jZXNzaW5nLCAic2VuZGVyIik7Ci19LCAiYXVkaW8gZXhj
aGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
Ci0gICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBsZXQg
c2VuZGVyLCByZWNlaXZlcjsKLSAgICBsZXQgc2VuZGVyVHJhbnNmb3JtID0gaW50ZXJuYWxzLmNy
ZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLSAgICBsZXQgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBp
bnRlcm5hbHMuY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgY29uc3QgbG9jYWxT
dHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86
IHRydWV9KTsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVjdGlv
bikgPT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAgICAgICAg
c2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVvVHJh
Y2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0gPSBz
ZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0gICAg
ICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25kQ29ubmVj
dGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNlaXZl
ciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJhbnNm
b3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2
ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9KTsK
LQotICAgIHZpZGVvMi5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlkZW8yLnBsYXko
KTsKLQotICAgbGV0IGNvdW50ZXIgPSAwOwotICAgd2hpbGUgKCFyZWNlaXZlclRyYW5zZm9ybS5p
c1Byb2Nlc3NpbmcgJiYgY291bnRlcisrIDwgMTAwKQotICAgICAgIGF3YWl0IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOwotCi0gICAgYXNzZXJ0X3RydWUo
c2VuZGVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZywgInNlbmRlciIpOwotfSwgInZpZGVvIGV4Y2hh
bmdlIHdpdGggdHJhbnNmb3JtIik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4KLTwv
aHRtbD4K
</data>
<flag name="commit-queue"
          id="431477"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414557</attachid>
            <date>2020-11-19 02:51:40 -0800</date>
            <delta_ts>2020-11-19 03:02:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219148-20201119115134.patch</filename>
            <type>text/plain</type>
            <size>175519</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4N2JjMDU3MTMzOWEy
YmU1ZTIzMjg0ODBhYjlmZTE0MDQ3YzZjZS4uMzQ1MzFlMDIzN2UwYmRhYTIwYjk2M2RkNGZmNWVj
ZTk1NTljMDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0xMS0xOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB3aGljaCBw
cm9jZXNzZXMgZW5jb2RlZCBmcmFtZXMgaW4gYSB3b3JrZXIgZm9yIGVpdGhlciBSVENSdHBTZW5k
ZXIgb3IgUlRDUnRwUmVjZWl2ZXIuCisgICAgICAgIFRoZSBtb2RlbCBmb2xsb3dzIEF1ZGlvV29y
a2xldE5vZGUgaW4gdGhlIHNlbnNlIHRoYXQgd2UgY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtIG9iamVjdCBpbiBtYWluIHRocmVhZCB0aGF0IGlzIHVzZWQgd2l0aCBSVENSdHAgb2JqZWN0
cy4KKyAgICAgICAgVGhlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB0YWtlcyBhIG5hbWUgYW5kIGEg
d29ya2VyIGFzIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIg
Y291bnRlciBwYXJ0IGluIGEgd29ya2VyLgorICAgICAgICBCZWZvcmUgdGhhdCwgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIgY29uc3RydWN0b3JzIGFyZSByZWdpc3RlcmVkIGluIHRoZSB3b3JrZXIg
d2l0aCBhIHNwZWNpZmljIG5hbWUuCisgICAgICAgIEEgbWVzc2FnZSBwb3J0IGlzIHNoYXJlZCBi
ZXR3ZWVuIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBhbmQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
CisKKyAgICAgICAgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGtlZXBzIGEgd2VhayBwb2ludGVyIHRv
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHNvIHRoYXQgd2Uga2VlcCBhbGwgcmVmIGNvdW50aW5n
IG9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIGluIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgICAg
ICBUbyBtYWtlIHN1cmUgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgc3RheXMgYWxpdmUgZm9yIGxv
bmcgZW5vdWdoLCB3ZSBzZXQgYSBwZW5kaW5nIGFjdGl2aXR5IHdoZW4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtIGlzIGxpbmtlZCB0byBpdHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuCisgICAgICAg
IFRoZSBwZW5kaW5nIGFjdGl2aXR5IGlzIHRoZW4gcmVtb3ZlZCBlaXRoZXIgYXQgd29ya2VyIGNs
b3N1cmUgb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGJlaW5nIG5vIGxvbmdlciBkb2luZyBwcm9j
ZXNzaW5nLgorCisgICAgICAgIFdlIGV4cG9zZSBpbmRpdmlkdWFsIGNvbXByZXNzZWQgZnJhbWVz
IGFzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIGFuZCBSVENFbmNvZGVkVmlkZW9GcmFtZS4KKyAgICAg
ICAgQWNjZXNzb3IgaXMgbGltaXRlZCB0byB0aGUgcmF3IGRhdGEgYnV0IGFkZGl0aW9uYWwgZ2V0
dGVycyBzaG91bGQgYmUgYWRkZWQgbGF0ZXIgb24uCisKKyAgICAgICAgVG8gaW1wbGVtZW50IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLCB3ZSBoYXZlIHRvIGJlIGFibGUgdG8gY3JlYXRlIFdyaXRh
YmxlU3RyZWFtIHdpdGggbmF0aXZlIHNpbmtzLgorICAgICAgICBUaGlzIGlzIHdoeSB3ZSBpbnRy
b2R1Y2UgV3JpdGFibGVTdHJlYW1TaW5rIGFuZCBXcml0YWJsZVN0cmVhbSBDKysgY2xhc3Nlcy4K
KyAgICAgICAgQmluZGluZyBiZXR3ZWVuIG5hdGl2ZSBmcmFtZXMgYW5kIHN0cmVhbXMgaXMgZG9u
ZSB0aHJvdWdoIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlIGFuZCBSVENSdHBXcml0YWJsZVN0
cmVhbVNpbmsuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zv
cm0uaHRtbCBhbmQgaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
VENFbmNvZGVkQXVkaW9GcmFtZTo6UlRDRW5jb2RlZEF1ZGlvRnJhbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpSVENFbmNvZGVkQXVkaW9GcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVv
RnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
citUcmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFu
c2Zvcm1lcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRh
Y2hlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFu
c2Zvcm06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRU
cmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtOjpzZXRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZv
clNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxD
bGVhckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpp
bml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjplbnF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6UlRDUnRwV3JpdGFi
bGVTdHJlYW1TaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
azo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXI6On5SVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI6OnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RvcFBlbmRpbmdBY3Rpdml0
eSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyV2l0aFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcldpdGhU
cmFuc2Zvcm06OnNldFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpm
cm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6UlRDUnRwVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1JlY2VpdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpjbGVhckJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwVHJhbnNmb3JtOjppbnRlcm5hbFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6
VHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5r
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3Ry
ZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyOjp0b1dyYXBwZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRl
ZCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6
dHJhbnNmb3JtKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdp
c3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAg
ICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9iamVj
dFByb3h5Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKwogMjAyMC0xMS0xNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFNGcmFtZSB0cmFuc2Zv
cm1hdGlvbiBpbXBsZW1lbnRhdGlvbiBhY2NvcmRpbmcgcG9zdC1jb21taXQgcmV2aWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDk0ZDA2MmJmOTkzZDFiNGM3YzQ0NDI0ZmE0ZTkxNjU3ZjQwMDdl
YWEuLjc4OWY4ZjFlNDgzMjZhNGZmZmJmOGMyOTQyNTM0NGRiNGQxODMwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0zNzMsNiArMzczLDggQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklM
RVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEdHhTdGF0dXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC00MDMs
MTMgKzQwNSwxNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSdHhQYXJhbWV0ZXJzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
UHJvdmlkZXIuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1lci5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Q29uc3RydWN0b3IuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1l
dGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0u
aWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2RwVHlw
ZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsCkBA
IC00ODEsNiArNDg2LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKKyAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVT
dHJlYW1TaW5rLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCkBAIC0xNzUzLDcgKzE3NTks
NiBAQCBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0lETF9GSUxFUwogICAgIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaWRsCiAgICAgdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5pZGwKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCiAgICAg
dGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsCiApCkBAIC0xNzc3LDcgKzE3ODIsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNFUwogICAgIHRlc3RpbmcvTW9ja0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uLmNwcAogICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmNwcAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAotICAgIHRlc3RpbmcvTW9ja1JU
Q1J0cFRyYW5zZm9ybS5jcHAKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
CiAgICAgdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBiMTZkODhlODQ1Y2Q2
NmNlYzhjZWNkMGU3Y2I0MGY4NDJjY2Q5NjA0Li43OGIzZDRmYTA4OTQ5NDM4ZDBiZTk3NDk0ZDQ2
OWZlZTkyMzk0NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKQEAgLTIwNSw2ICsyMDUsOCBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0R0eFN0YXR1cy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCiskKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQuaWRsCiAkKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC0yMzcs
NiArMjM5LDEwIEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIrVHJhbnNmb3JtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUnR4UGFyYW1ldGVycy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAorJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKKyQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlcitUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5pZGwKQEAgLTMzOCw2ICszNDQsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcwogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIu
anMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFs
cy5qcworJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAyNmQzYzE0YTJhNjhi
ODkxNjY5ZWIwZDU2MDI3Y2U0ZjVjZTczYzhmLi5hMTZiODMyNzY5ZDY3YzgyMGQzYmUyNjU1ZmQz
MjZiYTNlN2FkMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtMTY0Nyw2ICsxNjQ3LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEZWdyYWRh
dGlvblByZWZlcmVuY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSVENEdHhTdGF0dXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ0R0eFN0YXR1cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlk
YXRlSW5pdC5jcHAKQEAgLTE3MDcsNiArMTcxMSwxNCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRl
cnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVy
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5k
UGFyYW1ldGVycy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uY3BwCkBAIC0yNTY5LDYgKzI1ODEsOCBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuYwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtU2luay5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTERvY3Vt
ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNY
TUxEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
MjdhYzdkODBlZWIxMDM1NjRkMWFlNjUzMjFlZjAwNzU3MGJlY2NiMS4uOWJhOWFkYzJhNDU3NzJh
N2IxMzIyOGM0OWExNjk5NTc0OGY0Y2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0yMzEsNiArMjMxLDggQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0Zy
YW1lLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZVR5cGUuaWRsIFwKQEAgLTI2NCwxMCArMjY2LDEzIEBAIEpTX0JJTkRJTkdfSURM
UyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJh
bnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
eW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1NkcFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsIFwK
QEAgLTM0Miw2ICszNDcsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJPcHRpb25zLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCkBAIC0xMjMwLDcg
KzEyMzYsNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9N
b2NrUGF5bWVudENvbnRhY3RGaWVsZHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5
bWVudEVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zv
cm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRBdWRpb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODUyNzcyNjM3OWZiZmI2ZGE3ODQ4
MzcxZWNmYjEzMThkYjhlZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkQXVkaW9GcmFtZS5oIgorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZEF1ZGlvRnJh
bWU6OlJUQ0VuY29kZWRBdWRpb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJh
bWU+JiYgZnJhbWUpCisgICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9
CisKK1JUQ0VuY29kZWRBdWRpb0ZyYW1lOjp+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKSA9IGRlZmF1
bHQ7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkQXVkaW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyYjZmMDgyNzVlNjkzNTliNDdjMGYwNTE2
YzMyY2VlZDYwNDAxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkQXVkaW9GcmFtZSA6IHB1Ymxp
YyBSVENFbmNvZGVkRnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZEF1
ZGlvRnJhbWU+IGNyZWF0ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZy
YW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFdURk1vdmUo
ZnJhbWUpKSk7IH0KKyAgICB+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBSVENFbmNvZGVkQXVkaW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDBkNTZj
MWQzMDg4MmFjYTk2MzY0YWE3NTZjNDlkOWRjMGVmM2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwK
QEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRD
LAorICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCitdIGludGVyZmFjZSBSVENFbmNvZGVkQXVkaW9GcmFtZSB7CisgICAgLy8gcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRl
IEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRDQXVkaW9GcmFtZU1ldGFkYXRhIGdldE1ldGFk
YXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NmE5Mzk1NmFiYmJlODQ2MDQ3Y2Nl
MDFhZjEyYzVjMWNiMmQ1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
VENFbmNvZGVkRnJhbWU6OlJUQ0VuY29kZWRGcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmIGZyYW1lKQorICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30K
KworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IFJUQ0VuY29kZWRGcmFtZTo6ZGF0YSgpIGNvbnN0
Cit7CisgICAgYXV0byBkYXRhID0gbV9mcmFtZS0+ZGF0YSgpOworICAgIHJldHVybiBKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhLCBkYXRhLnNpemUpOworfQorCit2b2lkIFJUQ0Vu
Y29kZWRGcmFtZTo6c2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJiBidWZmZXIpCit7CisgICAgbV9m
cmFtZS0+c2V0RGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgp
KSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDVhZDA4NGFk
NWNjNzlmMmUxMDMzYzUzMmM1YjQ2NjBjMzNlNDMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApAQCAtMCwwICsx
LDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0VuY29kZWRGcmFtZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJUQ0VuY29kZWRGcmFtZT4geworcHVibGljOgorICAgIFJlZlB0cjxKU0M6OkFycmF5
QnVmZmVyPiBkYXRhKCkgY29uc3Q7CisgICAgdm9pZCBzZXREYXRhKEpTQzo6QXJyYXlCdWZmZXIm
KTsKKworICAgIFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+IHRha2VSVENGcmFt
ZSgpIHsgcmV0dXJuIFdURk1vdmUobV9mcmFtZSk7IH0KKworcHJvdGVjdGVkOgorICAgIGV4cGxp
Y2l0IFJUQ0VuY29kZWRGcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYm
KTsKKworICAgIFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+IG1fZnJhbWU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2Rl
ZFZpZGVvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkVmlkZW9GcmFtZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FmNjNhMDljMmQ4YTY5NWQ0Mzc2MmVm
N2QzOTBjZmY5N2U2NjE0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCIKKworI2lmIEVOQUJM
RShXRUJfUlRDKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JUQ0VuY29kZWRWaWRlb0ZyYW1l
OjpSVENFbmNvZGVkVmlkZW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
PiYmIGZyYW1lKQorICAgIDogUlRDRW5jb2RlZEZyYW1lKFdURk1vdmUoZnJhbWUpKQoreworfQor
CitSVENFbmNvZGVkVmlkZW9GcmFtZTo6flJUQ0VuY29kZWRWaWRlb0ZyYW1lKCkgPSBkZWZhdWx0
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2Rl
ZFZpZGVvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5j
b2RlZFZpZGVvRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNzcwNWFjODU2YTAyNjI5N2Y4MTkwNzNlYWY0
YzgzMGUzNjE5YTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiUlRDRW5jb2RlZEZyYW1lLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRW5jb2RlZFZpZGVvRnJhbWUgOiBwdWJsaWMg
UlRDRW5jb2RlZEZyYW1lIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ0VuY29kZWRWaWRl
b0ZyYW1lPiBjcmVhdGUoVW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJiBmcmFt
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENFbmNvZGVkVmlkZW9GcmFtZShXVEZNb3ZlKGZy
YW1lKSkpOyB9CisgICAgflJUQ0VuY29kZWRWaWRlb0ZyYW1lKCk7CisKK3ByaXZhdGU6CisgICAg
ZXhwbGljaXQgUlRDRW5jb2RlZFZpZGVvRnJhbWUoVW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9ybWFi
bGVGcmFtZT4mJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkZDZhODE3
ZmUxZGVmYTAwZGIxM2I3OWM2ZmNhYmVjZWQ2Mjk2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsCkBA
IC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywK
KyAgICBFeHBvc2VkPURlZGljYXRlZFdvcmtlciwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlLAorXSBpbnRlcmZhY2UgUlRDRW5jb2RlZFZpZGVvRnJhbWUgeworICAgIC8vIHJlYWRvbmx5
IGF0dHJpYnV0ZSBSVENFbmNvZGVkVmlkZW9GcmFtZVR5cGUgdHlwZTsKKyAgICAvLyByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKKyAgICBhdHRyaWJ1dGUg
QXJyYXlCdWZmZXIgZGF0YTsKKyAgICAvLyBSVENWaWRlb0ZyYW1lTWV0YWRhdGEgZ2V0TWV0YWRh
dGEoKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwKaW5kZXggZjBiMmUxMWQ0N2Zm
YmIzYTg0M2JmNDEzOTdlMGMwOGM5MWUyNjI3OC4uNDY5MzRlNDhkMDJhZmY0YmJlNjRiYmE1OWFj
N2ZlMDcwOWEwYTJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbApAQCAtMjMsNiAr
MjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKK3R5cGVk
ZWYgKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSBvciBSVENSdHBTY3JpcHRUcmFuc2Zvcm0pIFJUQ1J0
cFRyYW5zZm9ybTsKKwogWwogICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCiAgICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggMGJmY2M5NjYz
YzJmMDZkNGU5MGMwOTQ4OGRmMjUyZTFmZDJiM2MwMC4uZWY3YTI5ODAwMDYyZTIzOGM2Y2IzYzYw
YzY1MjI1Y2VkNWIzODFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKQEAgLTgxLDggKzgxLDEwIEBAIE9wdGlvbmFs
PFJUQ1J0cENhcGFiaWxpdGllcz4gUlRDUnRwUmVjZWl2ZXI6OmdldENhcGFiaWxpdGllcyhTY3Jp
cHRFeGVjdXRpb25Db250CiAgICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVjZWl2
ZXJDYXBhYmlsaXRpZXMoY29udGV4dCwga2luZCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFJU
Q1J0cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0oUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFu
c2Zvcm0pCitFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBSZWNlaXZlcjo6c2V0VHJhbnNmb3JtKE9w
dGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pCiB7CisgICAgaWYgKHRyYW5zZm9y
bSAmJiBtX3RyYW5zZm9ybSAmJiAqdHJhbnNmb3JtID09ICptX3RyYW5zZm9ybSkKKyAgICAgICAg
cmV0dXJuIHsgfTsKICAgICBpZiAodHJhbnNmb3JtICYmIHRyYW5zZm9ybS0+aXNBdHRhY2hlZCgp
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJ0cmFuc2Zv
cm0gaXMgYWxyZWFkeSBpbiB1c2UiX3MgfTsKIApAQCAtOTUsNiArOTcsMTMgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gUlRDUnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNm
b3JtPiYmIHRyYW5zZm8KICAgICByZXR1cm4geyB9OwogfQogCitPcHRpb25hbDxSVENSdHBUcmFu
c2Zvcm06OkludGVybmFsPiBSVENSdHBSZWNlaXZlcjo6dHJhbnNmb3JtKCkKK3sKKyAgICBpZiAo
IW1fdHJhbnNmb3JtKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3RyYW5zZm9y
bS0+aW50ZXJuYWxUcmFuc2Zvcm0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKaW5kZXggOGNiMWE0M2QyYmQwNDQ2MjRjMjg3
Y2E2YWY3MWM3ZGY4NzhkMjJiNS4uM2ExNjE3MjA1NDNjMWQ0YmJmYzUxYTE0MDEzN2Q5Y2M3NzAw
ZDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUmVjZWl2ZXIuaApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kKiBiYWNrZW5kKCkgeyByZXR1cm4gbV9iYWNrZW5kLmdldCgpOyB9CiAgICAgdm9p
ZCBnZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIFJUQ1J0cFRyYW5zZm9y
bSogdHJhbnNmb3JtKCkgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0KLSAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJik7CisgICAg
T3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKCk7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4mJik7
CiAKIHByaXZhdGU6CiAgICAgUlRDUnRwUmVjZWl2ZXIoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiwg
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJh
Y2tlbmQ+JiYpOwpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIFJlZjxNZWRpYVN0cmVh
bVRyYWNrPiBtX3RyYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tl
bmQ+IG1fYmFja2VuZDsKICAgICBXZWFrUHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4gbV9jb25u
ZWN0aW9uOwotICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOworICAgIE9w
dGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaAppbmRleCA0ZWI5Yjg0Nzkx
MTNkYTIxNzk1Yzg3MDdlYmRkZTRjYTZlYTJiNGNmLi44MTZjYTc5YzlkM2I3MGIyNzk0ZWI5NmI4
MjdjZmE1MjkzMzY5Mzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmgKQEAgLTM2
LDggKzM2LDggQEAgY2xhc3MgUlRDUnRwVHJhbnNmb3JtOwogCiBjbGFzcyBSVENSdHBSZWNlaXZl
cldpdGhUcmFuc2Zvcm0gewogcHVibGljOgotICAgIHN0YXRpYyBSVENSdHBUcmFuc2Zvcm0qIHRy
YW5zZm9ybShSVENSdHBSZWNlaXZlciYgcmVjZWl2ZXIpIHsgcmV0dXJuIHJlY2VpdmVyLnRyYW5z
Zm9ybSgpOyB9Ci0gICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENS
dHBSZWNlaXZlciYgcmVjZWl2ZXIsIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3Jt
KSB7IHJldHVybiByZWNlaXZlci5zZXRUcmFuc2Zvcm0oV1RGTW92ZSh0cmFuc2Zvcm0pKTsgfQor
ICAgIHN0YXRpYyBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0o
UlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyKSB7IHJldHVybiByZWNlaXZlci50cmFuc2Zvcm0oKTsg
fQorICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwUmVjZWl2
ZXImIHJlY2VpdmVyLCBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiYmIHRyYW5z
Zm9ybSkgeyByZXR1cm4gcmVjZWl2ZXIuc2V0VHJhbnNmb3JtKFJUQ1J0cFRyYW5zZm9ybTo6ZnJv
bShXVEZNb3ZlKHRyYW5zZm9ybSkpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwCmluZGV4IDI5NzRjNjQwYzk4YTFhZWZkMWUxYjZmYTIxZDE3
YTZkNjUwYTY2MzYuLjVjODdjZjU2NGE1MTUzMDE0NzkzYzQ4ZjJmMmRlOTI3NWM3OTcyZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDcnlw
dG9LZXlSYXcuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCiAjaW5j
bHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTY4LDExICs2OSwxMiBAQCB1aW50NjRfdCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmNvdW50
ZXJGb3JUZXN0aW5nKCkgY29uc3QKIAogdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRp
YWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kLCBTaWRlIHNp
ZGUpCiB7CisgICAgbV9pc0F0dGFjaGVkID0gdHJ1ZTsKICAgICBtX3RyYW5zZm9ybWVyLT5zZXRJ
c1NlbmRpbmcoc2lkZSA9PSBTaWRlOjpTZW5kZXIpOwogICAgIG1fdHJhbnNmb3JtZXItPnNldElz
UHJvY2Vzc2luZ0F1ZGlvKGJhY2tlbmQubWVkaWFUeXBlKCkgPT0gUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZDo6TWVkaWFUeXBlOjpBdWRpbyk7CiAKICAgICBiYWNrZW5kLnNldFRyYW5zZm9ybWFibGVG
cmFtZUNhbGxiYWNrKFt0cmFuc2Zvcm1lciA9IG1fdHJhbnNmb3JtZXIsIGJhY2tlbmQgPSBtYWtl
UmVmKGJhY2tlbmQpXShhdXRvJiYgZnJhbWUpIHsKLSAgICAgICAgYXV0byBjaHVuayA9IGZyYW1l
LmRhdGEoKTsKKyAgICAgICAgYXV0byBjaHVuayA9IGZyYW1lLT5kYXRhKCk7CiAgICAgICAgIGF1
dG8gcmVzdWx0ID0gdHJhbnNmb3JtZXItPnRyYW5zZm9ybShjaHVuay5kYXRhLCBjaHVuay5zaXpl
KTsKIAogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CkBAIC04MCw5ICs4Miw5
IEBAIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIoUlRD
UnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBmcmFtZS5zZXREYXRhKHsgcmVzdWx0LnJldHVyblZhbHVlKCkuZGF0YSgp
LCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXplKCkgfSk7CisgICAgICAgIGZyYW1lLT5zZXREYXRh
KHsgcmVzdWx0LnJldHVyblZhbHVlKCkuZGF0YSgpLCByZXN1bHQucmV0dXJuVmFsdWUoKS5zaXpl
KCkgfSk7CiAKLSAgICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92
ZShmcmFtZSkpOworICAgICAgICBiYWNrZW5kLT5wcm9jZXNzVHJhbnNmb3JtZWRGcmFtZShXVEZN
b3ZlKGZyYW1lLmdldCgpKSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwMCw2ICsxMDIsNyBAQCB2b2lk
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRw
VHJhbnNmb3JtQmFja2VuZCYgYgogdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OndpbGxDbGVh
ckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkKIHsKICAgICBiYWNrZW5k
LmNsZWFyVHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soKTsKKyAgICBtX2lzQXR0YWNoZWQgPSBm
YWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgKaW5k
ZXggMTU4MTkwYTkwOTY2MGNmMDQwZDA2N2UzNmFhNTdmZmJjYTYxNGJhYy4uZDQ3ZGI5YjI5Yzhh
NmJkNTc4Y2UyMzFhYTMxYjU2OWEwOWFlODVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCkBAIC0y
OCwzMiArMjgsMzQgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCi0jaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3J5cHRvS2V5OwogY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXI7CitjbGFzcyBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOwogCi1jbGFzcyBSVENSdHBTRnJh
bWVUcmFuc2Zvcm0gZmluYWwgOiBwdWJsaWMgUlRDUnRwVHJhbnNmb3JtIHsKK2NsYXNzIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSk7IH0KICAg
ICB+UlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CiAKICAgICB2b2lkIHNldEVuY3J5cHRpb25LZXko
Q3J5cHRvS2V5JiwgT3B0aW9uYWw8dWludDY0X3Q+LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4m
Jik7CiAKKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7
IH0KKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZCYpOworICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJh
bnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJik7CisKICAgICBXRUJDT1JFX0VYUE9SVCB1aW50NjRfdCBjb3VudGVyRm9yVGVz
dGluZygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOwog
Ci0gICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQmKSBmaW5hbDsKLSAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsKLSAgICB2b2lkIHdpbGxDbGVhckJhY2tlbmQoUlRD
UnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOwotCiAgICAgZW51bSBjbGFzcyBTaWRlIHsgU2Vu
ZGVyLCBSZWNlaXZlciB9OwogICAgIHZvaWQgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQmLCBTaWRlKTsKIAorICAgIGJvb2wgbV9pc0F0dGFjaGVkIHsgZmFsc2Ug
fTsKICAgICBSZWY8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXI+IG1fdHJhbnNmb3JtZXI7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKaW5kZXggOTdiNzY5OGJkOGM2ZDRiMjJjZWM2MDlhODdj
YTcxYWIwYWU0Yjk0MS4uMjY0MjhkZDkyZjUxNTlkM2U5MjJiNTEwZTRkZTA3NTY2N2E5MTJhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbApAQCAtMjgsOCArMjgsOSBAQAogICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09S
RV9FWFBPUlQsCiAgICAgRXhwb3NlZD1XaW5kb3csCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZU
YWJsZSwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi1dIGludGVyZmFjZSBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0gOiBSVENSdHBUcmFuc2Zvcm0geworXSBpbnRlcmZhY2UgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtIHsKICAgICBjb25zdHJ1Y3RvcigpOwogCiAgICAgUHJvbWlzZTx1bmRlZmlu
ZWQ+IHNldEVuY3J5cHRpb25LZXkoQ3J5cHRvS2V5IGtleSwgb3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBsb25nIGtleUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzczNjA3
NWRlZDc3NmIyZjc2OWNkNWU5ODRiNTdmMzU5ZDIxNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3Bw
CkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJFcnJvckV2ZW50Lmgi
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCisj
aW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kLmgiCisjaW5jbHVkZSAiV29ya2VyLmgiCisjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoUlRDUnRwU2NyaXB0VHJhbnNmb3JtKTsKKworRXhjZXB0aW9uT3I8UmVmPFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybT4+IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtlciYgd29ya2VyLCBTdHJpbmcmJiBuYW1l
KQoreworICAgIGlmICghd29ya2VyLmhhc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKG5hbWUpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJObyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lciB3YXMgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgbmFtZSJfcyB9OworCisg
ICAgaWYgKCF3b3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJXb3JrZXIgZnJhbWUgaXMgZGV0YWNoZWQi
X3MgfTsKKworICAgIGF1dG8gbWVzc2FnZUNoYW5uZWwgPSBNZXNzYWdlQ2hhbm5lbDo6Y3JlYXRl
KCp3b3JrZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBhdXRvIHRyYW5zZm9ybU1l
c3NhZ2VQb3J0ID0gbWVzc2FnZUNoYW5uZWwtPnBvcnQxKCk7CisgICAgYXV0byB0cmFuc2Zvcm1l
ck1lc3NhZ2VQb3J0ID0gbWVzc2FnZUNoYW5uZWwtPnBvcnQyKCk7CisKKyAgICBhdXRvIHRyYW5z
Zm9ybSA9IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKGNvbnRleHQsIG1ha2VS
ZWYod29ya2VyKSwgbWFrZVJlZigqdHJhbnNmb3JtTWVzc2FnZVBvcnQpKSk7CisgICAgdHJhbnNm
b3JtLT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHdvcmtlci5jcmVhdGVSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcihuYW1lLCB0cmFuc2Zvcm1lck1lc3NhZ2VQb3J0LT5kaXNlbnRhbmdsZSgpLCB0
cmFuc2Zvcm0pOworCisgICAgcmV0dXJuIHRyYW5zZm9ybTsKK30KKworUlRDUnRwU2NyaXB0VHJh
bnNmb3JtOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUmVmPFdvcmtlcj4mJiB3b3JrZXIsIFJlZjxNZXNzYWdlUG9ydD4mJiBwb3J0KQorICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgICwgbV93b3JrZXIoV1RGTW92ZSh3b3Jr
ZXIpKQorICAgICwgbV9wb3J0KFdURk1vdmUocG9ydCkpCit7Cit9CisKK1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybTo6flJUQ1J0cFNjcmlwdFRyYW5zZm9ybSgpCit7CisgICAgY2xlYXIoKTsKK30KKwor
dm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OnNldFRyYW5zZm9ybWVyKFJlZlB0cjxSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcj4mJiB0cmFuc2Zvcm1lcikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKyAgICBpZiAoIXRyYW5zZm9ybWVyKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6TWVk
aWFFbGVtZW50LCBFcnJvckV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsICJB
biBlcnJvciB3YXMgdGhyb3duIGZyb20gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgY29uc3RydWN0
b3IiX3MsIHsgfSwgMCwgMCwgeyB9KSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJhbnNmb3Jt
ZXJMb2NrKTsKKyAgICAgICAgQVNTRVJUKCFtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCk7Cisg
ICAgICAgIG1faXNUcmFuc2Zvcm1lckluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgbV90cmFu
c2Zvcm1lciA9IG1ha2VXZWFrUHRyKHRyYW5zZm9ybWVyLmdldCgpKTsKKyAgICB9CisgICAgdHJh
bnNmb3JtZXItPnN0YXJ0UGVuZGluZ0FjdGl2aXR5KCk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAg
ICBpZiAobV9iYWNrZW5kKQorICAgICAgICAgICAgc2V0dXBUcmFuc2Zvcm1lcihtX2JhY2tlbmQu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtOjppbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQm
IGJhY2tlbmQpCit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQpOworfQorCit2
b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRD
UnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkKK3sKKyAgICBpbml0aWFsaXplVHJhbnNmb3Jt
ZXIoYmFja2VuZCk7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjp3aWxsQ2xlYXJC
YWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQoreworICAgIGNsZWFyKCk7Cit9CisKK3Zv
aWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJh
bnNmb3JtQmFja2VuZCYgYmFja2VuZCkKK3sKKyAgICBtX2lzQXR0YWNoZWQgPSB0cnVlOworICAg
IGlmICghc2V0dXBUcmFuc2Zvcm1lcihtYWtlUmVmKGJhY2tlbmQpKSkKKyAgICAgICAgbV9iYWNr
ZW5kID0gbWFrZVJlZihiYWNrZW5kKTsKK30KKworYm9vbCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OnNldHVwVHJhbnNmb3JtZXIoUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2VuZCkK
K3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJhbnNmb3JtZXJMb2NrKTsKKyAgICBp
ZiAoIW1faXNUcmFuc2Zvcm1lckluaXRpYWxpemVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX3dvcmtlci0+cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFt0cmFuc2Zvcm1lciA9
IG1fdHJhbnNmb3JtZXIsIGJhY2tlbmQgPSBXVEZNb3ZlKGJhY2tlbmQpXShhdXRvJikgbXV0YWJs
ZSB7CisgICAgICAgIGlmICh0cmFuc2Zvcm1lcikKKyAgICAgICAgICAgIHRyYW5zZm9ybWVyLT5z
dGFydChXVEZNb3ZlKGJhY2tlbmQpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OmNsZWFyKCkKK3sKKyAgICBtX2lzQXR0YWNoZWQg
PSBmYWxzZTsKKworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFuc2Zvcm1lckxvY2sp
OworICAgIG1faXNUcmFuc2Zvcm1lckluaXRpYWxpemVkID0gZmFsc2U7CisgICAgbV93b3JrZXIt
PnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShbdHJhbnNmb3JtZXIgPSBXVEZNb3ZlKG1fdHJh
bnNmb3JtZXIpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIGlmICh0cmFuc2Zvcm1lcikKKyAg
ICAgICAgICAgIHRyYW5zZm9ybWVyLT5jbGVhcigpOworICAgIH0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ0ZGNlYjVmNDBmZjU3ZmQ1ZmEzY2MwNzkzYTYxMDhlODU1NmU2OTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShX
RUJfUlRDKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOworY2xhc3MgUlRDUnRwVHJh
bnNmb3JtQmFja2VuZDsKK2NsYXNzIFdvcmtlcjsKKworY2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtIGZpbmFsCisgICAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UlRDUnRwU2NyaXB0
VHJhbnNmb3JtPgorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwgcHVibGljIEV2
ZW50VGFyZ2V0V2l0aElubGluZURhdGEgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoUlRD
UnRwU2NyaXB0VHJhbnNmb3JtKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
V29ya2VyJiwgU3RyaW5nJiYgbmFtZSk7CisgICAgflJUQ1J0cFNjcmlwdFRyYW5zZm9ybSgpOwor
CisgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KKworICAg
IHZvaWQgc2V0VHJhbnNmb3JtZXIoUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiYmKTsK
KworICAgIGJvb2wgaXNBdHRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdHRhY2hlZDsgfQor
ICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kJik7CisgICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJik7CisgICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQmKTsKKworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpyZWY7CisgICAgdXNp
bmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVmOworCitwcml2YXRlOgorICAgIFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFdvcmtlcj4mJiwgUmVm
PE1lc3NhZ2VQb3J0PiYmKTsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICBib29sIHNldHVwVHJhbnNmb3JtZXIoUmVmPFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQ+JiYpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIC8vIEFjdGl2
ZURPTU9iamVjdAorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCB7
IHJldHVybiAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIjsgfQorCisgICAgLy8gRXZlbnRUYXJnZXQK
KyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Cisg
ICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisKKyAgICBSZWY8
V29ya2VyPiBtX3dvcmtlcjsKKyAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKKworICAgIGJv
b2wgbV9pc0F0dGFjaGVkIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtQmFj
a2VuZD4gbV9iYWNrZW5kOworCisgICAgTG9jayBtX3RyYW5zZm9ybWVyTG9jazsKKyAgICBib29s
IG1faXNUcmFuc2Zvcm1lckluaXRpYWxpemVkIHsgZmFsc2UgfTsKKyAgICBXZWFrUHRyPFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyPiBtX3RyYW5zZm9ybWVyOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDY2YTliOTUzMWMxNzgyMWM2ODk5YjZmNjAwZmQ1NzMwZDlmZTk5ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWwor
ICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1XRUJfUlRDLAorICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCisgICAgRXhwb3NlZD1XaW5kb3cs
CisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorXSBpbnRlcmZhY2UgUlRDUnRwU2NyaXB0
VHJhbnNmb3JtIDogRXZlbnRUYXJnZXQgeworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0XSBjb25zdHJ1Y3RvcihXb3JrZXIgd29ya2VyLCBET01TdHJpbmcgbmFtZSk7CisKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgTWVzc2FnZVBvcnQgcG9ydDsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVBy
b3ZpZGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2M2JlOGFkYzMwMjdlNTc4ZjY2
Y2Y0YzU5YzFiNTc0ZDZmZTI2MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbApAQCAt
MCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaW50ZXJmYWNlIG1peGluIFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybVByb3ZpZGVyIHsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVuZGVmaW5lZCByZWdp
c3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKERPTVN0cmluZyBuYW1lLCBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lckNvbnN0cnVjdG9yIHByb2Nlc3NvckNvbnN0cnVjdG9yKTsKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzMzc0ZDcyM2UwNDc1NzlkMGY4YjM1N2Zk
YmM1NDVlNjQ1Y2EzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcApAQCAtMCwwICsxLDE5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIgorCisjaWYg
RU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
IgorI2luY2x1ZGUgIkpTQ2FsbGJhY2tEYXRhLmgiCisjaW5jbHVkZSAiSlNSVENFbmNvZGVkQXVk
aW9GcmFtZS5oIgorI2luY2x1ZGUgIkpTUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCIKKyNpbmNsdWRl
ICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5o
IgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAiV3JpdGFibGVT
dHJlYW0uaCIKKyNpbmNsdWRlICJXcml0YWJsZVN0cmVhbVNpbmsuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZQorICAgIDogcHVibGlj
IFJlYWRhYmxlU3RyZWFtU291cmNlCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UlRDUnRw
UmVhZGFibGVTdHJlYW1Tb3VyY2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFJl
YWRhYmxlU3RyZWFtU291cmNlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0
cFJlYWRhYmxlU3RyZWFtU291cmNlKTsgfQorCisgICAgdm9pZCBjbG9zZSgpIHsgY29udHJvbGxl
cigpLmNsb3NlKCk7IH0KKyAgICB2b2lkIGVucXVldWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IGNv
bnRyb2xsZXIoKS5lbnF1ZXVlKHZhbHVlKTsgfQorCitwcml2YXRlOgorICAgIFJUQ1J0cFJlYWRh
YmxlU3RyZWFtU291cmNlKCkgPSBkZWZhdWx0OworCisgICAgLy8gUmVhZGFibGVTdHJlYW1Tb3Vy
Y2UKKyAgICB2b2lkIHNldEFjdGl2ZSgpIGZpbmFsIHsgfQorICAgIHZvaWQgc2V0SW5hY3RpdmUo
KSBmaW5hbCB7IH0KKyAgICB2b2lkIGRvU3RhcnQoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRvUHVs
bCgpIGZpbmFsIHsgfQorICAgIHZvaWQgZG9DYW5jZWwoKSBmaW5hbCB7IH0KK307CisKK2NsYXNz
IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBXcml0YWJsZVN0cmVhbVNpbmsgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDUnRwV3JpdGFibGVTdHJlYW1TaW5rPiBjcmVhdGUo
RnVuY3Rpb248dm9pZChVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmKT4mJiBl
bnF1ZXVlRnVuY3Rpb24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwV3JpdGFibGVTdHJl
YW1TaW5rKFdURk1vdmUoZW5xdWV1ZUZ1bmN0aW9uKSkpOyB9CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgUlRDUnRwV3JpdGFibGVTdHJlYW1TaW5rKEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVmPFJU
Q1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJik+JiYgZW5xdWV1ZUZ1bmN0aW9uKQorICAgICAgICA6
IG1fZW5xdWV1ZUZ1bmN0aW9uKFdURk1vdmUoZW5xdWV1ZUZ1bmN0aW9uKSkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCB3cml0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6
OkpTVmFsdWUgdmFsdWUsIERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCisgICAg
eworICAgICAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqY29udGV4dC5nbG9iYWxPYmplY3QoKTsK
KworICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnbG9iYWxPYmplY3Qu
dm0oKSk7CisgICAgICAgIGF1dG8gZnJhbWUgPSBjb252ZXJ0PElETFVuaW9uPElETEludGVyZmFj
ZTxSVENFbmNvZGVkQXVkaW9GcmFtZT4sIElETEludGVyZmFjZTxSVENFbmNvZGVkVmlkZW9GcmFt
ZT4+PihnbG9iYWxPYmplY3QsIHZhbHVlKTsKKworICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfSwgUmVqZWN0QXNIYW5kbGVkOjpZZXMpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgV1RGOjpzd2l0Y2hPbihmcmFtZSwgWyZdKFJlZlB0cjxS
VENFbmNvZGVkQXVkaW9GcmFtZT4mIHZhbHVlKSB7CisgICAgICAgICAgICBtX2VucXVldWVGdW5j
dGlvbih2YWx1ZS0+dGFrZVJUQ0ZyYW1lKCkpOworICAgICAgICB9LCBbJl0oUmVmUHRyPFJUQ0Vu
Y29kZWRWaWRlb0ZyYW1lPiYgdmFsdWUpIHsKKyAgICAgICAgICAgIG1fZW5xdWV1ZUZ1bmN0aW9u
KHZhbHVlLT50YWtlUlRDRnJhbWUoKSk7CisgICAgICAgIH0pOworICAgICAgICBwcm9taXNlLnJl
c29sdmUoKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogRGVjaWRlIHdoZXRoZXIgY2xlYXJpbmcg
YWxsIHBlbmRpbmcgZnJhbWVzLgorICAgIHZvaWQgY2xvc2UoKSBmaW5hbCB7IH0KKyAgICB2b2lk
IGVycm9yKFN0cmluZyYmKSBmaW5hbCB7IH0KKworICAgIEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVm
PFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJik+IG1fZW5xdWV1ZUZ1bmN0aW9uOworfTsKKwor
RXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPj4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAg
IGF1dG8gcG9ydCA9IGRvd25jYXN0PERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0
KS50YWtlUGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydCgpOworICAgIGlmICghcG9ydCkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIk5vIHBlbmRpbmcgY29uc3Ry
dWN0aW9uIGRhdGEgZm9yIHRoaXMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIiX3MgfTsKKworICAg
IGF1dG8gdHJhbnNmb3JtZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
KGNvbnRleHQsIHBvcnQucmVsZWFzZU5vbk51bGwoKSkpOworICAgIHRyYW5zZm9ybWVyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdHJhbnNmb3JtZXI7Cit9CisKK1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBSZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKKyAgICA6IEFjdGl2ZURPTU9i
amVjdCgmY29udGV4dCkKKyAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQoreworfQorCitSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcjo6flJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCkKK3sKK30KKwor
UmVmUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
cjo6c3RhcnRTdHJlYW1zKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAg
YXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7CisgICAgaWYgKCFjYWxsYmFjaykK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGF1dG8m
IGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNvbnRleHQu
Z2xvYmFsT2JqZWN0KCkpOworCisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKKyAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHZtKTsKKworICAgIGF1dG8gcmVhZGFibGVTdHJlYW1T
b3VyY2UgPSBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6Y3JlYXRlKCk7CisgICAgYXV0byBy
ZWFkYWJsZVN0cmVhbSA9IFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCByZWFk
YWJsZVN0cmVhbVNvdXJjZS5jb3B5UmVmKCkpOworICAgIGlmIChyZWFkYWJsZVN0cmVhbS5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHdyaXRhYmxl
U3RyZWFtID0gV3JpdGFibGVTdHJlYW06OmNyZWF0ZShnbG9iYWxPYmplY3QsIFJUQ1J0cFdyaXRh
YmxlU3RyZWFtU2luazo6Y3JlYXRlKFtiYWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKV0oYXV0byYm
IGZyYW1lKSB7CisgICAgICAgIGJhY2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1v
dmUoZnJhbWUuZ2V0KCkpKTsKKyAgICB9KSk7CisgICAgaWYgKHdyaXRhYmxlU3RyZWFtLmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIENhbGwgc3RhcnQg
Y2FsbGJhY2suCisgICAgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3Mu
YXBwZW5kKHRvSlNOZXdseUNyZWF0ZWQoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgcmVh
ZGFibGVTdHJlYW0ucmVsZWFzZVJldHVyblZhbHVlKCkpKTsKKyAgICBhcmdzLmFwcGVuZCh0b0pT
TmV3bHlDcmVhdGVkKCZnbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHdyaXRhYmxlU3RyZWFt
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4g
cmV0dXJuZWRFeGNlcHRpb247CisgICAgY2FsbGJhY2stPmludm9rZUNhbGxiYWNrKEpTQzo6anNV
bmRlZmluZWQoKSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdGFydCIpLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgLy8gRklYTUU6IERvIHNvbWV0aGluZyBpbiBjYXNlIG9mIGV4Y2VwdGlvbj8gV2Ug
c2hvdWxkIGF0IGxlYXN0IGxvZyBlcnJvcnMuCisKKyAgICByZXR1cm4gcmVhZGFibGVTdHJlYW1T
b3VyY2U7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OnN0YXJ0KFJlZjxSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kPiYmIGJhY2tlbmQpCit7CisgICAgYXV0byByZWFkYWJsZVN0cmVh
bVNvdXJjZSA9IHN0YXJ0U3RyZWFtcyhiYWNrZW5kLmdldCgpKTsKKyAgICBpZiAoIXJlYWRhYmxl
U3RyZWFtU291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2JhY2tlbmQgPSBXVEZNb3Zl
KGJhY2tlbmQpOworCisgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX2JhY2tlbmQtPnNldFRyYW5z
Zm9ybWFibGVGcmFtZUNhbGxiYWNrKFtyZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG1ha2VXZWFrUHRy
KHJlYWRhYmxlU3RyZWFtU291cmNlLmdldCgpKSwgaXNBdWRpbyA9IG1fYmFja2VuZC0+bWVkaWFU
eXBlKCkgPT0gUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6TWVkaWFUeXBlOjpBdWRpbywgdGhyZWFk
ID0gbWFrZVJlZihjb250ZXh0LnRocmVhZCgpKV0oYXV0byYmIGZyYW1lKSBtdXRhYmxlIHsKKyAg
ICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZWFkYWJsZVN0cmVhbVNv
dXJjZSwgaXNBdWRpbywgZnJhbWUgPSBXVEZNb3ZlKGZyYW1lKV0oYXV0byYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIXJlYWRhYmxlU3RyZWFtU291cmNlKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY29udGV4dC5nbG9iYWxPYmplY3QoKSk7CisgICAg
ICAgICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOworICAgICAgICAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBpc0F1ZGlv
ID8gdG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBSVENFbmNvZGVkQXVkaW9GcmFt
ZTo6Y3JlYXRlKFdURk1vdmUoZnJhbWUpKSkgOiB0b0pTKCZnbG9iYWxPYmplY3QsICZnbG9iYWxP
YmplY3QsIFJUQ0VuY29kZWRBdWRpb0ZyYW1lOjpjcmVhdGUoV1RGTW92ZShmcmFtZSkpKTsKKyAg
ICAgICAgICAgIHJlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKHZhbHVlKTsKKyAgICAgICAg
fSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXI6OmNsZWFyKCkKK3sKKyAgICBpZiAobV9iYWNrZW5kKQorICAg
ICAgICBtX2JhY2tlbmQtPmNsZWFyVHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soKTsKKyAgICBt
X2JhY2tlbmQgPSBudWxscHRyOworICAgIHN0b3BQZW5kaW5nQWN0aXZpdHkoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTJhZGRjZTRmMTIwZGViODQ0YzA0ZmIxYmRiNmY2
YTUwYTBjZTg3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaApAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU0NhbGxiYWNrRGF0YVN0cm9uZzsKK2NsYXNzIE1l
c3NhZ2VQb3J0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQ7CitjbGFzcyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTsKKworY2xh
c3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyPgorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgflJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyKCk7CisKKyAgICB2b2lkIHNldENhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNr
RGF0YVN0cm9uZz4mJiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
IH0KKyAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisg
ICAgdm9pZCBzdGFydChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJik7CisgICAgdm9pZCBj
bGVhcigpOworCisgICAgdm9pZCBzdGFydFBlbmRpbmdBY3Rpdml0eSgpIHsgbV9wZW5kaW5nQWN0
aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsgfQorCitwcml2YXRlOgorICAgIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8TWVzc2Fn
ZVBvcnQ+JiYpOworCisgICAgUmVmUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiBzdGFy
dFN0cmVhbXMoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworCisgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IHsgcmV0dXJu
ICJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciI7IH0KKyAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IHN0
b3BQZW5kaW5nQWN0aXZpdHkoKTsgfQorICAgIHZvaWQgc3RvcFBlbmRpbmdBY3Rpdml0eSgpIHsg
YXV0byBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3ZlKG1fcGVuZGluZ0FjdGl2aXR5KTsgfQorCisg
ICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJh
Y2tEYXRhU3Ryb25nPiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kPiBtX2JhY2tlbmQ7CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcj4+IG1fcGVuZGluZ0FjdGl2aXR5OworCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODc3NDU1N2QwNWRjNWEwNTAzZTllMTcyYmI5MmQ2NDdlNDkwMDk2
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBGSVhNRTogQWRkIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMs
CitbCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAg
RXhwb3NlZD1EZWRpY2F0ZWRXb3JrZXIsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAor
XSBpbnRlcmZhY2UgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgeworICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcigvKiBvcHRpb25hbCBvYmplY3QgdHJhbnNm
b3JtT3B0aW9ucyAqLyk7CisKKyAgICAvLyBGSVhNRTogYWRkIGNvbnRyb2xsZXIgYXR0cmlidXRl
LgorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXJDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTlkOWJkYjhi
ZTEzNzNiZjdmZmMwZjdmMWFkOTBiODJkZjQ4NDQzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKwor
I2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tSZXN1bHQu
aCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lckNvbnN0cnVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXJDb25zdHJ1Y3Rvcj4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOworCisgICAgdmly
dHVhbCBDYWxsYmFja1Jlc3VsdDxSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBoYW5k
bGVFdmVudCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1
Y3Rvci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcyMWU1M2Y2YjY1NWI0ZjhhYTliMTcyZTIzYjI3MDMxNGM1
N2JmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwKQEAgLTAsMCArMSwzMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9V0VCX1JUQywKK10gY2FsbGJhY2sgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJD
b25zdHJ1Y3RvciA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNm
b3JtLmlkbAppbmRleCAzMzhhN2UzMDdkNjI0YzEzNGY3ODBjY2I3MTBjOGM2ODI0ZGMwZGRhLi5i
OTEyZDAxYTZkOTk1NWEzMDRiYmIxYTVjZmQ4YTlmNTAwYzkwMDI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1Ry
YW5zZm9ybS5pZGwKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCit0eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3IgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtKSBSVENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRpb25hbD1X
RUJfUlRDLAogICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5j
cHAKaW5kZXggYzdhYzNjNDliZDlkNzk2YjI0ODc1ZjlkOTIzMDZkM2U5M2E3NTQzYi4uM2UwMzJi
NjU5M2E3NjQzYjQ2MmQzZGZhOGUyMmZiMmIwOTQ0NmUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtMTkzLDggKzE5
MywxMCBAQCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwU2VuZGVy
OjpjdXJyZW50VHJhbnNjZWl2ZXJEaXJlY3Rpb24oKQogICAgIHJldHVybiBzZW5kZXJUcmFuc2Nl
aXZlci0+Y3VycmVudERpcmVjdGlvbigpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBT
ZW5kZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkK
K0V4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKE9wdGlvbmFsPFJU
Q1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pCiB7CisgICAgaWYgKHRyYW5zZm9ybSAmJiBtX3Ry
YW5zZm9ybSAmJiAqdHJhbnNmb3JtID09ICptX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKICAgICBpZiAodHJhbnNmb3JtICYmIHRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJ0cmFuc2Zvcm0gaXMgYWxy
ZWFkeSBpbiB1c2UiX3MgfTsKIApAQCAtMjA3LDYgKzIwOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBSVENSdHBTZW5kZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRy
YW5zZm9ybQogICAgIHJldHVybiB7IH07CiB9CiAKK09wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6
SW50ZXJuYWw+IFJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKCkKK3sKKyAgICBpZiAoIW1fdHJhbnNm
b3JtKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3RyYW5zZm9ybS0+aW50ZXJu
YWxUcmFuc2Zvcm0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuaAppbmRleCA3MGFkOTU5MjcwYmIyYTI5YWUzNDkzYjFkMWViODA5NGE5
YjUwNWI1Li5lZGU0ZDlkYTBiODUwYThjYTlmODlhYTI0YzFjYWE1Nzg3YjlmNDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKQEAg
LTgyLDggKzgyLDggQEAgcHVibGljOgogICAgIFJUQ0RUTUZTZW5kZXIqIGR0bWYoKTsKICAgICBP
cHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3VycmVudFRyYW5zY2VpdmVyRGly
ZWN0aW9uKCkgY29uc3Q7CiAKLSAgICBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0
dXJuIG1fdHJhbnNmb3JtLmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNm
b3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5z
Zm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9ybSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRy
YW5zZm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJU
Q1J0cFNlbmRlcihSVENQZWVyQ29ubmVjdGlvbiYsIFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9y
PFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJh
Y2tlbmQ+JiYpOwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSVENSdHBTZW5kZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxSVENQZWVyQ29u
bmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZlB0cjxSVENEVE1GU2VuZGVyPiBtX2R0bWZT
ZW5kZXI7Ci0gICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgT3B0
aW9uYWw8UlRDUnRwVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKaW5kZXggODcxNDM4ZWU2NjViMjZm
ODBlMTUxYzE5NWVjODc2Y2NlYWFhOTMwZS4uNDZkMzdhNzczNmYxNmRjMDc5NWI5NWQ0MDU4ZWFh
OTQzZmRhNmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKQEAgLTM2LDggKzM2LDgg
QEAgY2xhc3MgUlRDUnRwVHJhbnNmb3JtOwogCiBjbGFzcyBSVENSdHBTZW5kZXJXaXRoVHJhbnNm
b3JtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRD
UnRwU2VuZGVyJiBzZW5kZXIpIHsgcmV0dXJuIHNlbmRlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0
YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIs
IFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0
VHJhbnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRD
UnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSB7
IHJldHVybiBzZW5kZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0VHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBPcHRpb25hbDxSVENSdHBUcmFu
c2Zvcm06OkludGVybmFsPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gc2VuZGVyLnNldFRyYW5zZm9y
bShSVENSdHBUcmFuc2Zvcm06OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAppbmRleCAzYmY1ZTVlNWMyZGY3MGY5NjMw
M2RmOTQ5NGZjNWIzMTVjNjkzYjFkLi4zYzdmY2Y0YmQyNDI3NTZlMzFjNWRiMzhhYzk2YmI4YTFm
NzQwODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBUcmFuc2Zvcm0uY3BwCkBAIC0zMywxMCArMzMsMzAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+IFJUQ1J0cFRyYW5zZm9ybTo6ZnJv
bShPcHRpb25hbDxJbnRlcm5hbD4mJiBpbnRlcm5hbCkKK3sKKyAgICBpZiAoIWludGVybmFsKQor
ICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBSVENSdHBUcmFuc2Zvcm0oV1RGTW92ZSgq
aW50ZXJuYWwpKTsKK30KKworUlRDUnRwVHJhbnNmb3JtOjpSVENSdHBUcmFuc2Zvcm0oSW50ZXJu
YWwmJiB0cmFuc2Zvcm0pCisgICAgOiBtX3RyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCit7
Cit9CisKIFJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSgpCiB7Ci0gICAgaWYgKG1f
YmFja2VuZCkKLSAgICAgICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICBjbGVh
ckJhY2tlbmQoKTsKK30KKworYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQoKSBjb25z
dAoreworICAgIHJldHVybiBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxS
VENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgcmV0dXJu
IHNmcmFtZVRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpOworICAgIH0sIFsmXShjb25zdCBSZWZQdHI8
UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgIHJldHVy
biBzY3JpcHRUcmFuc2Zvcm0tPmlzQXR0YWNoZWQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSVENS
dHBUcmFuc2Zvcm06OmF0dGFjaFRvUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyKQpA
QCAtNDQsOCArNjQsMTMgQEAgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvUmVjZWl2ZXIo
UlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IHJlY2VpdmVyLmJhY2tlbmQoKSkKICAgICAgICAgbV9iYWNr
ZW5kID0gYmFja2VuZC0+Y3JlYXRlUlRDUnRwVHJhbnNmb3JtQmFja2VuZCgpOwotICAgIGlmICht
X2JhY2tlbmQpCi0gICAgICAgIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoKm1fYmFja2Vu
ZCk7CisgICAgaWYgKG1fYmFja2VuZCkgeworICAgICAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwg
WyZdKFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAg
ICAgICAgICAgIHNmcmFtZVRyYW5zZm9ybS0+aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcigq
bV9iYWNrZW5kKTsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+
JiBzY3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlh
bGl6ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9iYWNrZW5kKTsKKyAgICAgICAgfSk7CisgICAgfQog
fQogCiB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIoUlRDUnRwU2VuZGVyJiBz
ZW5kZXIpCkBAIC01MywyNiArNzgsNTQgQEAgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRv
U2VuZGVyKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsK
ICAgICBpZiAoYXV0byogYmFja2VuZCA9IHNlbmRlci5iYWNrZW5kKCkpCiAgICAgICAgIG1fYmFj
a2VuZCA9IGJhY2tlbmQtPmNyZWF0ZVJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQoKTsKLSAgICBpZiAo
bV9iYWNrZW5kKQotICAgICAgICBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9iYWNrZW5k
KTsKKyAgICBpZiAobV9iYWNrZW5kKSB7CisgICAgICAgIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBb
Jl0oUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAg
ICAgICAgICAgc2ZyYW1lVHJhbnNmb3JtLT5pbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9i
YWNrZW5kKTsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBz
Y3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlhbGl6
ZUJhY2tlbmRGb3JTZW5kZXIoKm1fYmFja2VuZCk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAot
dm9pZCBSVENSdHBUcmFuc2Zvcm06OmRldGFjaEZyb21SZWNlaXZlcihSVENSdHBSZWNlaXZlciYp
Cit2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6Y2xlYXJCYWNrZW5kKCkKIHsKICAgICBpZiAoIW1fYmFj
a2VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5k
KTsKKyAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKFJlZlB0cjxSVENSdHBTRnJhbWVUcmFu
c2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgc2ZyYW1lVHJhbnNmb3JtLT53aWxs
Q2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOworICAgIH0sIFsmXShSZWZQdHI8UlRDUnRwU2NyaXB0
VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+
d2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICB9KTsKKwogICAgIG1fYmFja2VuZCA9
IG51bGxwdHI7CiB9CiAKK3ZvaWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIo
UlRDUnRwUmVjZWl2ZXImKQoreworICAgIGNsZWFyQmFja2VuZCgpOworfQorCiB2b2lkIFJUQ1J0
cFRyYW5zZm9ybTo6ZGV0YWNoRnJvbVNlbmRlcihSVENSdHBTZW5kZXImKQogewotICAgIGlmICgh
bV9iYWNrZW5kKQotICAgICAgICByZXR1cm47CisgICAgY2xlYXJCYWNrZW5kKCk7Cit9CiAKLSAg
ICB3aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZCA9IG51bGxwdHI7
Citib29sIG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBhLCBjb25zdCBSVENSdHBU
cmFuc2Zvcm0mIGIpCit7CisgICAgcmV0dXJuIHN3aXRjaE9uKGEubV90cmFuc2Zvcm0sIFsmXShj
b25zdCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtQSkgewor
ICAgICAgICByZXR1cm4gc3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxS
VENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1CKSB7CisgICAgICAgICAgICBy
ZXR1cm4gc2ZyYW1lVHJhbnNmb3JtQS5nZXQoKSA9PSBzZnJhbWVUcmFuc2Zvcm1CLmdldCgpOwor
ICAgICAgICB9LCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mKSB7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0pOworICAgIH0sIFsmXShjb25zdCBS
ZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQSkgeworICAgICAg
ICByZXR1cm4gc3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBT
RnJhbWVUcmFuc2Zvcm0+JikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
LCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlwdFRyYW5zZm9y
bUIpIHsKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHRUcmFuc2Zvcm1BLmdldCgpID09IHNjcmlw
dFRyYW5zZm9ybUIuZ2V0KCk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBUcmFuc2Zvcm0uaAppbmRleCBkYjdmZDg0MjdmNTgwYzg2OGFhZWM0M2UwNjdhMzhm
OTA3M2NmZTBiLi42MWI5MWVhY2U4NjhjZDdhYzc0Y2M0NGMzOTJiOTVmYzBhMjliZWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9y
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNm
b3JtLmgKQEAgLTI3LDE4ICsyNywyMiBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKKyNpbmNs
dWRlICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFu
c2Zvcm0uaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCi0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CiAK
LWNsYXNzIFdFQkNPUkVfRVhQT1JUIFJUQ1J0cFRyYW5zZm9ybSA6IHB1YmxpYyBSZWZDb3VudGVk
PFJUQ1J0cFRyYW5zZm9ybT4geworY2xhc3MgUlRDUnRwVHJhbnNmb3JtICB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtKCk7CisgICAgdXNpbmcgSW50ZXJuYWwgPSBWYXJp
YW50PFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+LCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJh
bnNmb3JtPj47CisgICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gZnJvbShPcHRp
b25hbDxJbnRlcm5hbD4mJik7CisKKyAgICBleHBsaWNpdCBSVENSdHBUcmFuc2Zvcm0oSW50ZXJu
YWwmJik7CisgICAgflJUQ1J0cFRyYW5zZm9ybSgpOwogCiAgICAgYm9vbCBpc0F0dGFjaGVkKCkg
Y29uc3Q7CiAgICAgdm9pZCBhdHRhY2hUb1JlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJik7CkBAIC00
NiwzMCArNTAsMjEgQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoRnJvbVJlY2VpdmVyKFJUQ1J0
cFJlY2VpdmVyJik7CiAgICAgdm9pZCBkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpOwog
CisgICAgSW50ZXJuYWwgaW50ZXJuYWxUcmFuc2Zvcm0oKSB7IHJldHVybiBtX3RyYW5zZm9ybTsg
fQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mLCBj
b25zdCBSVENSdHBUcmFuc2Zvcm0mKTsKKwogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwotICAgIHZp
cnR1YWwgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJik7CisgICAgdm9pZCBjbGVhckJhY2tlbmQoKTsKIAotcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX2JhY2tlbmQ7CisgICAgSW50ZXJuYWwg
bV90cmFuc2Zvcm07CiB9OwogCi1pbmxpbmUgYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNo
ZWQoKSBjb25zdAotewotICAgIHJldHVybiAhIW1fYmFja2VuZDsKLX0KLQotaW5saW5lIHZvaWQg
UlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJikKLXsKLX0KLQotaW5saW5lIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjppbml0aWFs
aXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQotewotfQotCi1p
bmxpbmUgdm9pZCBSVENSdHBUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYpCitib29sIG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiwgY29u
c3QgUlRDUnRwVHJhbnNmb3JtJik7CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJUQ1J0
cFRyYW5zZm9ybSYgYSwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBiKQogeworICAgIHJldHVybiAh
KGEgPT0gYik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U2ZTMyODEyYmM0M2ZmMWUzZjVmYWIxMDUxNjY2ZTRl
YzQzMzVhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5pZGwKKysr
IC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCi0gICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKLSAgICBFeHBvcnRNYWNybz1XRUJD
T1JFX0VYUE9SVCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgUlRDUnRwVHJhbnNm
b3JtIHsKLSAgICAvLyBGSVhNRTogQWRkIHJlYWRhYmxlL3dyaXRhYmxlIGdldHRlcnMKLSAgICAv
LyByZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0gcmVhZGFibGU7Ci0gICAgLy8gcmVh
ZG9ubHkgYXR0cmlidXRlIFdyaXRhYmxlU3RyZWFtIHdyaXRhYmxlOwotfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1C
YWNrZW5kLmgKaW5kZXggNDEyMTQ5MjIwMWFlNjQ2MzViODgyOTM1NDU1ZTViOGYzNzNiYmNhOS4u
YWE5MjJkMzI3OTM3NDRhYTljZTg5OTMyNjEyZjg2ZGNiNTRjNTljYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1C
YWNrZW5kLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUlRDUnRwVHJhbnNmb3JtQmFja2VuZCA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBUcmFuc2Zvcm1CYWNrZW4KIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5SVENSdHBUcmFuc2Zvcm1CYWNrZW5kKCkgPSBkZWZhdWx0OwogCi0g
ICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFt
ZSYmKT47CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3Jt
YWJsZUZyYW1lQ2FsbGJhY2soQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
clRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzVHJhbnNmb3JtZWRGcmFtZShSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUmJikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zv
cm1hYmxlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmgKaW5kZXggNTcyNjM2MDA3ZWZjMjc2YzM5NThjMmU3MmMzOWEy
MTNjOWFmOTk5MC4uZGI1YjFmMTFjZjEzOGJiMDM2OGJmMTc3NDhhMzEzYzgyODNiMzE3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zv
cm1hYmxlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtYWJs
ZUZyYW1lKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQuY3BwCmluZGV4IDAxNjJkMzBkMWZkZDMwMmEzYjVjM2VkYjM4ZGNj
YjllZWUxMzMxMDQuLjFlNTU5NTU1NDE4ZjgxN2RjYjhkNDBmZjlkM2RmN2I1MmJjNzNmZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3Bw
CkBAIC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJU
QykKIAogI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIExpYldl
YlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2FsbGJhY2soQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9pbnB1dENhbGxiYWNrTG9jayk7CiAgICAgbV9pbnB1dENhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgTGliV2ViUlRDUnRwVHJh
bnNmb3JtQmFja2VuZDo6VHJhbnNmb3JtKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlRyYW5zZm9y
bWFiCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5wdXRDYWxsYmFj
a0xvY2spOwogICAgICAgICBpZiAobV9pbnB1dENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX2lu
cHV0Q2FsbGJhY2soTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lKFdURk1vdmUocnRjRnJh
bWUpKSk7CisgICAgICAgICAgICBtX2lucHV0Q2FsbGJhY2sobWFrZVVuaXF1ZVJlZjxMaWJXZWJS
VENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+KFdURk1vdmUocnRjRnJhbWUpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFmYTU1ZDk0NWM1
ZTczOTYwN2UwNTBiNDdhMWVlOWFlYjUyZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaApAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZURlZmVycmVkLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdyaXRhYmxlU3RyZWFtU2luayA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdyaXRhYmxlU3RyZWFtU2luaz4geworcHVibGljOgorICAgIHZpcnR1YWwg
fldyaXRhYmxlU3RyZWFtU2luaygpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCB3cml0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlLCBET01Qcm9taXNlRGVmZXJy
ZWQ8dm9pZD4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZXJyb3IoU3RyaW5nJiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0
cmVhbVNpbmsuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3Ry
ZWFtU2luay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNmMDYwMDk0YjhlY2VkN2M5Njg5ZTE1ZGJjYjQ3ZGYz
YTY4M2YwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbVNpbmsuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisK
K1sKKyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlv
bgorXSBpbnRlcmZhY2UgV3JpdGFibGVTdHJlYW1TaW5rIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0
RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTx1bmRlZmluZWQ+IHdyaXRlKGFueSB2YWx1ZSk7Cisg
ICAgdW5kZWZpbmVkIGNsb3NlKCk7CisgICAgdW5kZWZpbmVkIGVycm9yKERPTVN0cmluZyBtZXNz
YWdlKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVkZjhkNWFiNGEwMGI3YjEyYWM0ZjBlNDQ0ODVj
ZTQ2ZDI3NDkwMDkuLmIwZjg5MDg5NzMyNTRmNTQxMTM5ZjI0OWU5ODFkMmE4MjU4OGVkOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC0xNTgsNiArMTU4LDkgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RW5jb2RlZEF1ZGlvRnJhbWUuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFt
ZS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDSWNlVHJhbnNwb3J0LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKQEAgLTE2NSw2ICsxNjgsOCBAQCBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSWNlRXZlbnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNw
cAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
Y3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCkBAIC02MjIsNiArNjI3LDcgQEAgYmluZGlu
Z3MvanMvV2ViQ29yZUpJVE9wZXJhdGlvbnMuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGll
bnREYXRhLmNwcAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAog
YmluZGluZ3MvanMvV2luZG93UHJveHkuY3BwCitiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5j
cHAKIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAogYnJpZGdlL05QX2pzb2JqZWN0LmNwcAogYnJp
ZGdlL2MvQ1J1bnRpbWVPYmplY3QuY3BwCkBAIC0zMjk1LDYgKzMzMDEsOCBAQCBKU1JUQ0RhdGFD
aGFubmVsLmNwcAogSlNSVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAogSlNSVENEZWdyYWRhdGlvblBy
ZWZlcmVuY2UuY3BwCiBKU1JUQ0R0eFN0YXR1cy5jcHAKK0pTUlRDRW5jb2RlZEF1ZGlvRnJhbWUu
Y3BwCitKU1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcAogSlNSVENJY2VDYW5kaWRhdGUuY3BwCiBK
U1JUQ0ljZUNhbmRpZGF0ZUluaXQuY3BwCiBKU1JUQ0ljZUNhbmRpZGF0ZVR5cGUuY3BwCkBAIC0z
MzIzLDEyICszMzMxLDE0IEBAIEpTUlRDUnRwUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwUmVjZWl2
ZXIuY3BwCiBKU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5jcHAKK0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcAorSlNSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lci5jcHAKK0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5jcHAKIEpTUlRD
UnRwU2VuZFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNlbmRlci5jcHAKIEpTUlRDUnRwU3luY2hy
b25pemF0aW9uU291cmNlLmNwcAogSlNSVENSdHBUcmFuc2NlaXZlci5jcHAKIEpTUlRDUnRwVHJh
bnNjZWl2ZXJEaXJlY3Rpb24uY3BwCi1KU1JUQ1J0cFRyYW5zZm9ybS5jcHAKIEpTUlRDU2RwVHlw
ZS5jcHAKIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAogSlNSVENTZXNzaW9uRGVzY3JpcHRp
b25Jbml0LmNwcApAQCAtMzcyMSw2ICszNzMxLDcgQEAgSlNXb3JrbGV0T3B0aW9ucy5jcHAKIEpT
V3JpdGFibGVTdHJlYW0uY3BwCiBKU1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3Bw
CiBKU1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5jcHAKK0pTV3JpdGFibGVTdHJlYW1TaW5r
LmNwcAogSlNYTUxEb2N1bWVudC5jcHAKIEpTWE1MSHR0cFJlcXVlc3QuY3BwCiBKU1hNTEh0dHBS
ZXF1ZXN0RXZlbnRUYXJnZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTA0MTQ4Y2E4ZjI4ZjFkMjljMGMyNmIyZTVlZDE2
NDIwM2JjMzZiMi4uMzRjMjEyNzY0MzBkYWYzMDhiN2U0NDQwMjVlMmQyNjE2MWZmOThiYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTEwNSw5ICsxMTA1LDYgQEAKIAkJNDE4MUM1Q0IyNTU1ODJFNDAwQUVCMEZGIC8qIFJUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MUM1Q0EyNTU1ODJFMzAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybWFi
bGVGcmFtZS5oICovOyB9OwogCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYgLyogTGliV2ViUlRD
UnRwVHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTgxQzVDQzI1NTU4MzY4MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lLmggKi87IH07CiAJCTQxODFDNUQxMjU1NTg5NTYwMEFFQjBGRiAvKiBM
aWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVDRjI1NTU4OTU2MDBBRUIwRkYgLyogTGliV2ViUlRD
UnRwVHJhbnNmb3JtQmFja2VuZC5oICovOyB9OwotCQk0MTgxQzVENjI1NTVDMUI5MDBBRUIwRkYg
LyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uaCAqLzsgfTsKLQkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBU
cmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICov
OyB9OwotCQk0MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3Jt
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkYz
RTkyMUMxRjg1NTUwMDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9Owog
CQk0MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQyMjU1
QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODFDNjRBMjU1QjRDMjgwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBT
RnJhbWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAwRDYyMjA3IC8qIFJU
Q0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1NzMsNyArNzU3MCw2
IEBACiAJCTQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMjQyNTUyRUVBOTAwRTY1MDU1IC8qIFJUQ1J0
cFJlY2VpdmVyK1RyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIlJUQ1J0cFJl
Y2VpdmVyK1RyYW5zZm9ybS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTND
OEIyNjI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gIlJUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzQzhCMjkyNTUyRjAxMzAwRTY1MDU1IC8qIFJUQ1J0cFRy
YW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwVHJhbnNmb3JtLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMkUyNTUyRjI3QjAwRTY1MDU1IC8q
IFJUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTNDOEIyRjI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFRyYW5zZm9ybS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIzMDI1NTJGMjdDMDBFNjUwNTUgLyogUlRDUnRw
UmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzU4Miw2ICs3NTc4LDI3IEBACiAJCTQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAvKiBN
ZW1vcnlSZWxlYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVJl
bGVhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTAwN0IxREIwRTcwNzAw
MjM0MUQyIC8qIE1lbW9yeVJlbGVhc2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE1lbW9yeVJlbGVhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzRkM0Q0QxRkQxREQ4QzAwNTQxQzRCIC8qIFNlcnZpY2VXb3JrZXJDbGll
bnRRdWVyeU9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTQxODlFRjI1NjJERjBDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlk
ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3Zp
ZGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjAyNTYyREY1NTAw
MzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE0MTg5RjEyNTYyREY1NjAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUYyMjU2MkUzMkIwMDM2MzQxNyAvKiBS
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDUnRwU2NyaXB0VHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
NDE4OUYzMjU2MkUzMkMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY0MjU2MkUzMkMwMDM2
MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjUyNTYyRTMyRDAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY2MjU2
MkU2N0EwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjcyNTYyRTY3
QTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGOTI1NjQxNjUwMDAzNjM0MTcg
LyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ0Vu
Y29kZWRBdWRpb0ZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5
RkEyNTY0MTY1MTAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBSVENFbmNvZGVkVmlkZW9GcmFtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxNDE4OUZCMjU2NDE3NTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9G
cmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkQXVkaW9G
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGRDI1NjQxNzY2MDAz
NjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE0MTg5RkUyNTY0MThFMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRBdWRpb0Zy
YW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RkYyNTY0MThFNzAw
MzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDAyNTY0MzU5NzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFt
U2luay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW1TaW5rLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDIyNTY0MzU5ODAwMzYzNDE3IC8q
IFdyaXRhYmxlU3RyZWFtU2luay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
cml0YWJsZVN0cmVhbVNpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThB
MDMyNTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTA1MjU2NjYwQUYwMDM2MzQxNyAvKiBS
VENFbmNvZGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UlRDRW5jb2RlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThB
MDYyNTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE0NDYwQTAyNDEyOTk0MTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZp
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1OThCRTIzQzhBQUI4MDAy
QjlDQzggLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxT
YW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc2OTcsOSArNzcxNCw2IEBACiAJCTQxODFDNUNDMjU1NTgzNjgwMEFFQjBGRiAvKiBMaWJXZWJS
VENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGli
V2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxODFDNUNFMjU1NTg5NTUwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5z
Zm9ybUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzVDRjI1
NTU4OTU2MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg7
IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk0MTgxQzVEMzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JU
Q1J0cFRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2NrUlRDUnRwVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE4
MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MTgxQzYzNjI1NUFFMjYxMDBBRUIwRkYgLyogTW9ja1JUQ1J0
cFRyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAvKiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm1lckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTgxQzY0MTI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzY0
MjI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDMwLDYgKzE3MDQ0LDE0IEBACiAJCQkJMDcyMjFC
NkUxN0NFQzMyNzAwODQ4RTUxIC8qIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsICovLAogCQkJ
CTQxRkNCNzVFMjE0ODY2RkYwMDM4QURDNiAvKiBSVENEdHhTdGF0dXMuaCAqLywKIAkJCQk0MUZD
Qjc1NzIxNDg2NUQxMDAzOEFEQzYgLyogUlRDRHR4U3RhdHVzLmlkbCAqLywKKwkJCQk0MTQxODlG
RTI1NjQxOEUwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwICovLAorCQkJCTQx
NDE4OUZCMjU2NDE3NTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5oICovLAorCQkJ
CTQxNDE4OUY5MjU2NDE2NTAwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgKi8s
CisJCQkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5jcHAgKi8s
CisJCQkJNDE0MThBMDYyNTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5oICovLAor
CQkJCTQxNDE4OUZGMjU2NDE4RTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkVmlkZW9GcmFtZS5jcHAg
Ki8sCisJCQkJNDE0MTg5RkQyNTY0MTc2NjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1l
LmggKi8sCisJCQkJNDE0MTg5RkEyNTY0MTY1MTAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0Zy
YW1lLmlkbCAqLywKIAkJCQkwNzIyMUI3MTE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlk
YXRlLmNwcCAqLywKIAkJCQkwNzIyMUI3MjE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlk
YXRlLmggKi8sCiAJCQkJMDcyMjFCNzMxN0NFQzMyNzAwODQ4RTUxIC8qIFJUQ0ljZUNhbmRpZGF0
ZS5pZGwgKi8sCkBAIC0xNzA5MCw2ICsxNzExMiwxNSBAQAogCQkJCTQxM0M4QjMwMjU1MkYyN0Mw
MEU2NTA1NSAvKiBSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaCAqLywKIAkJCQk0MUZDQjc2
MDIxNDg2NzAwMDAzOEFEQzYgLyogUlRDUnRwUnR4UGFyYW1ldGVycy5oICovLAogCQkJCTQxRkNC
NzU4MjE0ODY1RDIwMDM4QURDNiAvKiBSVENSdHBSdHhQYXJhbWV0ZXJzLmlkbCAqLywKKwkJCQk0
MTQxODlGNDI1NjJFMzJDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcCAqLywK
KwkJCQk0MTQxODlGMjI1NjJFMzJCMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgg
Ki8sCisJCQkJNDE0MTg5RjAyNTYyREY1NTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bS5pZGwgKi8sCisJCQkJNDE0MTg5RjMyNTYyRTMyQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyLmNwcCAqLywKKwkJCQk0MTQxODlGNTI1NjJFMzJEMDAzNjM0MTcgLyogUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuaCAqLywKKwkJCQk0MTQxODlGMTI1NjJERjU2MDAzNjM0MTcgLyog
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsICovLAorCQkJCTQxNDE4OUY2MjU2MkU2N0EwMDM2
MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmggKi8sCisJCQkJNDE0
MTg5RjcyNTYyRTY3QTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0
b3IuaWRsICovLAorCQkJCTQxNDE4OUVGMjU2MkRGMEMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1Qcm92aWRlci5pZGwgKi8sCiAJCQkJNDEzQzhCMjYyNTUyRUVBOTAwRTY1MDU1IC8q
IFJUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsICovLAogCQkJCTVFMkM0MzU5MUJDRUUzMEQwMDAx
RTJCQyAvKiBSVENSdHBTZW5kZXIuY3BwICovLAogCQkJCTVFMkM0MzVBMUJDRUUzMEQwMDAxRTJC
QyAvKiBSVENSdHBTZW5kZXIuaCAqLywKQEAgLTE3MTEzLDcgKzE3MTQ0LDYgQEAKIAkJCQkzMTZE
Q0IxNzFFNzhDMzMwMDAxQjVGODcgLyogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsICov
LAogCQkJCTQxODFDNUM2MjU1NTczNTEwMEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm0uY3BwICov
LAogCQkJCTQxM0M4QjJGMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaCAqLywK
LQkJCQk0MTNDOEIyOTI1NTJGMDEzMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmlkbCAqLywK
IAkJCQk0MTgxQzVDQTI1NTU4MkUzMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmggKi8sCiAJCQkJNDE4MUM1QzgyNTU1NzNERjAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQuaCAqLywKIAkJCQk0MTBGNTY1ODI0RkNGODU0MDBBMkU1MEMgLyogUlRDU2RwVHlwZS5p
ZGwgKi8sCkBAIC0xOTI2OCw5ICsxOTI5OCw2IEBACiAJCQkJQTFDQkVGNjMxRjlGMTEyOTAwMjhE
RTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggKi8sCiAJCQkJQTE0MDYxODkxRTJFQ0EwQTAwMzJC
MzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQlBMTQwNjE4QTFFMkVD
QTBBMDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCAqLywKLQkJCQk0MTgxQzVE
MzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi8sCi0JCQkJNDE4
MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLywKLQkJCQk0
MTgxQzYzNjI1NUFFMjYxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgKi8sCiAJ
CQkJNTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaCAqLywKIAkJCQk1NzE1NjEwRDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZFRTE0RjAw
OEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLApAQCAtMTkzODcsNiArMTk0
MTQsOCBAQAogCQkJCTQxNzY2NzMwMjREQzA4RUEwMDhCRkUyOCAvKiBXcml0YWJsZVN0cmVhbURl
ZmF1bHRXcml0ZXIuaWRsICovLAogCQkJCTQxNzY2NzMyMjREQzA4RUIwMDhCRkUyOCAvKiBXcml0
YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuanMgKi8sCiAJCQkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQw
Rjc1IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzICovLAorCQkJCTQxNDE4QTAyMjU2NDM1
OTgwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbVNpbmsuaCAqLywKKwkJCQk0MTQxOEEwMDI1NjQz
NTk3MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1TaW5rLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gc3RyZWFtczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjgxOSw2ICsyNjg0
OCw4IEBACiAJCQkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5
Q29udHJvbGxlci5oICovLAogCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQ
cm94eS5jcHAgKi8sCiAJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5
LmggKi8sCisJCQkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNw
cCAqLywKKwkJCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
MzM0ODEsNyArMzM1MTIsNiBAQAogCQkJCTRBMEZGQTlFMUFBRjVFN0UwMDYyODAzQiAvKiBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFRTc2RUMx
QkU5NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxODFDNUQ2MjU1NUMxQjkwMEFFQjBGRiAvKiBN
b2NrUlRDUnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxNzE4MjA1NDA3
MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTU3MSw3ICszNTYwMSw2IEBACiAJCQkJ
QTEwNEVDNUQyMjBBM0U0QjAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0RmllbGRzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBKU01vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1QjgyMTU5QjNB
NDAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0
MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTU3MTU2MTE0MjM0QzdGRDYwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDI3REE3MUQx
MzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFQkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNTU4Nyw3ICszNTYxNiw2IEBACiAJCQkJMkQ5N0YwNDcx
OURENDEzQzAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMUFGRURFNzFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQwNjE4QjFFMkVDQTBBMDAzMkIzNEUgLyogTW9j
a1ByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE4MUM1RDcyNTU1
QzQ5QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQUE1RjNCOEYxNkNDNEIzOTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJN
b2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxN0YwRDgyMUZGRUU5NzkwMDhFRjMwMyAvKiBT
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRDQxQzY3MjI1
Njg3NEYwMDY5Nzk0MiAvKiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCmluZGV4IDFlMTY4YjdkZGFiZjQwZTg5MWY2ZGQ1
N2JjMDMzMDBhOWYwZWM4M2UuLjA4OWIyYjAzZDY1ZDdmZDRjMzdmNTViY2QxYTM0Y2UxM2Q0OWI4
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCkBAIC04OSw2ICs4OSwyMiBAQCB2b2lk
IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVycm9yKGNvbnN0IEV4Y2VwdGlvbiYg
ZXhjZXB0aW9uKQogICAgIGludm9rZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJGdW5j
dGlvbihnbG9iYWxPYmplY3QoKSwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CiB9CiAKK2Jvb2wg
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZShKU0M6OkpTVmFsdWUgdmFs
dWUpCit7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IHRo
aXMtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgSlNDOjpNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCgmanNDb250cm9s
bGVyKCkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOworCisgICAgYXV0byogY2xpZW50
RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpLmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVp
bHRpbkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5yZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZVByaXZhdGVOYW1lKCk7CisKKyAgICByZXR1
cm4gaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGdsb2JhbE9i
amVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKK30KKwogYm9vbCBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBpZiAoIWJ1ZmZlcikgewpAQCAtMTA5LDE0ICsxMjUsNyBAQCBib29sIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlND
OjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCgm
anNDb250cm9sbGVyKCkpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwotCi0gICAgYXV0
byogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50
RGF0YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMo
KS5yZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZVByaXZhdGVOYW1lKCk7Ci0K
LSAgICByZXR1cm4gaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9u
KGdsb2JhbE9iamVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gZW5x
dWV1ZSh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIuaAppbmRleCA2ZDEyMzQzNDI0NWM0YWY3NjA4YjBkOGMwZmYxOWJlYTM5OTE2OWRkLi44
ODRjMGE5YWM3NzNjOTM1M2EzNGQwZDc2ZDgwMjgzMGJjYmExMWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ciogY29udHJvbGxlcikgOiBtX2pzQ29udHJvbGxlcihjb250cm9sbGVyKSB7IH0KIAogICAgIGJv
b2wgZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CisgICAgYm9vbCBlbnF1ZXVl
KEpTQzo6SlNWYWx1ZSk7CiAgICAgdm9pZCBlcnJvcihjb25zdCBFeGNlcHRpb24mKTsKICAgICB2
b2lkIGNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVC
dWlsdGluTmFtZXMuaAppbmRleCAxNGQ2ZGY0NzIxODIxY2U1OTEyZjE1OGVjNDEwMDMyOWYzNmJl
MDMwLi4wZjc0N2NkZjFlYmRkZDY5ZDQzZDgxYWM5MmM0NzQ1NmI3YTM0N2Q4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMjAs
NiArMjIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0
aW9uSWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAogICAgIG1hY3JvKFJU
Q1J0cFNGcmFtZVRyYW5zZm9ybSkgXAorICAgIG1hY3JvKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSkg
XAogICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVy
KSBcCiAgICAgbWFjcm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI5NjliZGUxNWYzOTc2OGFk
MzQ2ZTc3ZThjY2Q1MzYwYjRmNDc1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVu
Y2VzLmgiCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVhbVNpbmsuaCIKKyNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJl
YW06OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWZQ
dHI8V3JpdGFibGVTdHJlYW1TaW5rPiYmIHNpbmspCit7CisgICAgVk0mIHZtID0gbGV4aWNhbEds
b2JhbE9iamVjdC52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisKKyAgICBhdXRvKiBj
b25zdHJ1Y3RvciA9IEpTQzo6YXNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5Xcml0YWJsZVN0cmVhbVByaXZhdGVO
YW1lKCkpKTsKKworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0s
IGNvbnN0cnVjdG9yKTsKKyAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRh
OjpUeXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJn
cy5hcHBlbmQoc2luayA/IHRvSlNOZXdseUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmplY3QsICZn
bG9iYWxPYmplY3QsIHNpbmsucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzVW5kZWZpbmVkKCkp
OworICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgSlNPYmplY3QqIG9i
amVjdCA9IEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvciwg
Y29uc3RydWN0RGF0YSwgYXJncyk7CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0g
IW9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhp
c3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0
LCAqanNDYXN0PEpTV3JpdGFibGVTdHJlYW0qPihvYmplY3QpKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVkYjgwNTg5
YzAyZjA2ZjFkODQ0NDUxOWIzNjNjMGRhZWVmYjRiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgKQEAgLTAsMCArMSw4NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
KyNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgV3JpdGFibGVTdHJlYW1TaW5rOworCitjbGFzcyBXcml0YWJsZVN0cmVhbSBmaW5h
bCA6IHB1YmxpYyBET01HdWFyZGVkPEpTV3JpdGFibGVTdHJlYW0+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFdyaXRhYmxlU3RyZWFtPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNXcml0YWJsZVN0cmVhbSYganNTdHJlYW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV3JpdGFibGVTdHJlYW0oZ2xvYmFsT2JqZWN0LCBqc1N0cmVhbSkpOyB9CisKKyAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QmLCBSZWZQdHI8V3JpdGFibGVTdHJlYW1TaW5rPiYmKTsKKyAgICBKU1dyaXRhYmxlU3Ry
ZWFtKiB3cml0YWJsZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQorCitwcml2
YXRlOgorICAgIFdyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNXcml0YWJsZVN0
cmVhbSYpOworfTsKKworc3RydWN0IEpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyIHsK
KyAgICBzdGF0aWMgUmVmUHRyPFdyaXRhYmxlU3RyZWFtPiB0b1dyYXBwZWQoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsK
KyAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4odm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvKiBX
cml0YWJsZVN0cmVhbSA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4odm0s
IHZhbHVlKTsKKyAgICAgICAgaWYgKCFXcml0YWJsZVN0cmVhbSkKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgICAgIHJldHVybiBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9i
YWxPYmplY3QsICpXcml0YWJsZVN0cmVhbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdyaXRhYmxlU3RyZWFtPiB7CisgICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gSlNXcml0YWJsZVN0cmVhbVdyYXBwZXJDb252ZXJ0ZXI7CisgICAg
dXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFJlZlB0cjxXcml0YWJsZVN0cmVhbT47CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOworfTsKKworaW5saW5lIFdy
aXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBKU1dyaXRhYmxlU3RyZWFtJiBXcml0YWJsZVN0cmVhbSkKKyAgICA6IERPTUd1YXJkZWQ8
SlNXcml0YWJsZVN0cmVhbT4oZ2xvYmFsT2JqZWN0LCBXcml0YWJsZVN0cmVhbSkKK3sKK30KKwor
aW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgV3JpdGFibGVTdHJlYW0qIHN0cmVhbSkKK3sKKyAgICByZXR1cm4gc3RyZWFt
ID8gc3RyZWFtLT53cml0YWJsZVN0cmVhbSgpIDogSlNDOjpqc1VuZGVmaW5lZCgpOworfQorCitp
bmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFdyaXRhYmxlU3RyZWFtPiYmIHN0cmVhbSkKK3sKKyAg
ICByZXR1cm4gc3RyZWFtLT53cml0YWJsZVN0cmVhbSgpOworfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBhOWRhOTQ1MjhmMWI0MGZjYmRlODlmYTBj
NTRlMmVkZjE5ODk4OGIyLi4xYzkyOWQ4MGRlNWViZmVlMDQwZmI1ODA3OGNkYzcxZTc2YzE4ZTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTM4LDYgKzM4
LDcgQEAgUmVtb3RlUGxheWJhY2sgY29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
CiBSVENEYXRhQ2hhbm5lbCBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENEVE1GU2VuZGVyIGNvbmRp
dGlvbmFsPVdFQl9SVEMKIFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPVdFQl9SVEMKK1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybSBjb25kaXRpb25hbD1XRUJfUlRDCiBTZXJ2aWNlV29ya2VyIGNv
bmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGNvbmRpdGlv
bmFsPVNFUlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgY29uZGl0aW9uYWw9
U0VSVklDRV9XT1JLRVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlM2Rm
ZTc5NTE2YzM1OWFkODQwNzdiZjVmZTg1MmZiOTFmN2UzZWQwLi5hZDYzN2ZmNDRmOTZmMGI1NGUx
ZjE2ZDgzZDE5OGQ2YTM0MzBhNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xMzgsNyArMTM4LDYgQEAKICNpbmNsdWRlICJNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJNb2NrUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJNb2NrUGFnZU92
ZXJsYXlDbGllbnQuaCIKLSNpbmNsdWRlICJNb2NrUlRDUnRwVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiTmF2aWdhdG9yQmVhY29uLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIgpAQCAtMTU3NywxMSArMTU3Niw2
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2wgdmFsdWUpCiAj
ZW5kaWYKIH0KIAotUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IEludGVybmFsczo6Y3JlYXRlTW9j
a1JUQ1J0cFRyYW5zZm9ybSgpCi17Ci0gICAgcmV0dXJuIE1vY2tSVENSdHBUcmFuc2Zvcm06OmNy
ZWF0ZSgpOwotfQotCiB1aW50NjRfdCBJbnRlcm5hbHM6OnNmcmFtZUNvdW50ZXIoY29uc3QgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgcmV0dXJuIHRyYW5zZm9ybS5j
b3VudGVyRm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjgz
N2MzYjNhMDRkMzYwMzA1N2RlMjc1NDAyM2FlNzI3ZmVlYTkyZi4uMThjNDVlYmMzNjMwZTk0YTk3
YjAyZDYzNDQ3ZGFmNGQwZWQyN2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBA
IC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJIRVZD
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJNb2NrUlRDUnRw
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgogI2luY2x1ZGUg
IlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgpA
QCAtNjEwLDcgKzYwOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYlJUQ0gyNjVTdXBwb3J0
KGJvb2wpOwogICAgIHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sKTsKICAgICB2b2lkIHNl
dFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCk7Ci0gICAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+
IGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKICAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVy
KGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgc2V0RW5hYmxlV2ViUlRD
RW5jcnlwdGlvbihib29sKTsKICAgICB2b2lkIHNldFVzZURUTFMxMChib29sKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhZTNhNjFmY2EwM2RjNGI2Njc0NzNkMDA1Zjgy
OGUxNWUwYjk5ODNhLi41NDNhOTU0MGVjNGM2MzRhY2JhM2VlYzY2MThmMDM2NjE2NjFjYzRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04MDIsNyArODAyLDYgQEAgZW51
bSBUcmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJS
VENIMjY1U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRD
XSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtD
b25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29s
ZWFuIGFsbG93ZWQpOwotICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSBNb2NrUlRDUnRwVHJhbnNm
b3JtIGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JU
Q10gdW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
IHRyYW5zZm9ybSk7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQg
c2V0TW9ja0F1ZGlvVHJhY2tDaGFubmVsTnVtYmVyKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIHVu
c2lnbmVkIHNob3J0IGNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENS
dHBUcmFuc2Zvcm0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDNhMTZhODRl
OGVkOWEyN2Q4MGMxNGFiOGZjZjg1YjMwMmZiZDY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJNb2NrUlRDUnRwVHJhbnNmb3JtLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1JUQykKLQot
I2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3Jt
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9ja1JUQ1J0cFRyYW5zZm9ybWVyLCBX
VEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxN
b2NrUlRDUnRwVHJhbnNmb3JtZXI+IGNyZWF0ZShSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4m
JiBiYWNrZW5kKQotICAgIHsKLSAgICAgICAgYXV0byB0cmFuc2Zvcm1lciA9IGFkb3B0UmVmKCpu
ZXcgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKFdURk1vdmUoYmFja2VuZCkpKTsKLSAgICAgICAgdHJh
bnNmb3JtZXItPm1fYmFja2VuZC0+c2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3RyYW5z
Zm9ybWVyXShhdXRvJiYgZnJhbWUpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybWVyLT50cmFuc2Zv
cm0oV1RGTW92ZShmcmFtZSkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHRyYW5zZm9y
bWVyOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9iYWNrZW5k
LT5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Ci0gICAgICAgIG1fYmFja2VuZCA9
IG51bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCB0cmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtYWJs
ZUZyYW1lJiYgZnJhbWUpCi0gICAgewotICAgICAgICBtX2lzUHJvY2Vzc2luZyA9IHRydWU7Ci0K
LSAgICAgICAgYXV0byBkYXRhID0gZnJhbWUuZGF0YSgpOwotICAgICAgICBWZWN0b3I8dWludDhf
dD4gdHJhbnNmb3JtZWREYXRhOwotICAgICAgICBzaXplX3Qgc3RhcnQgPSBtX2lzQXVkaW8gPyAw
IDogMTAwOwotICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHN0YXJ0OyArK2Nw
dHIpCi0gICAgICAgICAgICB0cmFuc2Zvcm1lZERhdGEuYXBwZW5kKGRhdGEuZGF0YVtjcHRyXSk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGNwdHIgPSBzdGFydDsgY3B0ciA8IGRhdGEuc2l6ZTsgKytj
cHRyKQotICAgICAgICAgICAgdHJhbnNmb3JtZWREYXRhLmFwcGVuZCgyNTYgLSBkYXRhLmRhdGFb
Y3B0cl0pOwotICAgICAgICBmcmFtZS5zZXREYXRhKHsgdHJhbnNmb3JtZWREYXRhLmRhdGEoKSwg
ZGF0YS5zaXplIH0pOwotCi0gICAgICAgIG1fYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJh
bWUoV1RGTW92ZShmcmFtZSkpOwotICAgIH0KLQotICAgIGJvb2wgaXNQcm9jZXNzaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Byb2Nlc3Npbmc7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBN
b2NrUlRDUnRwVHJhbnNmb3JtZXIoUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2Vu
ZCkKLSAgICAgICAgOiBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKLSAgICAgICAgLCBtX2lz
U2VuZGVyKG1fYmFja2VuZC0+c2lkZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OlNpZGU6
OlNlbmRlcikKLSAgICAgICAgLCBtX2lzQXVkaW8obV9iYWNrZW5kLT5tZWRpYVR5cGUoKSA9PSBS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpNZWRpYVR5cGU6OkF1ZGlvKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4gbV9iYWNrZW5kOwotICAgIGJvb2wg
bV9pc1NlbmRlcjsKLSAgICBib29sIG1faXNBdWRpbzsKLSAgICBib29sIG1faXNQcm9jZXNzaW5n
IHsgZmFsc2UgfTsKLX07Ci0KLU1vY2tSVENSdHBUcmFuc2Zvcm06Ok1vY2tSVENSdHBUcmFuc2Zv
cm0oKQotewotfQotCi1Nb2NrUlRDUnRwVHJhbnNmb3JtOjp+TW9ja1JUQ1J0cFRyYW5zZm9ybSgp
Ci17Ci19Ci0KLWJvb2wgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6aXNQcm9jZXNzaW5nKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV90cmFuc2Zvcm1lciA/IG1fdHJhbnNmb3JtZXItPmlzUHJvY2Vzc2lu
ZygpIDogZmFsc2U7Ci19Ci0KLXZvaWQgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJh
Y2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQotewotICAg
IG1fdHJhbnNmb3JtZXIgPSBNb2NrUlRDUnRwVHJhbnNmb3JtZXI6OmNyZWF0ZShiYWNrZW5kKTsK
LX0KLQotdm9pZCBNb2NrUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRl
cihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQotewotICAgIG1fdHJhbnNmb3JtZXIg
PSBNb2NrUlRDUnRwVHJhbnNmb3JtZXI6OmNyZWF0ZShiYWNrZW5kKTsKLX0KLQotdm9pZCBNb2Nr
UlRDUnRwVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQm
KQotewotICAgIG1fdHJhbnNmb3JtZXItPmNsZWFyKCk7Ci0gICAgbV90cmFuc2Zvcm1lciA9IG51
bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJh
bnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5OTRkZmY3MTc0MzIzNTM1MWY4ZjBhMzM5
NmZjNTlhMWNhZDI5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaAorKysgL2Rl
di9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfUlRDKQotCi0jaW5j
bHVkZSAiUlRDUnRwVHJhbnNmb3JtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
TW9ja1JUQ1J0cFRyYW5zZm9ybWVyOwotCi1jbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtIGZpbmFs
IDogcHVibGljIFJUQ1J0cFRyYW5zZm9ybSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNb2Nr
UlRDUnRwVHJhbnNmb3JtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tSVENS
dHBUcmFuc2Zvcm0oKSk7IH0KLSAgICB+TW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgYm9v
bCBpc1Byb2Nlc3NpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBNb2NrUlRDUnRwVHJhbnNm
b3JtKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJh
bnNmb3JtQmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5k
ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgd2lsbENsZWFyQmFj
a2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0KLSAgICBSZWZQdHI8TW9ja1JU
Q1J0cFRyYW5zZm9ybWVyPiBtX3RyYW5zZm9ybWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGU2MzE4NzYwNTk0YjY5ZjI3YTAxZDY1ZTA4ODk4MDVmMzM3NDFjMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25k
aXRpb25hbD1XRUJfUlRDLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEpTR2VuZXJh
dGVUb05hdGl2ZU9iamVjdCwKLSAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJm
YWNlIE1vY2tSVENSdHBUcmFuc2Zvcm0gOiBSVENSdHBUcmFuc2Zvcm0gewotICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGlzUHJvY2Vzc2luZzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGVmMWQ4
YmNhZGEyNWJjMjVmMTUxN2U3ODg5ZTI0MWMzZTQ5ZTNkYWUuLjE1OTljY2M5M2U0NjJkMjBlNjli
M2Q5MTRhNjkwNTA3M2E3YWI3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0zNSw3ICszNSwxMCBAQAogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlclRocmVhZC5oIgorI2luY2x1
ZGUgIkpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlICJKU1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNp
bmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIgogI2luY2x1ZGUgIlJlcXVlc3RBbmlt
YXRpb25GcmFtZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKQEAgLTExMiw0ICsxMTUsNzIgQEAgdm9pZCBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUoQ2FsbGJhY2tJZCBjYWxs
YmFja0lkKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKK0V4Y2VwdGlvbk9yPHZv
aWQ+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKFN0cmluZyYmIG5hbWUsIFJlZjxKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3Ry
dWN0b3I+JiYgdHJhbnNmb3JtZXJDb25zdHJ1Y3RvcikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTmFtZSBjYW5ub3QgYmUgdGhlIGVtcHR5IHN0cmlu
ZyJfcyB9OworCisgICAgaWYgKG1fcnRjUnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcC5jb250
YWlucyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCAiQSB0cmFuc2Zvcm1lciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9z
IH07CisKKyAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gdHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7CisgICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0ganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKHZtKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNsYXNzIGRlZmluaXRpdGlvbiBwYXNzZWQg
dG8gcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigpIGlzIG5vdCBhIGNvbnN0cnVjdG9y
Il9zIH07CisKKyAgICBhdXRvIHByb3RvdHlwZSA9IGpzQ29uc3RydWN0b3ItPmdldFByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNl
cHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworCisgICAgaWYgKCFwcm90b3R5cGUu
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNsYXNz
IGRlZmluaXRpdGlvbiBwYXNzZWQgdG8gcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigp
IGhhcyBpbnZhbGlkIHByb3RvdHlwZSJfcyB9OworCisgICAgbV9ydGNSdHBUcmFuc2Zvcm1lckNv
bnN0cnVjdG9yTWFwLmFkZChuYW1lLCBXVEZNb3ZlKHRyYW5zZm9ybWVyQ29uc3RydWN0b3IpKTsK
KworICAgIHRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkucG9zdFRhc2tUb1dvcmtlck9iamVj
dChbbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKGF1dG8mIHdvcmtlcikgbXV0YWJsZSB7Cisg
ICAgICAgIHdvcmtlci5hZGRSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihXVEZNb3ZlKG5hbWUpKTsK
KyAgICB9KTsKKworICAgIHJldHVybiB7IH07Cit9CisKK1JlZlB0cjxSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcj4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZVJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyKFN0cmluZyYmIG5hbWUsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCkKK3sK
KyAgICBhdXRvIGNvbnN0cnVjdG9yID0gbV9ydGNSdHBUcmFuc2Zvcm1lckNvbnN0cnVjdG9yTWFw
LmdldChuYW1lKTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3IpOworICAgIGlmICghY29uc3RydWN0
b3IpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byoganNDb25zdHJ1Y3RvciA9
IGNvbnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKKyAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmdsb2JhbE9iamVjdCgpOwor
ICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrIHsgZ2xvYmFs
T2JqZWN0IH07CisKKyAgICBtX3BlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQgPSBNZXNz
YWdlUG9ydDo6ZW50YW5nbGUoKnRoaXMsIFdURk1vdmUocG9ydCkpOworCisgICAgSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0
KGdsb2JhbE9iamVjdCwganNDb25zdHJ1Y3RvciwgYXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3Qg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIiKTsKKyAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAhb2JqZWN0KTsKKworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvJiBqc1Ry
YW5zZm9ybWVyID0gKkpTQzo6anNDYXN0PEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIqPihvYmpl
Y3QpOworICAgIGF1dG8mIHRyYW5zZm9ybWVyID0ganNUcmFuc2Zvcm1lci53cmFwcGVkKCk7Cisg
ICAgdHJhbnNmb3JtZXIuc2V0Q2FsbGJhY2sobWFrZVVuaXF1ZTxKU0NhbGxiYWNrRGF0YVN0cm9u
Zz4oJmpzVHJhbnNmb3JtZXIsIGdsb2JhbE9iamVjdCkpOworCisgICAgcmV0dXJuICZ0cmFuc2Zv
cm1lcjsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBj
YWFkNGNlYmE1OGJhODMzMmQ1ZTlhNjAzZGUxMjYyNjNkYWVhNzU3Li4wMThmNGFhMDk1NTRmMjc4
NzFhZTQ5YjhhODljYTJmNDUwZDRkNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC00NCw3ICs0NCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzOwogY2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkOworY2xhc3MgSlNSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lckNvbnN0cnVjdG9yOwogY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcjsKIGNsYXNzIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOwog
Y2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCkBAIC01NCw2ICs1Niw4IEBAIGNsYXNzIFdv
cmtlckFuaW1hdGlvbkNvbnRyb2xsZXI7CiB1c2luZyBDYWxsYmFja0lkID0gaW50OwogI2VuZGlm
CiAKK3VzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+OworCiBj
bGFzcyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJHbG9i
YWxTY29wZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSk7CiBwdWJsaWM6CkBAIC03MSw2ICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
YW5jZWxBbmltYXRpb25GcmFtZShDYWxsYmFja0lkKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisgICAgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiBjcmVhdGVSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCk7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcm
JiwgUmVmPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvcj4mJik7CisgICAgUmVm
UHRyPE1lc3NhZ2VQb3J0PiB0YWtlUGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydCgpIHsg
cmV0dXJuIFdURk1vdmUobV9wZW5kaW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0KTsgfQorI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgdXNpbmcgQmFzZSA9IFdvcmtlckdsb2JhbFNjb3BlOwogCkBA
IC04NSw2ICs5NSwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQog
ICAgIFJlZlB0cjxXb3JrZXJBbmltYXRpb25Db250cm9sbGVyPiBtX3dvcmtlckFuaW1hdGlvbkNv
bnRyb2xsZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvcj4+IG1fcnRjUnRw
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcDsKKyAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG1fcGVu
ZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmlkbAppbmRleCAyZDBjZTgyOTUxZmJlOTk3YThiYjU4YTdkNmI4Zjgz
ZGY2MTU2NzcxLi44Y2UzODQyYzI4MzVmMTc4MjMyODFjNTRjMzY3MDI1N2ZmNTEzNGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmlkbApAQCAtNDgsMyArNDgsNSBAQAogfTsKIAogW0NvbmRpdGlvbmFsPU9GRlNDUkVFTl9D
QU5WQVMsIEVuYWJsZWRBdFJ1bnRpbWU9T2Zmc2NyZWVuQ2FudmFzXSBEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZSBpbmNsdWRlcyBBbmltYXRpb25GcmFtZVByb3ZpZGVyOworLy8gRklYTUU6IEVu
YWJsZSB0aGlzIGJhc2VkIG9uIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zIHNldHRpbmcuCitbQ29u
ZGl0aW9uYWw9V0VCX1JUQ10gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgaW5jbHVkZXMgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5k
ZXggODA4MzM1ZDAyNzQxZmM5ODM5NWQ5Y2QyNzllYmU1OWMyMzMwMGUxNC4uNjJmOTE3YTM2Nzgx
OWRlYzNjZDQxMGQ5NzY2OTVjZWU2MmY2ZDRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVn
aWVzLmgiCisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgpAQCAtMjMwLDQgKzIzMSwyOCBAQCB2b2lkIFdvcmtl
cjo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCit2b2lkIFdvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoU3RyaW5nJiYg
bmFtZSkKK3sKKyAgICBtX3RyYW5zZm9ybWVycy5hZGQoV1RGTW92ZShuYW1lKSk7Cit9CisKK3Zv
aWQgV29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb25zdCBTdHJpbmcmIG5h
bWUsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgUlRDUnRwU2NyaXB0VHJhbnNmb3JtJiB0
cmFuc2Zvcm0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY29udGV4dFByb3h5LnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29w
ZShbbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBvcnQsIHRyYW5zZm9ybSA9IG1ha2VSZWYo
dHJhbnNmb3JtKV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIHRyYW5zZm9ybS0+
c2V0VHJhbnNmb3JtZXIoZG93bmNhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFdURk1vdmUobmFtZSksIHBvcnQpKTsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdHJhbnNmb3JtID0gV1RGTW92ZSh0cmFuc2Zvcm0p
XSB7IH0pOworICAgIH0pOworCit9CisKK3ZvaWQgV29ya2VyOjpwb3N0VGFza1RvV29ya2VyR2xv
YmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykK
K3sKKyAgICBtX2NvbnRleHRQcm94eS5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoV1RGTW92
ZSh0YXNrKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmgKaW5kZXggNjdmNGIyYjU4YWI1YWRlZmY2ZmNkMWNkOTU5ZDRiNjNiOWZmNTk1
ZC4uNTNmNWU2ZmZmMjdjOWZhM2U1YzBlMDFmMGY2YzQyYzZjYjZmOWQwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEpTVmFsdWU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOworY2xhc3MgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3Mg
V29ya2VyR2xvYmFsU2NvcGVQcm94eTsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKQEAgLTcw
LDYgKzcyLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIGZp
bmFsOwogCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgdm9pZCBhZGRSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcihTdHJpbmcmJik7CisgICAgYm9vbCBoYXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihj
b25zdCBTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIG1fdHJhbnNmb3JtZXJzLmNvbnRhaW5zKG5hbWUp
OyB9CisgICAgdm9pZCBjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb25zdCBTdHJpbmcm
LCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LCBSVENSdHBTY3JpcHRUcmFuc2Zvcm0mKTsKKyAgICB2
b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXb3Jr
ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6UnVudGltZUZsYWdzLCBjb25zdCBPcHRp
b25zJik7CiAKQEAgLTEwMCw2ICsxMDksOSBAQCBwcml2YXRlOgogICAgIEpTQzo6UnVudGltZUZs
YWdzIG1fcnVudGltZUZsYWdzOwogICAgIERlcXVlPFJlZlB0cjxFdmVudD4+IG1fcGVuZGluZ0V2
ZW50czsKICAgICBib29sIG1fd2FzVGVybWluYXRlZCB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisgICAgSGFzaFNldDxTdHJpbmc+IG1fdHJhbnNmb3JtZXJzOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oCmluZGV4IDU2ZGExMjA3Yjc3NzlmMmVhN2JhZTZhYjczNmY5
ZDJjOTU0ZjcyNDQuLjQwMDAzYzNlMDEwOTk5NjBmNjQ3ODYxZTcwMTY4N2QwZTM3MWQ3MmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCkBA
IC0zMywxMSArMzMsMTMgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7
CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyOwogZW51bSBjbGFz
cyBSZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7CiAKQEAgLTQ5LDYgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0
VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlz
T25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBv
bGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBK
U0M6OlJ1bnRpbWVGbGFncykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJH
bG9iYWxTY29wZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckds
b2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09u
bGluZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAppbmRleCBhNjFiNDE0ODYzM2JkZjIwZDUyYmU1NzY0ZGE5YjU1NGUxNjEwZDdkLi4x
MWZlMDZmYzZhMzZkODRjZTdjMmVhZWVmMzllY2Y2MTQ5NDIzNTgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMTEwLDI0ICsxMTAs
MzggQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVj
dChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG0KICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RU
YXNrVG9Xb3JrZXJPYmplY3QoRnVuY3Rpb248dm9pZChXb3JrZXImKT4mJiBmdW5jdGlvbikKIHsK
LSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47CisgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1
bmN0aW9uKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSB0
aGlzLT53b3JrZXJPYmplY3QoKTsKKyAgICAgICAgaWYgKCF3b3JrZXJPYmplY3QgfHwgYXNrZWRU
b1Rlcm1pbmF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmdW5jdGlvbigqd29y
a2VyT2JqZWN0KTsKKyAgICB9KTsKK30KIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sgdGFzayhbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6
OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
IG1lc3NhZ2UpCit7CisgICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQuaXNXb3JrZXJH
bG9iYWxTY29wZSgpKTsKICAgICAgICAgYXV0byYgY29udGV4dCA9IHN0YXRpY19jYXN0PERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlJj4oc2NyaXB0Q29udGV4dCk7CiAgICAgICAgIGF1dG8gcG9y
dHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1l
c3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwogICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpKSk7CiAgICAgICAgIGNvbnRleHQudGhyZWFkKCkud29ya2VyT2JqZWN0UHJv
eHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29udGV4dC5oYXNQZW5kaW5nQWN0
aXZpdHkoKSk7CiAgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RU
YXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKT4mJiB0YXNrKQoreworICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX3dvcmtlclRocmVhZCkgewotICAgICAgICArK21fdW5jb25maXJt
ZWRNZXNzYWdlQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2soV1RGTW92ZSh0YXNrKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKCFtX3dvcmtlclRocmVhZCkg
ewogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKKyAgICBtX3dvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggM2JiNGQ5ZDgxNWEyMDkx
NGFkOWYyNWIzNGE4N2NhOTFlMWM4NWJhZC4uYzViNTc1YjllNjE1YjNmM2Y1OTZiZmMzZGY2ODNj
ODc3Y2M2MmJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0
aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwogICAg
IHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKICAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5h
bDsKKyAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZp
bmFsOwogICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpIGZp
bmFsOwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9uIG9m
IFdvcmtlck9iamVjdFByb3h5LgogICAgIC8vIChPbmx5IHVzZSB0aGVzZSBmdW5jdGlvbnMgaW4g
dGhlIHdvcmtlciBjb250ZXh0IHRocmVhZC4pCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2Vy
T2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOworICAgIHZvaWQgcG9zdFRh
c2tUb1dvcmtlck9iamVjdChGdW5jdGlvbjx2b2lkKFdvcmtlciYpPiYmKSBmaW5hbDsKICAgICB2
b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMKSBmaW5hbDsKICAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7CiAgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJPYmplY3RQcm94eS5oCmluZGV4IDI4MDEzMTRlMzcyZDMwZWU5YWNiZTU0Yjk4Njk5
ZGNlZGY3OGY5Y2EuLjhlOTFlYzc5NDRmMzI1OWI2N2Q1ZTRhNTU4NWQ4NTQ0Y2JjZjcyODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKQEAgLTMyLDE0ICsz
MiwxOSBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRl
ICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgorCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdvcmtlcjsK
KwogLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgb2JqZWN0LgogY2xhc3MgV29ya2Vy
T2JqZWN0UHJveHkgOiBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJveHkgewogcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb1dvcmtlck9iamVjdChG
dW5jdGlvbjx2b2lkKFdvcmtlciYpPiYmKSB7IH07CiAKICAgICB2aXJ0dWFsIHZvaWQgY29uZmly
bU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGI5MjJjMmIwMTcwZjZlMTUzNzU5YzU0ZDZiN2U3NTdhZmZjODQy
MTcuLmU3NTdkOWU3Njk3MWIxMGJjMGZlZWFhNjgzMjM1YzFlOTMxMGM3ZDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMC0xMS0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJy
dGMvcm91dGluZXMuanM6IEFkZGVkLgorICAgICAgICAoY3JlYXRlQ29ubmVjdGlvbnMpOgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzOiBBZGRlZC4KKyAgICAg
ICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lcik6CisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNmb3Jt
ZXIucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lci5wcm90
b3R5cGUucHJvY2Vzcyk6CisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zv
cm0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1l
LXRyYW5zZm9ybS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvd2VicnRj
LXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy93ZWJydGMv
d2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC93cHQvd2VicnRj
L3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3dlYnJ0Yy93
ZWJydGMtdHJhbnNmb3JtLmh0bWwuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHdlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzOiBBZGRlZC4KKyAg
ICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lcik6CisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNm
b3JtZXIucHJvdG90eXBlLnN0YXJ0KToKKwogMjAyMC0xMS0xNSAgWW91ZW5uIEZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyIHNob3Vs
ZCBub3QgYmUgZXhwb3NlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRj
L3JvdXRpbmVzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3JvdXRpbmVzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ4ZGI3MmY2NWQxNzY5NjFlYTc5N2M5ZGM0ODJiZDBiNTFlZjkzYjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvcm91dGluZXMuanMKQEAg
LTAsMCArMSwyOTkgQEAKKy8vIFRlc3QgaW5zcGlyZWQgZnJvbSBodHRwczovL3dlYnJ0Yy5naXRo
dWIuaW8vc2FtcGxlcy8KK3ZhciBsb2NhbENvbm5lY3Rpb247Cit2YXIgcmVtb3RlQ29ubmVjdGlv
bjsKKworZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvbnMoc2V0dXBMb2NhbENvbm5lY3Rpb24sIHNl
dHVwUmVtb3RlQ29ubmVjdGlvbiwgb3B0aW9ucyA9IHsgfSkgeworICAgIGxvY2FsQ29ubmVjdGlv
biA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHJlbW90ZUNvbm5lY3Rpb24gPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICByZW1vdGVDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRl
ID0gKGV2ZW50KSA9PiB7IGljZUNhbGxiYWNrMihldmVudCwgb3B0aW9ucy5maWx0ZXJPdXRJQ0VD
YW5kaWRhdGUpIH07CisKKyAgICBsb2NhbENvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZXZl
bnQpID0+IHsgaWNlQ2FsbGJhY2sxKGV2ZW50LCBvcHRpb25zLmZpbHRlck91dElDRUNhbmRpZGF0
ZSkgfTsKKworICAgIFByb21pc2UucmVzb2x2ZShzZXR1cExvY2FsQ29ubmVjdGlvbihsb2NhbENv
bm5lY3Rpb24pKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShz
ZXR1cFJlbW90ZUNvbm5lY3Rpb24ocmVtb3RlQ29ubmVjdGlvbikpOworICAgIH0pLnRoZW4oKCkg
PT4geworICAgICAgICBsb2NhbENvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKS50aGVuKChkZXNjKSA9
PiBnb3REZXNjcmlwdGlvbjEoZGVzYywgb3B0aW9ucyksIG9uQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uRXJyb3IpOworICAgIH0pOworCisgICAgcmV0dXJuIFtsb2NhbENvbm5lY3Rpb24sIHJlbW90
ZUNvbm5lY3Rpb25dCit9CisKK2Z1bmN0aW9uIGNsb3NlQ29ubmVjdGlvbnMoKQoreworICAgIGxv
Y2FsQ29ubmVjdGlvbi5jbG9zZSgpOworICAgIHJlbW90ZUNvbm5lY3Rpb24uY2xvc2UoKTsKK30K
KworZnVuY3Rpb24gb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25FcnJvcihlcnJvcikKK3sKKyAg
ICBhc3NlcnRfdW5yZWFjaGVkKCk7Cit9CisKK2Z1bmN0aW9uIGdvdERlc2NyaXB0aW9uMShkZXNj
LCBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLm9ic2VydmVPZmZlcikgeworICAgICAgICBj
b25zdCByZXN1bHQgPSBvcHRpb25zLm9ic2VydmVPZmZlcihkZXNjKTsKKyAgICAgICAgaWYgKHJl
c3VsdCkKKyAgICAgICAgICAgIGRlc2MgPSByZXN1bHQ7CisgICAgfQorCisgICAgbG9jYWxDb25u
ZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oZGVzYyk7CisgICAgcmVtb3RlQ29ubmVjdGlvbi5z
ZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmVtb3RlQ29u
bmVjdGlvbi5jcmVhdGVBbnN3ZXIoKS50aGVuKChkZXNjKSA9PiBnb3REZXNjcmlwdGlvbjIoZGVz
Yywgb3B0aW9ucyksIG9uQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRXJyb3IpOworICAgIH0pOwor
fQorCitmdW5jdGlvbiBnb3REZXNjcmlwdGlvbjIoZGVzYywgb3B0aW9ucykKK3sKKyAgICBpZiAo
b3B0aW9ucy5vYnNlcnZlQW5zd2VyKQorICAgICAgICBvcHRpb25zLm9ic2VydmVBbnN3ZXIoZGVz
Yyk7CisKKyAgICByZW1vdGVDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oZGVzYyk7Cisg
ICAgbG9jYWxDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2MpOworfQorCitmdW5j
dGlvbiBpY2VDYWxsYmFjazEoZXZlbnQsIGZpbHRlck91dElDRUNhbmRpZGF0ZSkKK3sKKyAgICBp
ZiAoZmlsdGVyT3V0SUNFQ2FuZGlkYXRlICYmIGZpbHRlck91dElDRUNhbmRpZGF0ZShldmVudC5j
YW5kaWRhdGUpKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdGVDb25uZWN0aW9uLmFkZElj
ZUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpLnRoZW4ob25BZGRJY2VDYW5kaWRhdGVTdWNjZXNz
LCBvbkFkZEljZUNhbmRpZGF0ZUVycm9yKTsKK30KKworZnVuY3Rpb24gaWNlQ2FsbGJhY2syKGV2
ZW50LCBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUpCit7CisgICAgaWYgKGZpbHRlck91dElDRUNhbmRp
ZGF0ZSAmJiBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRlKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbG9jYWxDb25uZWN0aW9uLmFkZEljZUNhbmRpZGF0ZShldmVudC5jYW5k
aWRhdGUpLnRoZW4ob25BZGRJY2VDYW5kaWRhdGVTdWNjZXNzLCBvbkFkZEljZUNhbmRpZGF0ZUVy
cm9yKTsKK30KKworZnVuY3Rpb24gb25BZGRJY2VDYW5kaWRhdGVTdWNjZXNzKCkKK3sKK30KKwor
ZnVuY3Rpb24gb25BZGRJY2VDYW5kaWRhdGVFcnJvcihlcnJvcikKK3sKKyAgICBjb25zb2xlLmxv
ZygiYWRkSWNlQ2FuZGlkYXRlIGVycm9yOiAiICsgZXJyb3IpCisgICAgYXNzZXJ0X3VucmVhY2hl
ZCgpOworfQorCithc3luYyBmdW5jdGlvbiByZW5lZ290aWF0ZShwYzEsIHBjMikKK3sKKyAgICBs
ZXQgZCA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERl
c2NyaXB0aW9uKGQpOworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihkKTsKKyAg
ICBkID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0IHBjMS5zZXRSZW1vdGVE
ZXNjcmlwdGlvbihkKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihkKTsKK30K
KworZnVuY3Rpb24gYW5hbHlzZUF1ZGlvKHN0cmVhbSwgZHVyYXRpb24sIGNvbnRleHQpCit7Cisg
ICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdmFy
IHNvdXJjZU5vZGUgPSBjb250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHN0cmVhbSk7CisK
KyAgICAgICAgdmFyIGFuYWx5c2VyID0gY29udGV4dC5jcmVhdGVBbmFseXNlcigpOworICAgICAg
ICB2YXIgZ2FpbiA9IGNvbnRleHQuY3JlYXRlR2FpbigpOworCisgICAgICAgIHZhciByZXN1bHRz
ID0geyBoZWFyZEh1bTogZmFsc2UsIGhlYXJkQmlwOiBmYWxzZSwgaGVhcmRCb3A6IGZhbHNlLCBo
ZWFyZE5vaXNlOiBmYWxzZSB9OworCisgICAgICAgIGFuYWx5c2VyLmZmdFNpemUgPSAyMDQ4Owor
ICAgICAgICBhbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwOworICAgICAgICBhbmFs
eXNlci5taW5EZWNpYmVscyA9IC0xMDA7CisgICAgICAgIGFuYWx5c2VyLm1heERlY2liZWxzID0g
MDsKKyAgICAgICAgZ2Fpbi5nYWluLnZhbHVlID0gMDsKKworICAgICAgICBzb3VyY2VOb2RlLmNv
bm5lY3QoYW5hbHlzZXIpOworICAgICAgICBhbmFseXNlci5jb25uZWN0KGdhaW4pOworICAgICAg
ICBnYWluLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisKKyAgICAgICBmdW5jdGlvbiBh
bmFseXNlKCkgeworICAgICAgICAgICB2YXIgZnJlcURvbWFpbiA9IG5ldyBVaW50OEFycmF5KGFu
YWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50KTsKKyAgICAgICAgICAgYW5hbHlzZXIuZ2V0Qnl0ZUZy
ZXF1ZW5jeURhdGEoZnJlcURvbWFpbik7CisKKyAgICAgICAgICAgdmFyIGhhc0ZyZXF1ZW5jeSA9
IGV4cGVjdGVkRnJlcXVlbmN5ID0+IHsKKyAgICAgICAgICAgICAgICB2YXIgYmluID0gTWF0aC5m
bG9vcihleHBlY3RlZEZyZXF1ZW5jeSAqIGFuYWx5c2VyLmZmdFNpemUgLyBjb250ZXh0LnNhbXBs
ZVJhdGUpOworICAgICAgICAgICAgICAgIHJldHVybiBiaW4gPCBmcmVxRG9tYWluLmxlbmd0aCAm
JiBmcmVxRG9tYWluW2Jpbl0gPj0gMTAwOworICAgICAgICAgICB9OworCisgICAgICAgICAgIGlm
ICghcmVzdWx0cy5oZWFyZEh1bSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmhlYXJkSHVtID0g
aGFzRnJlcXVlbmN5KDE1MCk7CisKKyAgICAgICAgICAgaWYgKCFyZXN1bHRzLmhlYXJkQmlwKQor
ICAgICAgICAgICAgICAgcmVzdWx0cy5oZWFyZEJpcCA9IGhhc0ZyZXF1ZW5jeSgxNTAwKTsKKwor
ICAgICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmRCb3ApCisgICAgICAgICAgICAgICAgcmVzdWx0
cy5oZWFyZEJvcCA9IGhhc0ZyZXF1ZW5jeSg1MDApOworCisgICAgICAgICAgIGlmICghcmVzdWx0
cy5oZWFyZE5vaXNlKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuaGVhcmROb2lzZSA9IGhhc0Zy
ZXF1ZW5jeSgzMDAwKTsKKworICAgICAgICAgICBpZiAocmVzdWx0cy5oZWFyZEh1bSAmJiByZXN1
bHRzLmhlYXJkQmlwICYmIHJlc3VsdHMuaGVhcmRCb3AgJiYgcmVzdWx0cy5oZWFyZE5vaXNlKQor
ICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfTsKKworICAgICAgIGZ1bmN0aW9uIGRv
bmUoKSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CisgICAgICAgICAgICBj
bGVhckludGVydmFsKGludGVydmFsKTsKKyAgICAgICAgICAgIHJlc29sdmUocmVzdWx0cyk7Cisg
ICAgICAgfQorCisgICAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChkb25lLCAzICogZHVy
YXRpb24pOworICAgICAgICB2YXIgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhbmFseXNlLCBkdXJh
dGlvbiAvIDMwKTsKKyAgICAgICAgYW5hbHlzZSgpOworICAgIH0pOworfQorCitmdW5jdGlvbiB3
YWl0Rm9yKGR1cmF0aW9uKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
c2V0VGltZW91dChyZXNvbHZlLCBkdXJhdGlvbikpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yVmlk
ZW9TaXplKHZpZGVvLCB3aWR0aCwgaGVpZ2h0LCBjb3VudCkKK3sKKyAgICBpZiAodmlkZW8udmlk
ZW9XaWR0aCA9PT0gd2lkdGggJiYgdmlkZW8udmlkZW9IZWlnaHQgPT09IGhlaWdodCkKKyAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgidmlkZW8gaGFzIGV4cGVjdGVkIHNpemUiKTsKKwor
ICAgIGlmIChjb3VudCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb3VudCA9IDA7CisgICAgaWYg
KCsrY291bnQgPiAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJ3YWl0Rm9yVmlk
ZW9TaXplIHRpbWVkIG91dCwgZXhwZWN0ZWQgIiArIHdpZHRoICsgIngiKyBoZWlnaHQgKyAiIGJ1
dCBnb3QgIiArIHZpZGVvLnZpZGVvV2lkdGggKyAieCIgKyB2aWRlby52aWRlb0hlaWdodCk7CisK
KyAgICByZXR1cm4gd2FpdEZvcigxMDApLnRoZW4oKCkgPT4geworICAgICAgICByZXR1cm4gd2Fp
dEZvclZpZGVvU2l6ZSh2aWRlbywgd2lkdGgsIGhlaWdodCwgY291bnQpOworICAgIH0pOworfQor
Cithc3luYyBmdW5jdGlvbiBkb0h1bUFuYWx5c2lzKHN0cmVhbSwgZXhwZWN0ZWQpCit7CisgICAg
dmFyIGNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7CisgICAgZm9yICh2YXIgY3B0ciA9IDA7
IGNwdHIgPCAyMDsgY3B0cisrKSB7CisgICAgICAgIHZhciByZXN1bHRzID0gYXdhaXQgYW5hbHlz
ZUF1ZGlvKHN0cmVhbSwgMjAwLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJlc3VsdHMuaGVhcmRI
dW0gPT09IGV4cGVjdGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGF3YWl0
IHdhaXRGb3IoNTApOworICAgIH0KKyAgICBhd2FpdCBjb250ZXh0LmNsb3NlKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBpc1ZpZGVvQmxhY2soY2FudmFzLCB2aWRlbywgc3Rh
cnRYLCBzdGFydFksIGdyYWJiZWRXaWR0aCwgZ3JhYmJlZEhlaWdodCkKK3sKKyAgICBjYW52YXMu
d2lkdGggPSB2aWRlby52aWRlb1dpZHRoOworICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRl
b0hlaWdodDsKKyAgICBpZiAoIWdyYWJiZWRIZWlnaHQpIHsKKyAgICAgICAgc3RhcnRYID0gMTA7
CisgICAgICAgIHN0YXJ0WSA9IDEwOworICAgICAgICBncmFiYmVkV2lkdGggPSBjYW52YXMud2lk
dGggLSAyMDsKKyAgICAgICAgZ3JhYmJlZEhlaWdodCA9IGNhbnZhcy5oZWlnaHQgLSAyMDsKKyAg
ICB9CisKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UodmlkZW8sIDAsIDAs
IGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICBpbWFnZURhdGEgPSBjYW52YXMu
Z2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoc3RhcnRYLCBzdGFydFksIGdyYWJiZWRXaWR0
aCwgZ3JhYmJlZEhlaWdodCk7CisgICAgZGF0YSA9IGltYWdlRGF0YS5kYXRhOworICAgIGZvciAo
dmFyIGNwdHIgPSAwOyBjcHRyIDwgZ3JhYmJlZFdpZHRoICogZ3JhYmJlZEhlaWdodDsgKytjcHRy
KSB7CisgICAgICAgIC8vIEFwcHJveGltYXRpdmVseSBibGFjayBwaXhlbHMuCisgICAgICAgIGlm
IChkYXRhWzQgKiBjcHRyXSA+IDMwIHx8IGRhdGFbNCAqIGNwdHIgKyAxXSA+IDMwIHx8IGRhdGFb
NCAqIGNwdHIgKyAyXSA+IDMwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYXN5bmMgZnVuY3Rpb24gY2hlY2tWaWRlb0JsYWNrKGV4cGVj
dGVkLCBjYW52YXMsIHZpZGVvLCBlcnJvck1lc3NhZ2UsIGNvdW50ZXIpCit7CisgICAgaWYgKGlz
VmlkZW9CbGFjayhjYW52YXMsIHZpZGVvKSA9PT0gZXhwZWN0ZWQpCisgICAgICAgIHJldHVybiBQ
cm9taXNlLnJlc29sdmUoKTsKKworICAgIGlmIChjb3VudGVyID09PSB1bmRlZmluZWQpCisgICAg
ICAgIGNvdW50ZXIgPSAwOworICAgIGlmIChjb3VudGVyID4gNDAwKSB7CisgICAgICAgIGlmICgh
ZXJyb3JNZXNzYWdlKQorICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gImNoZWNrVmlkZW9CbGFj
ayB0aW1lZCBvdXQgZXhwZWN0aW5nICIgKyBleHBlY3RlZDsKKyAgICAgICAgcmV0dXJuIFByb21p
c2UucmVqZWN0KGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAgYXdhaXQgd2FpdEZvcig1MCk7
CisgICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFjayhleHBlY3RlZCwgY2FudmFzLCB2aWRlbywgZXJy
b3JNZXNzYWdlLCArK2NvdW50ZXIpOworfQorCitmdW5jdGlvbiBzZXRDb2RlYyhzZHAsIGNvZGVj
KQoreworICAgIHJldHVybiBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAg
ICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2Yo
J2E9cnRjcC1mYicpID09PSAtMSAmJiAobGluZS5pbmRleE9mKCdhPXJ0cG1hcCcpID09PSAtMSB8
fCBsaW5lLmluZGV4T2YoY29kZWMpICE9PSAtMSk7CisgICAgfSkuam9pbignXHJcbicpOworfQor
Cithc3luYyBmdW5jdGlvbiBnZXRUeXBlZFN0YXRzKGNvbm5lY3Rpb24sIHR5cGUpCit7CisgICAg
Y29uc3QgcmVwb3J0ID0gYXdhaXQgY29ubmVjdGlvbi5nZXRTdGF0cygpOworICAgIHZhciBzdGF0
czsKKyAgICByZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAgICAgaWYgKHN0YXRJ
dGVtLnR5cGUgPT09IHR5cGUpCisgICAgICAgICAgICBzdGF0cyA9IHN0YXRJdGVtOworICAgIH0p
OworICAgIHJldHVybiBzdGF0czsKK30KKworZnVuY3Rpb24gZ2V0UmVjZWl2ZWRUcmFja1N0YXRz
KGNvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24uZ2V0U3RhdHMoKS50aGVuKChy
ZXBvcnQpID0+IHsKKyAgICAgICAgdmFyIHN0YXRzOworICAgICAgICByZXBvcnQuZm9yRWFjaCgo
c3RhdEl0ZW0pID0+IHsKKyAgICAgICAgICAgIGlmIChzdGF0SXRlbS50eXBlID09PSAidHJhY2si
KSB7CisgICAgICAgICAgICAgICAgc3RhdHMgPSBzdGF0SXRlbTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybiBzdGF0czsKKyAgICB9KTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gY29tcHV0ZUZyYW1lUmF0ZShzdHJlYW0sIHZpZGVvKQoreworICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhz
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7IAorICAgICAgICByZXR1cm4gaW50
ZXJuYWxzLnRyYWNrVmlkZW9TYW1wbGVDb3VudDsKKyAgICB9CisKKyAgICBsZXQgY29ubmVjdGlv
bjsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVq
ZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+
IHsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhzdHJlYW0uZ2V0VmlkZW9U
cmFja3MoKVswXSwgc3RyZWFtKTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsK
KyAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBzZWNvbmRDb25uZWN0aW9uOworICAgICAgICAgICAg
c2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0
IiksIDUwMDApOworICAgIH0pOworCisgICAgYXdhaXQgdmlkZW8ucGxheSgpOworCisgICAgY29u
c3Qgc3RhdHMxID0gYXdhaXQgZ2V0UmVjZWl2ZWRUcmFja1N0YXRzKGNvbm5lY3Rpb24pOworICAg
IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7
IAorICAgIGNvbnN0IHN0YXRzMiA9IGF3YWl0IGdldFJlY2VpdmVkVHJhY2tTdGF0cyhjb25uZWN0
aW9uKTsKKyAgICByZXR1cm4gKHN0YXRzMi5mcmFtZXNSZWNlaXZlZCAtIHN0YXRzMS5mcmFtZXNS
ZWNlaXZlZCkgKiAxMDAwIC8gKHN0YXRzMi50aW1lc3RhbXAgLSBzdGF0czEudGltZXN0YW1wKTsK
K30KKworZnVuY3Rpb24gc2V0SDI2NEJhc2VsaW5lQ29kZWMoc2RwKQoreworICAgIGNvbnN0IGxp
bmVzID0gc2RwLnNwbGl0KCdcclxuJyk7CisgICAgY29uc3QgaDI2NExpbmVzID0gbGluZXMuZmls
dGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0gMCAmJiBsaW5lLmluZGV4T2Yo
IjQyZTAxZiIpICE9PSAtMSk7CisgICAgY29uc3QgYmFzZWxpbmVOdW1iZXIgPSBoMjY0TGluZXNb
MF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07CisgICAgcmV0dXJuIGxpbmVzLmZpbHRlcihs
aW5lID0+IHsKKyAgICAgICAgcmV0dXJuIChsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAm
JiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRw
bWFwJykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVOdW1iZXIpICE9PSAtMTsKKyAg
ICB9KS5qb2luKCdcclxuJyk7Cit9CisKK2Z1bmN0aW9uIHNldEgyNjRIaWdoQ29kZWMoc2RwKQor
eworICAgIGNvbnN0IGxpbmVzID0gc2RwLnNwbGl0KCdcclxuJyk7CisgICAgY29uc3QgaDI2NExp
bmVzID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0gMCAm
JiBsaW5lLmluZGV4T2YoIjY0MGMxZiIpICE9PSAtMSk7CisgICAgY29uc3QgYmFzZWxpbmVOdW1i
ZXIgPSBoMjY0TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07CisgICAgcmV0dXJu
IGxpbmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJuIChsaW5lLmluZGV4T2YoJ2E9
Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiBsaW5l
LmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVOdW1i
ZXIpICE9PSAtMTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYzg2NTBjOWVi
ZmJjM2JhMmVjZTU5MmZlMTY3NDRmOTQ0ZDFiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpAQCAtMCwwICsxLDI3IEBA
CitjbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIgZXh0ZW5kcyBSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lciB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRo
aXMucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHRoaXMucG9ydC5wb3N0TWVzc2FnZShldmVu
dC5kYXRhKTsKKyAgICB9CisgICAgc3RhcnQocmVhZGFibGVTdHJlYW0sIHdyaXRhYmxlU3RyZWFt
KQorICAgIHsKKyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIpOworICAgICAgICB0
aGlzLnJlYWRlciA9IHJlYWRhYmxlU3RyZWFtLmdldFJlYWRlcigpOworICAgICAgICB0aGlzLndy
aXRlciA9IHdyaXRhYmxlU3RyZWFtLmdldFdyaXRlcigpOworICAgICAgICB0aGlzLnByb2Nlc3Mo
KTsKKyAgICB9CisKKyAgICBwcm9jZXNzKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVhZGVyLnJl
YWQoKS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVuay5kb25lKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoImNodW5rIik7
CisgICAgICAgICAgICB0aGlzLndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7CisgICAgICAgICAg
ICB0aGlzLnByb2Nlc3MoKTsKKyAgICAgICAgfSk7CisgICAgfQorfTsKKworcmVnaXN0ZXJSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcigiTW9ja1JUQ1J0cFRyYW5zZm9ybSIsIE1vY2tSVENSdHBUcmFu
c2Zvcm1lcik7CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTAwZTg2ZGRkZTI5MzVkMWYwZjVhYzAyZGQzYTg3YzZhMmY3OGRlZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJh
bnNmb3JtLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDYW5ub3QgcmV1c2Ug
YXR0YWNoZWQgdHJhbnNmb3JtcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRj
L3NmcmFtZS10cmFuc2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTA0ODgwZDE0NWFjZmI4MWQ3ZTk5
YmYxMTM4NGEwODUzNTEzM2M3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5
cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYt
OCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4K
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtKCk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtKCk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2Vp
dmVyKCdhdWRpbycpLnNlbmRlcjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2
ZXIoJ3ZpZGVvJykuc2VuZGVyOworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVy
cygpWzBdOworICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisg
ICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRy
YW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZh
bGlkU3RhdGVFcnJvciIsICgpID0+IHNlbmRlcjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3Jt
KTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNl
aXZlcjIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFu
c2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2Vp
dmVyVHJhbnNmb3JtOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2Vp
dmVyMS50cmFuc2Zvcm0gPSBudWxsOworfSwgIkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zv
cm1zIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jZjlkNTZlZTg1ZTYwZTQ3MThkZjZkMDFjMzEzMWMxMTQ1NDRl
NWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0
Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCisKK1BBU1MgdHJhbnNm
b3JtIG1lc3NhZ2luZworUEFTUyBDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcworUEFT
UyBhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybQorUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRo
IHRyYW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2Vi
cnRjLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10
cmFuc2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjg3NTMwOWEwMzFiZWNkMDFmNGNjZjhmNWQzNzIy
NDlkOWI3ZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRj
L3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbApAQCAtMCwwICsxLDEzMiBAQAorPCFkb2N0eXBlIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8x
IiBhdXRvcGxheT48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMiIgYXV0b3BsYXk+
PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRh
dGEpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBhd2Fp
dCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJl
c29sdmUoZXZlbnQuZGF0YSkpOworICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgfQorfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAg
Y29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2Fn
ZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhk
YXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3Qg
cHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdHJhbnNmb3JtLnBvcnQub25tZXNzYWdl
ID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICB0cmFuc2Zvcm0ucG9ydC5w
b3N0TWVzc2FnZSgidGVzdCIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgcHJvbWlzZSwgInRl
c3QiKTsKK30sICJ0cmFuc2Zvcm0gbWVzc2FnaW5nIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMn
KTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIu
b25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVy
Q29ubmVjdGlvbigpOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJl
Y2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2Nr
UlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVy
KCdhdWRpbycpLnNlbmRlcjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
J3ZpZGVvJykuc2VuZGVyOworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygp
WzBdOworICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAg
c2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5z
Zm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlk
U3RhdGVFcnJvciIsICgpID0+IHNlbmRlcjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNlaXZl
cjIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFuc2Zv
cm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVy
VHJhbnNmb3JtOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2VpdmVy
MS50cmFuc2Zvcm0gPSBudWxsOworfSwgIkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1z
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBX
b3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZl
KGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7Cisg
ICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAg
IGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2Vy
LCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0g
bmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7
CisKKyAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29y
a2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisKKyAgICBj
b25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAg
ICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29u
bmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBsb2NhbFN0
cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwor
ICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMyID0gc2Vj
b25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0
cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJl
Y2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJh
bnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsK
KyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJl
amVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1
YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgYXdhaXQgd2FpdEZv
ck1lc3NhZ2Uod29ya2VyLCAiY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJl
YW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJhdWRpbyBleGNoYW5nZSB3aXRoIHRy
YW5zZm9ybSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIg
PSBuZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4g
cmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJl
ZCIpOworCisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2Vp
dmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zv
cm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2VpdmVyVHJh
bnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJh
bnNmb3JtJyk7CisKKyAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7
CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsK
KyAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9
IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
LCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJh
bnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAg
cGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250
cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFj
a0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJl
Y2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJl
YW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0
KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBh
c3NlcnRfZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgYXdh
aXQgd2FpdEZvck1lc3NhZ2Uod29ya2VyLCAiY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmpl
Y3QgPSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJ2aWRlbyBleGNoYW5n
ZSB3aXRoIHRyYW5zZm9ybSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTMz
NTdmNGEwZmQyOTcyNzZlODc2MTU4NzZjYjFhYTdmZjM3YjU4Zi4uZGZmYzVjYjAzM2YyZTVmNGZj
OWEyMTY5YTc0OGU4MTE1NGM3ZDQxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtODY3LDcgKzg2Nyw3IEBAIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2Vi
cnRjL3ZpZGVvLXN0YXRzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwgWyBUaW1l
b3V0IF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL2NvbmN1cnJlbnRWaWRlb1BsYXliYWNr
Lmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL2ljZS1jYW5kaWRh
dGUtc2RwTUxpbmVJbmRleC5odG1sIFsgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMjE4Nzg3IHdl
YnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTg3
ODcgaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbCBbIEZhaWx1cmUgXQogCiAj
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgV2ViUlRDLXJlbGF0ZWQg
YnVncwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMg
Yi9MYXlvdXRUZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTY4
YzYyMmJmYzExYWNlMWViMWYxZmNjOGQ4MmQyMmZjNDgyZDUwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKQEAgLTAsMCArMSw3IEBACitj
bGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIgZXh0ZW5kcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ciB7CisgICAgY29uc3RydWN0b3IoKSB7IH0KKyAgICBzdGFydChyZWFkYWJsZVN0cmVhbSwgd3Jp
dGFibGVTdHJlYW0pIHsgcmVhZGFibGVTdHJlYW0ucGlwZVRvKHdyaXRhYmxlU3RyZWFtKTsgfQor
fTsKKworcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigiTW9ja1JUQ1J0cFRyYW5zZm9y
bSIsIE1vY2tSVENSdHBUcmFuc2Zvcm1lcik7CitzZWxmLnBvc3RNZXNzYWdlKCJzdGFydGVkIik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhOGY1MWIzYzgwMGM1ZDdhYzQ5M2Q3MDMz
MDBhY2Q2ODI3OGY5ZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLQotUEFTUyBhdWRpbyBleGNoYW5nZSB3aXRo
IHRyYW5zZm9ybQotUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybQotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVz
dHMvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYTljNWE2ZGZhNTc3YmEzYmE5MGVlYWU1MjBjNjMyNTE1NGUxYWY1MC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMv
d2VicnRjLXRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotPCFk
b2N0eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgotICAgICAgICA8dGl0bGU+VGVzdGluZyBtZWRpYSBleGNoYW5nZSB3aXRoIHRyYW5z
Zm9ybTwvdGl0bGU+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAg
ICAgIDx2aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8dmlkZW8g
aWQ9InZpZGVvMiIgYXV0b3BsYXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0
aW5lcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1wcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKLSAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwotICAgIGxldCBzZW5kZXJUcmFuc2Zvcm0gPSBp
bnRlcm5hbHMuY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotICAgIGxldCByZWNlaXZlclRy
YW5zZm9ybSA9IGludGVybmFscy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0KLSAgICBj
b25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1l
ZGlhKHthdWRpbzogdHJ1ZX0pOwotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0
Q29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAg
ICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFu
c2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9
PiB7Ci0gICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vj
b25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAg
ICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2
ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2
ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsK
LSAgICB9KTsKLQotICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlk
ZW8xLnBsYXkoKTsKLQotICAgIGxldCBjb3VudGVyID0gMDsKLSAgICB3aGlsZSAoIXJlY2VpdmVy
VHJhbnNmb3JtLmlzUHJvY2Vzc2luZyAmJiBjb3VudGVyKysgPCAxMDApCi0gICAgICAgIGF3YWl0
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOwotCi0gICAg
YXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZywgInNlbmRlciIpOwotfSwg
ImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7Ci0KLXByb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4gewotICAgIGlmICghd2luZG93LmludGVybmFscykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgbGV0IHNlbmRlclRyYW5zZm9ybSA9IGlu
dGVybmFscy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0gICAgbGV0IHJlY2VpdmVyVHJh
bnNmb3JtID0gaW50ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLQotICAgIGNv
bnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe3ZpZGVvOiB0cnVlfSk7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJz
dENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAg
ICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBzZW5kZXIudHJh
bnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikg
PT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNl
Y29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAg
ICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAgICAgICAgIHJlY2Vp
dmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAgICAgICAgIHJlc29s
dmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwot
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7
Ci0gICAgfSk7Ci0KLSAgICB2aWRlbzIuc3JjT2JqZWN0ID0gc3RyZWFtOwotICAgIGF3YWl0IHZp
ZGVvMi5wbGF5KCk7Ci0KLSAgIGxldCBjb3VudGVyID0gMDsKLSAgIHdoaWxlICghcmVjZWl2ZXJU
cmFuc2Zvcm0uaXNQcm9jZXNzaW5nICYmIGNvdW50ZXIrKyA8IDEwMCkKLSAgICAgICBhd2FpdCBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKTsKLQotICAgIGFz
c2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS5pc1Byb2Nlc3NpbmcsICJzZW5kZXIiKTsKLX0sICJ2
aWRlbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8
L2JvZHk+Ci08L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="431481"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414559</attachid>
            <date>2020-11-19 03:01:54 -0800</date>
            <delta_ts>2020-11-19 03:15:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219148-20201119120150.patch</filename>
            <type>text/plain</type>
            <size>175547</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4N2JjMDU3MTMzOWEy
YmU1ZTIzMjg0ODBhYjlmZTE0MDQ3YzZjZS4uMzQ1MzFlMDIzN2UwYmRhYTIwYjk2M2RkNGZmNWVj
ZTk1NTljMDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0xMS0xOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB3aGljaCBw
cm9jZXNzZXMgZW5jb2RlZCBmcmFtZXMgaW4gYSB3b3JrZXIgZm9yIGVpdGhlciBSVENSdHBTZW5k
ZXIgb3IgUlRDUnRwUmVjZWl2ZXIuCisgICAgICAgIFRoZSBtb2RlbCBmb2xsb3dzIEF1ZGlvV29y
a2xldE5vZGUgaW4gdGhlIHNlbnNlIHRoYXQgd2UgY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtIG9iamVjdCBpbiBtYWluIHRocmVhZCB0aGF0IGlzIHVzZWQgd2l0aCBSVENSdHAgb2JqZWN0
cy4KKyAgICAgICAgVGhlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB0YWtlcyBhIG5hbWUgYW5kIGEg
d29ya2VyIGFzIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIg
Y291bnRlciBwYXJ0IGluIGEgd29ya2VyLgorICAgICAgICBCZWZvcmUgdGhhdCwgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIgY29uc3RydWN0b3JzIGFyZSByZWdpc3RlcmVkIGluIHRoZSB3b3JrZXIg
d2l0aCBhIHNwZWNpZmljIG5hbWUuCisgICAgICAgIEEgbWVzc2FnZSBwb3J0IGlzIHNoYXJlZCBi
ZXR3ZWVuIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBhbmQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
CisKKyAgICAgICAgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGtlZXBzIGEgd2VhayBwb2ludGVyIHRv
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHNvIHRoYXQgd2Uga2VlcCBhbGwgcmVmIGNvdW50aW5n
IG9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIGluIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgICAg
ICBUbyBtYWtlIHN1cmUgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgc3RheXMgYWxpdmUgZm9yIGxv
bmcgZW5vdWdoLCB3ZSBzZXQgYSBwZW5kaW5nIGFjdGl2aXR5IHdoZW4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtIGlzIGxpbmtlZCB0byBpdHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuCisgICAgICAg
IFRoZSBwZW5kaW5nIGFjdGl2aXR5IGlzIHRoZW4gcmVtb3ZlZCBlaXRoZXIgYXQgd29ya2VyIGNs
b3N1cmUgb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGJlaW5nIG5vIGxvbmdlciBkb2luZyBwcm9j
ZXNzaW5nLgorCisgICAgICAgIFdlIGV4cG9zZSBpbmRpdmlkdWFsIGNvbXByZXNzZWQgZnJhbWVz
IGFzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIGFuZCBSVENFbmNvZGVkVmlkZW9GcmFtZS4KKyAgICAg
ICAgQWNjZXNzb3IgaXMgbGltaXRlZCB0byB0aGUgcmF3IGRhdGEgYnV0IGFkZGl0aW9uYWwgZ2V0
dGVycyBzaG91bGQgYmUgYWRkZWQgbGF0ZXIgb24uCisKKyAgICAgICAgVG8gaW1wbGVtZW50IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLCB3ZSBoYXZlIHRvIGJlIGFibGUgdG8gY3JlYXRlIFdyaXRh
YmxlU3RyZWFtIHdpdGggbmF0aXZlIHNpbmtzLgorICAgICAgICBUaGlzIGlzIHdoeSB3ZSBpbnRy
b2R1Y2UgV3JpdGFibGVTdHJlYW1TaW5rIGFuZCBXcml0YWJsZVN0cmVhbSBDKysgY2xhc3Nlcy4K
KyAgICAgICAgQmluZGluZyBiZXR3ZWVuIG5hdGl2ZSBmcmFtZXMgYW5kIHN0cmVhbXMgaXMgZG9u
ZSB0aHJvdWdoIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlIGFuZCBSVENSdHBXcml0YWJsZVN0
cmVhbVNpbmsuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zv
cm0uaHRtbCBhbmQgaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
VENFbmNvZGVkQXVkaW9GcmFtZTo6UlRDRW5jb2RlZEF1ZGlvRnJhbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpSVENFbmNvZGVkQXVkaW9GcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVv
RnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
citUcmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFu
c2Zvcm1lcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRh
Y2hlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFu
c2Zvcm06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRU
cmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtOjpzZXRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZv
clNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxD
bGVhckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpp
bml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjplbnF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6UlRDUnRwV3JpdGFi
bGVTdHJlYW1TaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
azo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXI6On5SVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI6OnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RvcFBlbmRpbmdBY3Rpdml0
eSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyV2l0aFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcldpdGhU
cmFuc2Zvcm06OnNldFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpm
cm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6UlRDUnRwVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1JlY2VpdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpjbGVhckJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwVHJhbnNmb3JtOjppbnRlcm5hbFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6
VHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5r
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3Ry
ZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyOjp0b1dyYXBwZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRl
ZCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6
dHJhbnNmb3JtKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdp
c3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAg
ICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9iamVj
dFByb3h5Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKwogMjAyMC0xMS0xNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFNGcmFtZSB0cmFuc2Zv
cm1hdGlvbiBpbXBsZW1lbnRhdGlvbiBhY2NvcmRpbmcgcG9zdC1jb21taXQgcmV2aWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDk0ZDA2MmJmOTkzZDFiNGM3YzQ0NDI0ZmE0ZTkxNjU3ZjQwMDdl
YWEuLjc4OWY4ZjFlNDgzMjZhNGZmZmJmOGMyOTQyNTM0NGRiNGQxODMwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0zNzMsNiArMzczLDggQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklM
RVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEdHhTdGF0dXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC00MDMs
MTMgKzQwNSwxNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSdHhQYXJhbWV0ZXJzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
UHJvdmlkZXIuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1lci5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Q29uc3RydWN0b3IuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1l
dGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0u
aWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2RwVHlw
ZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsCkBA
IC00ODEsNiArNDg2LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKKyAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVT
dHJlYW1TaW5rLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCkBAIC0xNzUzLDcgKzE3NTks
NiBAQCBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0lETF9GSUxFUwogICAgIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaWRsCiAgICAgdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5pZGwKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCiAgICAg
dGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsCiApCkBAIC0xNzc3LDcgKzE3ODIsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNFUwogICAgIHRlc3RpbmcvTW9ja0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uLmNwcAogICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmNwcAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAotICAgIHRlc3RpbmcvTW9ja1JU
Q1J0cFRyYW5zZm9ybS5jcHAKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
CiAgICAgdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBiMTZkODhlODQ1Y2Q2
NmNlYzhjZWNkMGU3Y2I0MGY4NDJjY2Q5NjA0Li43OGIzZDRmYTA4OTQ5NDM4ZDBiZTk3NDk0ZDQ2
OWZlZTkyMzk0NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKQEAgLTIwNSw2ICsyMDUsOCBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0R0eFN0YXR1cy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCiskKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQuaWRsCiAkKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC0yMzcs
NiArMjM5LDEwIEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIrVHJhbnNmb3JtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUnR4UGFyYW1ldGVycy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAorJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKKyQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlcitUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5pZGwKQEAgLTMzOCw2ICszNDQsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcwogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIu
anMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFs
cy5qcworJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAyNmQzYzE0YTJhNjhi
ODkxNjY5ZWIwZDU2MDI3Y2U0ZjVjZTczYzhmLi5hMTZiODMyNzY5ZDY3YzgyMGQzYmUyNjU1ZmQz
MjZiYTNlN2FkMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtMTY0Nyw2ICsxNjQ3LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEZWdyYWRh
dGlvblByZWZlcmVuY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSVENEdHhTdGF0dXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ0R0eFN0YXR1cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlk
YXRlSW5pdC5jcHAKQEAgLTE3MDcsNiArMTcxMSwxNCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRl
cnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVy
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5k
UGFyYW1ldGVycy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uY3BwCkBAIC0yNTY5LDYgKzI1ODEsOCBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuYwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtU2luay5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTERvY3Vt
ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNY
TUxEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
MjdhYzdkODBlZWIxMDM1NjRkMWFlNjUzMjFlZjAwNzU3MGJlY2NiMS4uOWJhOWFkYzJhNDU3NzJh
N2IxMzIyOGM0OWExNjk5NTc0OGY0Y2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0yMzEsNiArMjMxLDggQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0Zy
YW1lLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZVR5cGUuaWRsIFwKQEAgLTI2NCwxMCArMjY2LDEzIEBAIEpTX0JJTkRJTkdfSURM
UyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJh
bnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
eW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1NkcFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsIFwK
QEAgLTM0Miw2ICszNDcsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJPcHRpb25zLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCkBAIC0xMjMwLDcg
KzEyMzYsNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9N
b2NrUGF5bWVudENvbnRhY3RGaWVsZHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5
bWVudEVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zv
cm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRBdWRpb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODUyNzcyNjM3OWZiZmI2ZGE3ODQ4
MzcxZWNmYjEzMThkYjhlZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkQXVkaW9GcmFtZS5oIgorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZEF1ZGlvRnJh
bWU6OlJUQ0VuY29kZWRBdWRpb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJh
bWU+JiYgZnJhbWUpCisgICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9
CisKK1JUQ0VuY29kZWRBdWRpb0ZyYW1lOjp+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKSA9IGRlZmF1
bHQ7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkQXVkaW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyYjZmMDgyNzVlNjkzNTliNDdjMGYwNTE2
YzMyY2VlZDYwNDAxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkQXVkaW9GcmFtZSA6IHB1Ymxp
YyBSVENFbmNvZGVkRnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZEF1
ZGlvRnJhbWU+IGNyZWF0ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZy
YW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFdURk1vdmUo
ZnJhbWUpKSk7IH0KKyAgICB+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBSVENFbmNvZGVkQXVkaW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDBkNTZj
MWQzMDg4MmFjYTk2MzY0YWE3NTZjNDlkOWRjMGVmM2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwK
QEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRD
LAorICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCitdIGludGVyZmFjZSBSVENFbmNvZGVkQXVkaW9GcmFtZSB7CisgICAgLy8gcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRl
IEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRDQXVkaW9GcmFtZU1ldGFkYXRhIGdldE1ldGFk
YXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NmE5Mzk1NmFiYmJlODQ2MDQ3Y2Nl
MDFhZjEyYzVjMWNiMmQ1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
VENFbmNvZGVkRnJhbWU6OlJUQ0VuY29kZWRGcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmIGZyYW1lKQorICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30K
KworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IFJUQ0VuY29kZWRGcmFtZTo6ZGF0YSgpIGNvbnN0
Cit7CisgICAgYXV0byBkYXRhID0gbV9mcmFtZS0+ZGF0YSgpOworICAgIHJldHVybiBKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhLCBkYXRhLnNpemUpOworfQorCit2b2lkIFJUQ0Vu
Y29kZWRGcmFtZTo6c2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJiBidWZmZXIpCit7CisgICAgbV9m
cmFtZS0+c2V0RGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgp
KSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGI0NzRkYjkx
MzE1MDhkZTM1ZGQwYTdlMGQwMWQ3NGViYTZhZjliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBS
VENFbmNvZGVkRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENFbmNvZGVkRnJhbWU+IHsKK3B1
YmxpYzoKKyAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0OworICAgIHZv
aWQgc2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lPiB0YWtlUlRDRnJhbWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fZnJhbWUp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSVENFbmNvZGVkRnJhbWUoVW5pcXVlUmVm
PFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lPiBtX2ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhZjYzYTA5YzJkOGE2OTVkNDM3NjJlZjdkMzkwY2ZmOTdlNjYxNDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRl
b0ZyYW1lLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ0VuY29k
ZWRWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWUoVW5pcXVl
UmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJiBmcmFtZSkKKyAgICA6IFJUQ0VuY29kZWRG
cmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30KKworUlRDRW5jb2RlZFZpZGVvRnJhbWU6On5SVENF
bmNvZGVkVmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzc3MDVhYzg1NmEwMjYyOTdmODE5MDczZWFmNGM4MzBlMzYxOWE1NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1
ZGUgIlJUQ0VuY29kZWRGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJU
Q0VuY29kZWRWaWRlb0ZyYW1lIDogcHVibGljIFJUQ0VuY29kZWRGcmFtZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSVENFbmNvZGVkVmlkZW9GcmFtZT4gY3JlYXRlKFVuaXF1ZVJlZjxSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRD
RW5jb2RlZFZpZGVvRnJhbWUoV1RGTW92ZShmcmFtZSkpKTsgfQorICAgIH5SVENFbmNvZGVkVmlk
ZW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ0VuY29kZWRWaWRlb0ZyYW1l
KFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkZGQ2YTgxN2ZlMWRlZmEwMGRiMTNiNzljNmZjYWJlY2VkNjI5
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRXhwb3NlZD1EZWRpY2F0ZWRXb3JrZXIs
CisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKK10gaW50ZXJmYWNlIFJUQ0VuY29kZWRW
aWRlb0ZyYW1lIHsKKyAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgUlRDRW5jb2RlZFZpZGVvRnJh
bWVUeXBlIHR5cGU7CisgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRlIEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRD
VmlkZW9GcmFtZU1ldGFkYXRhIGdldE1ldGFkYXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFu
c2Zvcm0uaWRsCmluZGV4IGYwYjJlMTFkNDdmZmJiM2E4NDNiZjQxMzk3ZTBjMDhjOTFlMjYyNzgu
LjQ2OTM0ZTQ4ZDAyYWZmNGJiZTY0YmJhNTlhYzdmZTA3MDlhMGEyY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3Jt
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyK1RyYW5zZm9ybS5pZGwKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCit0eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3Ig
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKSBSVENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRp
b25hbD1XRUJfUlRDLAogICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVh
bXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuY3BwCmluZGV4IDBiZmNjOTY2M2MyZjA2ZDRlOTBjMDk0ODhkZjI1MmUxZmQyYjNj
MDAuLmVmN2EyOTgwMDA2MmUyMzhjNmNiM2M2MGM2NTIyNWNlZDViMzgxYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3Bw
CkBAIC04MSw4ICs4MSwxMCBAQCBPcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJl
Y2VpdmVyOjpnZXRDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJldHVybiBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnRleHQsIGtpbmQp
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBSZWNlaXZlcjo6c2V0VHJhbnNmb3JtKFJl
ZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKQorRXhjZXB0aW9uT3I8dm9pZD4gUlRD
UnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYgdHJh
bnNmb3JtKQogeworICAgIGlmICh0cmFuc2Zvcm0gJiYgbV90cmFuc2Zvcm0gJiYgKnRyYW5zZm9y
bSA9PSAqbV90cmFuc2Zvcm0pCisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKHRyYW5zZm9y
bSAmJiB0cmFuc2Zvcm0tPmlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAidHJhbnNmb3JtIGlzIGFscmVhZHkgaW4gdXNlIl9zIH07CiAK
QEAgLTk1LDYgKzk3LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJlY2VpdmVyOjpzZXRU
cmFuc2Zvcm0oUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2ZvCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gUlRDUnRwUmVjZWl2
ZXI6OnRyYW5zZm9ybSgpCit7CisgICAgaWYgKCFtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm0tPmludGVybmFsVHJhbnNmb3JtKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5o
CmluZGV4IDhjYjFhNDNkMmJkMDQ0NjI0YzI4N2NhNmFmNzFjN2RmODc4ZDIyYjUuLjNhMTYxNzIw
NTQzYzFkNGJiZmM1MWExNDAxMzdkOWNjNzcwMGQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKQEAgLTY3LDggKzY3LDgg
QEAgcHVibGljOgogICAgIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJu
IG1fYmFja2VuZC5nZXQoKTsgfQogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKLSAgICBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJh
bnNmb3JtLmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJlZlB0
cjxSVENSdHBUcmFuc2Zvcm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+IHRyYW5zZm9ybSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShP
cHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFJlY2Vp
dmVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBzdGQ6
OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKQEAgLTc2LDcgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IG1fY29ubmVjdGlvbjsKLSAgICBSZWZQdHI8UlRDUnRwVHJh
bnNmb3JtPiBtX3RyYW5zZm9ybTsKKyAgICBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+IG1fdHJh
bnNmb3JtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRo
VHJhbnNmb3JtLmgKaW5kZXggNGViOWI4NDc5MTEzZGEyMTc5NWM4NzA3ZWJkZGU0Y2E2ZWEyYjRj
Zi4uODE2Y2E3OWM5ZDNiNzBiMjc5NGViOTZiODI3Y2ZhNTI5MzM2OTM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFu
c2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyV2l0aFRyYW5zZm9ybS5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5z
Zm9ybTsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2Vp
dmVyKSB7IHJldHVybiByZWNlaXZlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0YXRpYyBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyLCBSZWZQdHI8
UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gcmVjZWl2ZXIuc2V0VHJhbnNm
b3JtKFdURk1vdmUodHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwVHJh
bnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyBy
ZXR1cm4gcmVjZWl2ZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0VHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlciwgT3B0aW9uYWw8UlRDUnRw
VHJhbnNmb3JtOjpJbnRlcm5hbD4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHJlY2VpdmVyLnNldFRy
YW5zZm9ybShSVENSdHBUcmFuc2Zvcm06OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCAy
OTc0YzY0MGM5OGExYWVmZDFlMWI2ZmEyMWQxN2E2ZDY1MGE2NjM2Li41Yzg3Y2Y1NjRhNTE1MzAx
NDc5M2M0OGYyZjJkZTkyNzVjNzk3MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgiCisjaW5jbHVkZSAiUlRD
UnRwVHJhbnNmb3JtQmFja2VuZC5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFt
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCwxMSArNjksMTIgQEAgdWludDY0X3Qg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygpIGNvbnN0CiAKIHZvaWQg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYgYmFja2VuZCwgU2lkZSBzaWRlKQogeworICAgIG1faXNBdHRhY2hlZCA9IHRy
dWU7CiAgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVy
KTsKICAgICBtX3RyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlh
VHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOwogCiAg
ICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBt
X3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7
Ci0gICAgICAgIGF1dG8gY2h1bmsgPSBmcmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gY2h1bmsg
PSBmcmFtZS0+ZGF0YSgpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFu
c2Zvcm0oY2h1bmsuZGF0YSwgY2h1bmsuc2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgewpAQCAtODAsOSArODIsOSBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZnJhbWUuc2V0RGF0YSh7
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgp
IH0pOworICAgICAgICBmcmFtZS0+c2V0RGF0YSh7IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmRhdGEo
KSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgpIH0pOwogCi0gICAgICAgIGJhY2tlbmQtPnBy
b2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1vdmUoZnJhbWUpKTsKKyAgICAgICAgYmFja2VuZC0+
cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZS5nZXQoKSkpOwogICAgIH0pOwog
fQogCkBAIC0xMDAsNiArMTAyLDcgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRp
YWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGIKIHZvaWQgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmIGJhY2tlbmQpCiB7CiAgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxi
YWNrKCk7CisgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCmluZGV4IDE1ODE5MGE5MDk2NjBjZjA0MGQwNjdlMzZh
YTU3ZmZiY2E2MTRiYWMuLmQ0N2RiOWIyOWM4YTZiZDU3OGNlMjMxYWEzMWI1NjlhMDlhZTg1Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaApAQCAtMjgsMzIgKzI4LDM0IEBACiAjaWYgRU5BQkxFKFdF
Ql9SVEMpCiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIlJU
Q1J0cFRyYW5zZm9ybS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0tl
eTsKIGNsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworY2xhc3MgUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZDsKIAotY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGZpbmFsIDogcHVibGljIFJU
Q1J0cFRyYW5zZm9ybSB7CitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gOiBwdWJsaWMgUmVm
Q291bnRlZDxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CiAgICAgflJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOwog
CiAgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9wdGlvbmFsPHVpbnQ2NF90
PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCisgICAgYm9vbCBpc0F0dGFjaGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9CisgICAgdm9pZCBpbml0aWFsaXplQmFja2Vu
ZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIGluaXRpYWxp
emVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIHdp
bGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRG
b3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCBpbml0
aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0g
ICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsK
LQogICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKICAgICB2b2lkIGlu
aXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7CiAKKyAg
ICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgUmVmPFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyPiBtX3RyYW5zZm9ybWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCmluZGV4
IDk3Yjc2OThiZDhjNmQ0YjIyY2VjNjA5YTg3Y2E3MWFiMGFlNGI5NDEuLjI2NDI4ZGQ5MmY1MTU5
ZDNlOTIyYjUxMGU0ZGUwNzU2NjdhOTEyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKQEAg
LTI4LDggKzI4LDkgQEAKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJl
YW1zLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEV4cG9zZWQ9V2luZG93
LAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LAotXSBpbnRlcmZhY2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogUlRDUnRwVHJhbnNm
b3JtIHsKK10gaW50ZXJmYWNlIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB7CiAgICAgY29uc3RydWN0
b3IoKTsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tl
eSBrZXksIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc3MzYwNzVkZWQ3NzZiMmY3NjljZDVlOTg0YjU3ZjM1OWQy
MTVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgorI2luY2x1ZGUgIldv
cmtlci5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSk7CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrZXImIHdvcmtlciwgU3RyaW5nJiYgbmFtZSkKK3sKKyAgICBpZiAoIXdvcmtlci5oYXNSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcihuYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiTm8gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgd2FzIHJlZ2lzdGVy
ZWQgd2l0aCB0aGlzIG5hbWUiX3MgfTsKKworICAgIGlmICghd29ya2VyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiV29ya2VyIGZyYW1lIGlzIGRldGFjaGVkIl9zIH07CisKKyAgICBhdXRvIG1lc3NhZ2VDaGFu
bmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgYXV0byB0cmFuc2Zvcm1NZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVsLT5w
b3J0MSgpOworICAgIGF1dG8gdHJhbnNmb3JtZXJNZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVs
LT5wb3J0MigpOworCisgICAgYXV0byB0cmFuc2Zvcm0gPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybShjb250ZXh0LCBtYWtlUmVmKHdvcmtlciksIG1ha2VSZWYoKnRyYW5zZm9y
bU1lc3NhZ2VQb3J0KSkpOworICAgIHRyYW5zZm9ybS0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAg
ICB3b3JrZXIuY3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIobmFtZSwgdHJhbnNmb3JtZXJN
ZXNzYWdlUG9ydC0+ZGlzZW50YW5nbGUoKSwgdHJhbnNmb3JtKTsKKworICAgIHJldHVybiB0cmFu
c2Zvcm07Cit9CisKK1JUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxXb3JrZXI+JiYgd29ya2VyLCBS
ZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkK
KyAgICAsIG1fd29ya2VyKFdURk1vdmUod29ya2VyKSkKKyAgICAsIG1fcG9ydChXVEZNb3ZlKHBv
cnQpKQoreworfQorCitSVENSdHBTY3JpcHRUcmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zv
cm0oKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpz
ZXRUcmFuc2Zvcm1lcihSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+JiYgdHJhbnNmb3Jt
ZXIpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCF0cmFuc2Zvcm1l
cikgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgRXJyb3JFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAiQW4gZXJyb3Igd2FzIHRocm93biBmcm9tIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyIGNvbnN0cnVjdG9yIl9zLCB7IH0sIDAsIDAsIHsgfSkpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9p
c1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQpOworICAgICAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFs
aXplZCA9IHRydWU7CisgICAgICAgIG1fdHJhbnNmb3JtZXIgPSBtYWtlV2Vha1B0cih0cmFuc2Zv
cm1lci5nZXQoKSk7CisgICAgfQorICAgIHRyYW5zZm9ybWVyLT5zdGFydFBlbmRpbmdBY3Rpdml0
eSgpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgICAg
IHNldHVwVHJhbnNmb3JtZXIobV9iYWNrZW5kLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0pOwor
fQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNl
aXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxpemVU
cmFuc2Zvcm1lcihiYWNrZW5kKTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06Omlu
aXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQp
Cit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQpOworfQorCit2b2lkIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
JikKK3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5p
dGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgbV9pc0F0dGFjaGVkID0gdHJ1ZTsKKyAgICBpZiAoIXNldHVwVHJhbnNmb3JtZXIobWFrZVJl
ZihiYWNrZW5kKSkpCisgICAgICAgIG1fYmFja2VuZCA9IG1ha2VSZWYoYmFja2VuZCk7Cit9CisK
K2Jvb2wgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpzZXR1cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kPiYmIGJhY2tlbmQpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgaWYgKCFtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXpl
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV93b3JrZXItPnBvc3RUYXNrVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gV1RG
TW92ZShiYWNrZW5kKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAodHJhbnNmb3JtZXIp
CisgICAgICAgICAgICB0cmFuc2Zvcm1lci0+c3RhcnQoV1RGTW92ZShiYWNrZW5kKSk7CisgICAg
fSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpj
bGVhcigpCit7CisgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fdHJhbnNmb3JtZXJMb2NrKTsKKyAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFs
aXplZCA9IGZhbHNlOworICAgIG1fd29ya2VyLT5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUo
W3RyYW5zZm9ybWVyID0gV1RGTW92ZShtX3RyYW5zZm9ybWVyKV0oYXV0byYpIG11dGFibGUgewor
ICAgICAgICBpZiAodHJhbnNmb3JtZXIpCisgICAgICAgICAgICB0cmFuc2Zvcm1lci0+Y2xlYXIo
KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGRjZWI1ZjQwZmY1
N2ZkNWZhM2NjMDc5M2E2MTA4ZTg1NTZlNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcjsKK2NsYXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ7CitjbGFzcyBXb3JrZXI7
CisKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBmaW5hbAorICAgIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4KKyAgICAsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QKKyAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKKyAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk7CitwdWJsaWM6
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtlciYsIFN0cmluZyYmIG5hbWUpOworICAg
IH5SVENSdHBTY3JpcHRUcmFuc2Zvcm0oKTsKKworICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgeyBy
ZXR1cm4gbV9wb3J0LmdldCgpOyB9CisKKyAgICB2b2lkIHNldFRyYW5zZm9ybWVyKFJlZlB0cjxS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4mJik7CisKKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7IH0KKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9y
UmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgd2lsbENs
ZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisKKyAgICB1c2luZyBUaHJlYWRT
YWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJl
ZjsKKworcHJpdmF0ZToKKyAgICBSVENSdHBTY3JpcHRUcmFuc2Zvcm0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZjxXb3JrZXI+JiYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CisKKyAgICB2b2lk
IGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisgICAgYm9v
bCBzZXR1cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmKTsKKyAgICB2
b2lkIGNsZWFyKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgeyByZXR1cm4gIlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bSI7IH0KKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQorCisgICAgUmVmPFdvcmtlcj4gbV93b3JrZXI7CisgICAgUmVmPE1l
c3NhZ2VQb3J0PiBtX3BvcnQ7CisKKyAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07Cisg
ICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFja2VuZDsKKworICAgIExvY2sg
bV90cmFuc2Zvcm1lckxvY2s7CisgICAgYm9vbCBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCB7
IGZhbHNlIH07CisgICAgV2Vha1B0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4gbV90cmFuc2Zv
cm1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NmE5Yjk1MzFjMTc4
MjFjNjg5OWI2ZjYwMGZkNTczMGQ5ZmU5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9zZWQ9V2luZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSA6IEV2ZW50VGFyZ2V0IHsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoV29ya2VyIHdv
cmtlciwgRE9NU3RyaW5nIG5hbWUpOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQ
b3J0IHBvcnQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNjNiZThhZGMzMDI3ZTU3OGY2NmNmNGM1OWMxYjU3NGQ2ZmUyNjM1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2lu
dGVyZmFjZSBtaXhpbiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlciB7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihE
T01TdHJpbmcgbmFtZSwgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3RvciBwcm9jZXNz
b3JDb25zdHJ1Y3Rvcik7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzM3NGQ3MjNlMDQ3NTc5ZDBmOGIzNTdmZGJjNTQ1ZTY0NWNhMzcwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAi
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5o
IgorI2luY2x1ZGUgIkpTUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaCIKKyNpbmNsdWRlICJKU1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgi
CisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNv
dXJjZS5oIgorI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCisjaW5jbHVkZSAiV3JpdGFibGVT
dHJlYW1TaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwUmVhZGFi
bGVTdHJlYW1Tb3VyY2UKKyAgICA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNvdXJjZQorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSk7IH0KKwor
ICAgIHZvaWQgY2xvc2UoKSB7IGNvbnRyb2xsZXIoKS5jbG9zZSgpOyB9CisgICAgdm9pZCBlbnF1
ZXVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBjb250cm9sbGVyKCkuZW5xdWV1ZSh2YWx1ZSk7IH0K
KworcHJpdmF0ZToKKyAgICBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSgpID0gZGVmYXVsdDsK
KworICAgIC8vIFJlYWRhYmxlU3RyZWFtU291cmNlCisgICAgdm9pZCBzZXRBY3RpdmUoKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHNldEluYWN0aXZlKCkgZmluYWwgeyB9CisgICAgdm9pZCBkb1N0YXJ0
KCkgZmluYWwgeyB9CisgICAgdm9pZCBkb1B1bGwoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRvQ2Fu
Y2VsKCkgZmluYWwgeyB9Cit9OworCitjbGFzcyBSVENSdHBXcml0YWJsZVN0cmVhbVNpbmsgOiBw
dWJsaWMgV3JpdGFibGVTdHJlYW1TaW5rIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ1J0
cFdyaXRhYmxlU3RyZWFtU2luaz4gY3JlYXRlKEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVmPFJUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZT4mJik+JiYgZW5xdWV1ZUZ1bmN0aW9uKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luayhXVEZNb3ZlKGVucXVldWVGdW5jdGlv
bikpKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
ayhGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPiYm
IGVucXVldWVGdW5jdGlvbikKKyAgICAgICAgOiBtX2VucXVldWVGdW5jdGlvbihXVEZNb3ZlKGVu
cXVldWVGdW5jdGlvbikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgd3JpdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7CisKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBhdXRvIGZyYW1lID0g
Y29udmVydDxJRExVbmlvbjxJRExJbnRlcmZhY2U8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBJRExJ
bnRlcmZhY2U8UlRDRW5jb2RlZFZpZGVvRnJhbWU+Pj4oZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisK
KyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0sIFJlamVjdEFzSGFuZGxl
ZDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6
c3dpdGNoT24oZnJhbWUsIFsmXShSZWZQdHI8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+JiB2YWx1ZSkg
eworICAgICAgICAgICAgbV9lbnF1ZXVlRnVuY3Rpb24odmFsdWUtPnRha2VSVENGcmFtZSgpKTsK
KyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENFbmNvZGVkVmlkZW9GcmFtZT4mIHZhbHVlKSB7Cisg
ICAgICAgICAgICBtX2VucXVldWVGdW5jdGlvbih2YWx1ZS0+dGFrZVJUQ0ZyYW1lKCkpOworICAg
ICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgfQorCisgICAgLy8gRklY
TUU6IERlY2lkZSB3aGV0aGVyIGNsZWFyaW5nIGFsbCBwZW5kaW5nIGZyYW1lcy4KKyAgICB2b2lk
IGNsb3NlKCkgZmluYWwgeyB9CisgICAgdm9pZCBlcnJvcihTdHJpbmcmJikgZmluYWwgeyB9CisK
KyAgICBGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYp
PiBtX2VucXVldWVGdW5jdGlvbjsKK307CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcj4+IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBvcnQgPSBkb3duY2FzdDxEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGFrZVBlbmRpbmdSVENUcmFuc2ZvbWVyTWVz
c2FnZVBvcnQoKTsKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJObyBwZW5kaW5nIGNvbnN0cnVjdGlvbiBkYXRhIGZvciB0aGlzIFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyIl9zIH07CisKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gYWRvcHRSZWYo
Km5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb250ZXh0LCBwb3J0LnJlbGVhc2VOb25OdWxs
KCkpKTsKKyAgICB0cmFuc2Zvcm1lci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRy
YW5zZm9ybWVyOworfQorCitSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1lc3NhZ2VQb3J0
PiYmIHBvcnQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3BvcnQo
V1RGTW92ZShwb3J0KSkKK3sKK30KKworUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6On5SVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcigpCit7Cit9CisKK1JlZlB0cjxSVENSdHBSZWFkYWJsZVN0cmVhbVNv
dXJjZT4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OnN0YXJ0U3RyZWFtcyhSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2Fs
bGJhY2spOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKKworICAgIGF1dG8m
IHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CisKKyAgICBhdXRvIHJlYWRhYmxlU3RyZWFtU291cmNlID0gUlRDUnRwUmVhZGFibGVTdHJlYW1T
b3VyY2U6OmNyZWF0ZSgpOworICAgIGF1dG8gcmVhZGFibGVTdHJlYW0gPSBSZWFkYWJsZVN0cmVh
bTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgcmVhZGFibGVTdHJlYW1Tb3VyY2UuY29weVJlZigpKTsK
KyAgICBpZiAocmVhZGFibGVTdHJlYW0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byB3cml0YWJsZVN0cmVhbSA9IFdyaXRhYmxlU3RyZWFtOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShbYmFja2Vu
ZCA9IG1ha2VSZWYoYmFja2VuZCldKGF1dG8mJiBmcmFtZSkgeworICAgICAgICBiYWNrZW5kLT5w
cm9jZXNzVHJhbnNmb3JtZWRGcmFtZShXVEZNb3ZlKGZyYW1lLmdldCgpKSk7CisgICAgfSkpOwor
ICAgIGlmICh3cml0YWJsZVN0cmVhbS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAvLyBDYWxsIHN0YXJ0IGNhbGxiYWNrLgorICAgIEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTTmV3bHlDcmVhdGVkKCZnbG9i
YWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHJlYWRhYmxlU3RyZWFtLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKSk7CisgICAgYXJncy5hcHBlbmQodG9KU05ld2x5Q3JlYXRlZCgmZ2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCB3cml0YWJsZVN0cmVhbS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworCisg
ICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIGNhbGxi
YWNrLT5pbnZva2VDYWxsYmFjayhKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAic3RhcnQiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhp
bmcgaW4gY2FzZSBvZiBleGNlcHRpb24/IFdlIHNob3VsZCBhdCBsZWFzdCBsb2cgZXJyb3JzLgor
CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtU291cmNlOworfQorCit2b2lkIFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5k
KQoreworICAgIGF1dG8gcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBzdGFydFN0cmVhbXMoYmFja2Vu
ZC5nZXQoKSk7CisgICAgaWYgKCFyZWFkYWJsZVN0cmVhbVNvdXJjZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9iYWNrZW5kID0gV1RGTW92ZShiYWNrZW5kKTsKKworICAgIGF1dG8mIGNvbnRl
eHQgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisgICAgbV9iYWNrZW5kLT5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbcmVhZGFi
bGVTdHJlYW1Tb3VyY2UgPSBtYWtlV2Vha1B0cihyZWFkYWJsZVN0cmVhbVNvdXJjZS5nZXQoKSks
IGlzQXVkaW8gPSBtX2JhY2tlbmQtPm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQ6Ok1lZGlhVHlwZTo6QXVkaW8sIHRocmVhZCA9IG1ha2VSZWYoY29udGV4dC50aHJlYWQoKSld
KGF1dG8mJiBmcmFtZSkgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShbcmVhZGFibGVTdHJlYW1Tb3VyY2UsIGlzQXVkaW8sIGZyYW1lID0gV1RGTW92
ZShmcmFtZSldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFyZWFk
YWJsZVN0cmVhbVNvdXJjZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAg
ICAgICAgICBhdXRvIHZhbHVlID0gaXNBdWRpbyA/IHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2Jh
bE9iamVjdCwgUlRDRW5jb2RlZEF1ZGlvRnJhbWU6OmNyZWF0ZShXVEZNb3ZlKGZyYW1lKSkpIDog
dG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBSVENFbmNvZGVkQXVkaW9GcmFtZTo6
Y3JlYXRlKFdURk1vdmUoZnJhbWUpKSk7CisgICAgICAgICAgICByZWFkYWJsZVN0cmVhbVNvdXJj
ZS0+ZW5xdWV1ZSh2YWx1ZSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOworICAgIH0pOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjbGVhcigp
Cit7CisgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgbV9iYWNrZW5kLT5jbGVhclRyYW5zZm9y
bWFibGVGcmFtZUNhbGxiYWNrKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKKyAgICBzdG9w
UGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUy
YWRkY2U0ZjEyMGRlYjg0NGMwNGZiMWJkYjZmNmE1MGEwY2U4NzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlND
YWxsYmFja0RhdGFTdHJvbmc7CitjbGFzcyBNZXNzYWdlUG9ydDsKK2NsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CitjbGFzcyBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOworY2xhc3MgUlRDUnRw
UmVhZGFibGVTdHJlYW1Tb3VyY2U7CisKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyCisg
ICAgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4KKyAgICAsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QKKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcj4geworcHVibGljOgorICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OworICAgIH5SVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigpOworCisgICAgdm9pZCBzZXRDYWxsYmFj
ayhzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+JiYgY2FsbGJhY2spIHsgbV9j
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CisgICAgTWVzc2FnZVBvcnQmIHBvcnQoKSB7
IHJldHVybiBtX3BvcnQuZ2V0KCk7IH0KKworICAgIHZvaWQgc3RhcnQoUmVmPFJUQ1J0cFRyYW5z
Zm9ybUJhY2tlbmQ+JiYpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZvaWQgc3RhcnRQZW5k
aW5nQWN0aXZpdHkoKSB7IG1fcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyk7IH0KKworcHJpdmF0ZToKKyAgICBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUmVmPE1lc3NhZ2VQb3J0PiYmKTsKKworICAgIFJlZlB0cjxSVENS
dHBSZWFkYWJsZVN0cmVhbVNvdXJjZT4gc3RhcnRTdHJlYW1zKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmKTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCB7IHJldHVybiAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIiOyB9
CisgICAgdm9pZCBzdG9wKCkgZmluYWwgeyBzdG9wUGVuZGluZ0FjdGl2aXR5KCk7IH0KKyAgICB2
b2lkIHN0b3BQZW5kaW5nQWN0aXZpdHkoKSB7IGF1dG8gcGVuZGluZ0FjdGl2aXR5ID0gV1RGTW92
ZShtX3BlbmRpbmdBY3Rpdml0eSk7IH0KKworICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0Owor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4gbV9jYWxsYmFjazsKKyAg
ICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4gbV9iYWNrZW5kOworICAgIFJlZlB0cjxQ
ZW5kaW5nQWN0aXZpdHk8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBtX3BlbmRpbmdBY3Rpdml0
eTsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3NzQ1NTdkMDVk
YzVhMDUwM2U5ZTE3MmJiOTJkNjQ3ZTQ5MDA5NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbApA
QCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRklYTUU6IEFkZCBFbmFibGVkQnlTZXR0
aW5nPVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLAorWworICAgIEFjdGl2ZURPTU9iamVjdCwKKyAg
ICBDb25kaXRpb25hbD1XRUJfUlRDLAorICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAorICAg
IEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0
b3IoLyogb3B0aW9uYWwgb2JqZWN0IHRyYW5zZm9ybU9wdGlvbnMgKi8pOworCisgICAgLy8gRklY
TUU6IGFkZCBjb250cm9sbGVyIGF0dHJpYnV0ZS4KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVz
c2FnZVBvcnQgcG9ydDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1
Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU5ZDliZGI4YmUxMzczYmY3ZmZjMGY3ZjFhZDkwYjgyZGY0ODQ0
M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJBY3RpdmVET01DYWxsYmFjay5o
IgorI2luY2x1ZGUgIkNhbGxiYWNrUmVzdWx0LmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
cjsKKworY2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3I+LCBwdWJsaWMgQWN0
aXZlRE9NQ2FsbGJhY2sgeworcHVibGljOgorICAgIHVzaW5nIEFjdGl2ZURPTUNhbGxiYWNrOjpB
Y3RpdmVET01DYWxsYmFjazsKKworICAgIHZpcnR1YWwgQ2FsbGJhY2tSZXN1bHQ8UmVmUHRyPFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyPj4gaGFuZGxlRXZlbnQoKSA9IDA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXJDb25zdHJ1Y3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MjFlNTNm
NmI2NTViNGY4YWE5YjE3MmUyM2IyNzAzMTRjNTdiZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29u
c3RydWN0b3IuaWRsCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCitdIGNhbGxi
YWNrIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IgPSBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwKaW5kZXggMzM4YTdlMzA3ZDYyNGMx
MzRmNzgwY2NiNzEwYzhjNjgyNGRjMGRkYS4uYjkxMmQwMWE2ZDk5NTVhMzA0YmJiMWE1Y2ZkOGE5
ZjUwMGM5MDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCkBAIC0yMyw2ICsyMyw4IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAordHlwZWRlZiAoUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtIG9yIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSkgUlRDUnRwVHJhbnNm
b3JtOworCiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKICAgICBFbmFibGVkQnlTZXR0aW5n
PVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IGM3YWMzYzQ5YmQ5ZDc5NmIyNDg3
NWY5ZDkyMzA2ZDNlOTNhNzU0M2IuLjNlMDMyYjY1OTNhNzY0M2I0NjJkM2RmYThlMjJmYjJiMDk0
NDZlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNlbmRlci5jcHAKQEAgLTE5Myw4ICsxOTMsMTAgQEAgT3B0aW9uYWw8UlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24+IFJUQ1J0cFNlbmRlcjo6Y3VycmVudFRyYW5zY2VpdmVyRGlyZWN0aW9u
KCkKICAgICByZXR1cm4gc2VuZGVyVHJhbnNjZWl2ZXItPmN1cnJlbnREaXJlY3Rpb24oKTsKIH0K
IAotRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRUcmFuc2Zvcm0oUmVmUHRyPFJU
Q1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pCitFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5k
ZXI6OnNldFRyYW5zZm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKQog
eworICAgIGlmICh0cmFuc2Zvcm0gJiYgbV90cmFuc2Zvcm0gJiYgKnRyYW5zZm9ybSA9PSAqbV90
cmFuc2Zvcm0pCisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKHRyYW5zZm9ybSAmJiB0cmFu
c2Zvcm0tPmlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAidHJhbnNmb3JtIGlzIGFscmVhZHkgaW4gdXNlIl9zIH07CiAKQEAgLTIwNyw2
ICsyMDksMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwU2VuZGVyOjpzZXRUcmFuc2Zvcm0o
UmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0KICAgICByZXR1cm4geyB9OwogfQog
CitPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiBSVENSdHBTZW5kZXI6OnRyYW5z
Zm9ybSgpCit7CisgICAgaWYgKCFtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICByZXR1cm4gbV90cmFuc2Zvcm0tPmludGVybmFsVHJhbnNmb3JtKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggNzBhZDk1
OTI3MGJiMmEyOWFlMzQ5M2IxZDFlYjgwOTRhOWI1MDViNS4uZWRlNGQ5ZGEwYjg1MGE4Y2E5Zjg5
YWEyNGMxY2FhNTc4N2I5ZjQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKICAgICBS
VENEVE1GU2VuZGVyKiBkdG1mKCk7CiAgICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNjZWl2ZXJEaXJl
Y3Rpb24+IGN1cnJlbnRUcmFuc2NlaXZlckRpcmVjdGlvbigpIGNvbnN0OwogCi0gICAgUlRDUnRw
VHJhbnNmb3JtKiB0cmFuc2Zvcm0oKSB7IHJldHVybiBtX3RyYW5zZm9ybS5nZXQoKTsgfQotICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYm
KTsKKyAgICBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiB0cmFuc2Zvcm0oKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oT3B0aW9uYWw8UlRDUnRwVHJhbnNm
b3JtPiYmKTsKIAogcHJpdmF0ZToKICAgICBSVENSdHBTZW5kZXIoUlRDUGVlckNvbm5lY3Rpb24m
LCBTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0
ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKQEAgLTk1LDcgKzk1LDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4gbV9iYWNr
ZW5kOwogICAgIFdlYWtQdHI8UlRDUGVlckNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICBS
ZWZQdHI8UlRDRFRNRlNlbmRlcj4gbV9kdG1mU2VuZGVyOwotICAgIFJlZlB0cjxSVENSdHBUcmFu
c2Zvcm0+IG1fdHJhbnNmb3JtOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFu
c2Zvcm07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRyYW5z
Zm9ybS5oCmluZGV4IDg3MTQzOGVlNjY1YjI2ZjgwZTE1MWMxOTVlYzg3NmNjZWFhYTkzMGUuLjQ2
ZDM3YTc3MzZmMTZkYzA3OTViOTVkNDA1OGVhYTk0M2ZkYTZiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0
aFRyYW5zZm9ybS5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5zZm9ybTsKIAog
Y2xhc3MgUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJU
Q1J0cFRyYW5zZm9ybSogdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSB7IHJldHVybiBz
ZW5kZXIudHJhbnNmb3JtKCk7IH0KLSAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJh
bnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRy
YW5zZm9ybSkgeyByZXR1cm4gc2VuZGVyLnNldFRyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkp
OyB9CisgICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5z
Zm9ybShSVENSdHBTZW5kZXImIHNlbmRlcikgeyByZXR1cm4gc2VuZGVyLnRyYW5zZm9ybSgpOyB9
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShSVENSdHBTZW5kZXIm
IHNlbmRlciwgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4mJiB0cmFuc2Zvcm0p
IHsgcmV0dXJuIHNlbmRlci5zZXRUcmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtOjpmcm9tKFdURk1v
dmUodHJhbnNmb3JtKSkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5j
cHAKaW5kZXggM2JmNWU1ZTVjMmRmNzBmOTYzMDNkZjk0OTRmYzViMzE1YzY5M2IxZC4uM2M3ZmNm
NGJkMjQyNzU2ZTMxYzVkYjM4YWM5NmJiOGExZjc0MDgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcApAQCAtMzMs
MTAgKzMzLDMwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorT3B0aW9uYWw8UlRDUnRwVHJh
bnNmb3JtPiBSVENSdHBUcmFuc2Zvcm06OmZyb20oT3B0aW9uYWw8SW50ZXJuYWw+JiYgaW50ZXJu
YWwpCit7CisgICAgaWYgKCFpbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gUlRDUnRwVHJhbnNmb3JtKFdURk1vdmUoKmludGVybmFsKSk7Cit9CisKK1JUQ1J0cFRyYW5z
Zm9ybTo6UlRDUnRwVHJhbnNmb3JtKEludGVybmFsJiYgdHJhbnNmb3JtKQorICAgIDogbV90cmFu
c2Zvcm0oV1RGTW92ZSh0cmFuc2Zvcm0pKQoreworfQorCiBSVENSdHBUcmFuc2Zvcm06On5SVENS
dHBUcmFuc2Zvcm0oKQogewotICAgIGlmIChtX2JhY2tlbmQpCi0gICAgICAgIHdpbGxDbGVhckJh
Y2tlbmQoKm1fYmFja2VuZCk7CisgICAgY2xlYXJCYWNrZW5kKCk7Cit9CisKK2Jvb2wgUlRDUnRw
VHJhbnNmb3JtOjppc0F0dGFjaGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3dpdGNoT24obV90
cmFuc2Zvcm0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1l
VHJhbnNmb3JtKSB7CisgICAgICAgIHJldHVybiBzZnJhbWVUcmFuc2Zvcm0tPmlzQXR0YWNoZWQo
KTsKKyAgICB9LCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlw
dFRyYW5zZm9ybSkgeworICAgICAgICByZXR1cm4gc2NyaXB0VHJhbnNmb3JtLT5pc0F0dGFjaGVk
KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1JlY2VpdmVy
KFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikKQEAgLTQ0LDggKzY0LDEzIEBAIHZvaWQgUlRDUnRw
VHJhbnNmb3JtOjphdHRhY2hUb1JlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikKICAg
ICBBU1NFUlQoIWlzQXR0YWNoZWQoKSk7CiAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSByZWNlaXZl
ci5iYWNrZW5kKCkpCiAgICAgICAgIG1fYmFja2VuZCA9IGJhY2tlbmQtPmNyZWF0ZVJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQoKTsKLSAgICBpZiAobV9iYWNrZW5kKQotICAgICAgICBpbml0aWFsaXpl
QmFja2VuZEZvclJlY2VpdmVyKCptX2JhY2tlbmQpOworICAgIGlmIChtX2JhY2tlbmQpIHsKKyAg
ICAgICAgc3dpdGNoT24obV90cmFuc2Zvcm0sIFsmXShSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtPiYgc2ZyYW1lVHJhbnNmb3JtKSB7CisgICAgICAgICAgICBzZnJhbWVUcmFuc2Zvcm0tPmlu
aXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoKm1fYmFja2VuZCk7CisgICAgICAgIH0sIFsmXShS
ZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAg
ICAgICBzY3JpcHRUcmFuc2Zvcm0tPmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoKm1fYmFj
a2VuZCk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0
dGFjaFRvU2VuZGVyKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQpAQCAtNTMsMjYgKzc4LDU0IEBAIHZv
aWQgUlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1NlbmRlcihSVENSdHBTZW5kZXImIHNlbmRlcikK
ICAgICBBU1NFUlQoIWlzQXR0YWNoZWQoKSk7CiAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBzZW5k
ZXIuYmFja2VuZCgpKQogICAgICAgICBtX2JhY2tlbmQgPSBiYWNrZW5kLT5jcmVhdGVSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kKCk7Ci0gICAgaWYgKG1fYmFja2VuZCkKLSAgICAgICAgaW5pdGlhbGl6
ZUJhY2tlbmRGb3JTZW5kZXIoKm1fYmFja2VuZCk7CisgICAgaWYgKG1fYmFja2VuZCkgeworICAg
ICAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zv
cm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNmcmFtZVRyYW5zZm9ybS0+aW5p
dGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoKm1fYmFja2VuZCk7CisgICAgICAgIH0sIFsmXShSZWZQ
dHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgICAg
ICBzY3JpcHRUcmFuc2Zvcm0tPmluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKCptX2JhY2tlbmQp
OworICAgICAgICB9KTsKKyAgICB9CiB9CiAKLXZvaWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hG
cm9tUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImKQordm9pZCBSVENSdHBUcmFuc2Zvcm06OmNsZWFy
QmFja2VuZCgpCiB7CiAgICAgaWYgKCFtX2JhY2tlbmQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHdpbGxDbGVhckJhY2tlbmQoKm1fYmFja2VuZCk7CisgICAgc3dpdGNoT24obV90cmFuc2Zvcm0s
IFsmXShSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtKSB7Cisg
ICAgICAgIHNmcmFtZVRyYW5zZm9ybS0+d2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAg
ICB9LCBbJl0oUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlwdFRyYW5zZm9ybSkg
eworICAgICAgICBzY3JpcHRUcmFuc2Zvcm0tPndpbGxDbGVhckJhY2tlbmQoKm1fYmFja2VuZCk7
CisgICAgfSk7CisKICAgICBtX2JhY2tlbmQgPSBudWxscHRyOwogfQogCit2b2lkIFJUQ1J0cFRy
YW5zZm9ybTo6ZGV0YWNoRnJvbVJlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJikKK3sKKyAgICBjbGVh
ckJhY2tlbmQoKTsKK30KKwogdm9pZCBSVENSdHBUcmFuc2Zvcm06OmRldGFjaEZyb21TZW5kZXIo
UlRDUnRwU2VuZGVyJikKIHsKLSAgICBpZiAoIW1fYmFja2VuZCkKLSAgICAgICAgcmV0dXJuOwor
ICAgIGNsZWFyQmFja2VuZCgpOworfQogCi0gICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5k
KTsKLSAgICBtX2JhY2tlbmQgPSBudWxscHRyOworYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJUQ1J0
cFRyYW5zZm9ybSYgYSwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBiKQoreworICAgIHJldHVybiBz
d2l0Y2hPbihhLm1fdHJhbnNmb3JtLCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybT4mIHNmcmFtZVRyYW5zZm9ybUEpIHsKKyAgICAgICAgcmV0dXJuIHN3aXRjaE9uKGIubV90
cmFuc2Zvcm0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1l
VHJhbnNmb3JtQikgeworICAgICAgICAgICAgcmV0dXJuIHNmcmFtZVRyYW5zZm9ybUEuZ2V0KCkg
PT0gc2ZyYW1lVHJhbnNmb3JtQi5nZXQoKTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFJlZlB0cjxS
VENSdHBTY3JpcHRUcmFuc2Zvcm0+JikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9KTsKKyAgICB9LCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4m
IHNjcmlwdFRyYW5zZm9ybUEpIHsKKyAgICAgICAgcmV0dXJuIHN3aXRjaE9uKGIubV90cmFuc2Zv
cm0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYpIHsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm1CKSB7CisgICAgICAgICAgICByZXR1cm4gc2Ny
aXB0VHJhbnNmb3JtQS5nZXQoKSA9PSBzY3JpcHRUcmFuc2Zvcm1CLmdldCgpOworICAgICAgICB9
KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmgKaW5kZXggZGI3
ZmQ4NDI3ZjU4MGM4NjhhYWVjNDNlMDY3YTM4ZjkwNzNjZmUwYi4uNjFiOTFlYWNlODY4Y2Q3YWM3
NGNjNDRjMzkyYjk1ZmMwYTI5YmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oCkBAIC0yNywxOCArMjcsMjIgQEAKIAog
I2lmIEVOQUJMRShXRUJfUlRDKQogCisjaW5jbHVkZSAiUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgi
CisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiUlRDUnRwVHJh
bnNmb3JtQmFja2VuZC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ1J0cFJlY2Vp
dmVyOwogY2xhc3MgUlRDUnRwU2VuZGVyOwogCi1jbGFzcyBXRUJDT1JFX0VYUE9SVCBSVENSdHBU
cmFuc2Zvcm0gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENSdHBUcmFuc2Zvcm0+IHsKK2NsYXNzIFJU
Q1J0cFRyYW5zZm9ybSAgewogcHVibGljOgotICAgIHZpcnR1YWwgflJUQ1J0cFRyYW5zZm9ybSgp
OworICAgIHVzaW5nIEludGVybmFsID0gVmFyaWFudDxSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNm
b3JtPiwgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4+OworICAgIHN0YXRpYyBPcHRpb25h
bDxSVENSdHBUcmFuc2Zvcm0+IGZyb20oT3B0aW9uYWw8SW50ZXJuYWw+JiYpOworCisgICAgZXhw
bGljaXQgUlRDUnRwVHJhbnNmb3JtKEludGVybmFsJiYpOworICAgIH5SVENSdHBUcmFuc2Zvcm0o
KTsKIAogICAgIGJvb2wgaXNBdHRhY2hlZCgpIGNvbnN0OwogICAgIHZvaWQgYXR0YWNoVG9SZWNl
aXZlcihSVENSdHBSZWNlaXZlciYpOwpAQCAtNDYsMzAgKzUwLDIxIEBAIHB1YmxpYzoKICAgICB2
b2lkIGRldGFjaEZyb21SZWNlaXZlcihSVENSdHBSZWNlaXZlciYpOwogICAgIHZvaWQgZGV0YWNo
RnJvbVNlbmRlcihSVENSdHBTZW5kZXImKTsKIAorICAgIEludGVybmFsIGludGVybmFsVHJhbnNm
b3JtKCkgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJik7CisKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRG
b3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgY2xlYXJC
YWNrZW5kKCk7CiAKLXByb3RlY3RlZDoKICAgICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtQmFja2Vu
ZD4gbV9iYWNrZW5kOworICAgIEludGVybmFsIG1fdHJhbnNmb3JtOwogfTsKIAotaW5saW5lIGJv
b2wgUlRDUnRwVHJhbnNmb3JtOjppc0F0dGFjaGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gISFt
X2JhY2tlbmQ7Ci19Ci0KLWlubGluZSB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJh
Y2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpCi17Ci19Ci0KLWlubGluZSB2
b2lkIFJUQ1J0cFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kJikKLXsKLX0KLQotaW5saW5lIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjp3
aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQorYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYsIGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYpOworaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGEsIGNvbnN0IFJUQ1J0cFRy
YW5zZm9ybSYgYikKIHsKKyAgICByZXR1cm4gIShhID09IGIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNmUz
MjgxMmJjNDNmZjFlM2Y1ZmFiMTA1MTY2NmU0ZWM0MzM1YTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBUcmFuc2Zvcm0uaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25k
aXRpb25hbD1XRUJfUlRDLAotICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0
cmVhbXMsCi0gICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCi0gICAgRXhwb3NlZD1XaW5k
b3cKLV0gaW50ZXJmYWNlIFJUQ1J0cFRyYW5zZm9ybSB7Ci0gICAgLy8gRklYTUU6IEFkZCByZWFk
YWJsZS93cml0YWJsZSBnZXR0ZXJzCi0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFJlYWRhYmxl
U3RyZWFtIHJlYWRhYmxlOwotICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBXcml0YWJsZVN0cmVh
bSB3cml0YWJsZTsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oCmluZGV4IDQxMjE0OTIyMDFhZTY0
NjM1Yjg4MjkzNTQ1NWU1YjhmMzczYmJjYTkuLmFhOTIyZDMyNzkzNzQ0YWE5Y2U4OTkzMjYxMmY4
NmRjYjU0YzU5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UlRDUnRwVHJhbnNmb3JtQmFja2VuCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNm
b3JtQmFja2VuZCgpID0gZGVmYXVsdDsKIAotICAgIHVzaW5nIENhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUmJik+OworICAgIHVzaW5nIENhbGxiYWNrID0g
RnVuY3Rpb248dm9pZChVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmKT47CiAg
ICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKENhbGxiYWNrJiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoUlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oCmluZGV4IDU3
MjYzNjAwN2VmYzI3NmMzOTU4YzJlNzJjMzlhMjEzYzlhZjk5OTAuLmRiNWIxZjExY2YxMzhiYjAz
NjhiZjE3NzQ4YTMxM2M4MjgzYjMxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaApAQCAt
MjksNiArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSVENSdHBUcmFuc2Zv
cm1hYmxlRnJhbWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IHZpcnR1YWwgflJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSgpID0gZGVmYXVsdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcAppbmRleCAw
MTYyZDMwZDFmZGQzMDJhM2I1YzNlZGIzOGRjY2I5ZWVlMTMzMTA0Li4xZTU1OTU1NTQxOGY4MTdk
Y2I4ZDQwZmY5ZDNkZjdiNTJiYzczZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaWYgRU5B
QkxFKFdFQl9SVEMpICYmIFVTRShMSUJXRUJSVEMpCiAKICNpbmNsdWRlICJMaWJXZWJSVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWUuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpzZXRJ
bnB1dENhbGxiYWNrKENhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5wdXRDYWxsYmFja0xvY2sp
OwogICAgIG1faW5wdXRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogfQpAQCAtNjEsNyAr
NjEsNyBAQCB2b2lkIExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OlRyYW5zZm9ybShzdGQ6
OnVuaXF1ZV9wdHI8d2VicnRjOjpUcmFuc2Zvcm1hYgogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2lucHV0Q2FsbGJhY2tMb2NrKTsKICAgICAgICAgaWYgKG1faW5wdXRD
YWxsYmFjaykgewotICAgICAgICAgICAgbV9pbnB1dENhbGxiYWNrKExpYldlYlJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZShXVEZNb3ZlKHJ0Y0ZyYW1lKSkpOworICAgICAgICAgICAgbV9pbnB1dENh
bGxiYWNrKG1ha2VVbmlxdWVSZWY8TGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPihXVEZN
b3ZlKHJ0Y0ZyYW1lKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFt
U2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2lu
ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFhZmE1NWQ5NDVjNWU3Mzk2MDdlMDUwYjQ3YTFlZTlhZWI1MmQ2M2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW1TaW5rLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworY2xhc3MgSlNWYWx1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBXcml0YWJsZVN0cmVhbVNpbmsgOiBwdWJsaWMgUmVmQ291bnRlZDxXcml0YWJsZVN0cmVhbVNp
bms+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Xcml0YWJsZVN0cmVhbVNpbmsoKSA9IGRlZmF1
bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpT
Qzo6SlNWYWx1ZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVycm9yKFN0cmluZyYmKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZjA2
MDA5NGI4ZWNlZDdjOTY4OWUxNWRiY2I0N2RmM2E2ODNmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlkbApAQCAt
MCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCitbCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmpl
Y3QsCisgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24KK10gaW50ZXJmYWNlIFdyaXRhYmxlU3RyZWFt
U2luayB7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8dW5k
ZWZpbmVkPiB3cml0ZShhbnkgdmFsdWUpOworICAgIHVuZGVmaW5lZCBjbG9zZSgpOworICAgIHVu
ZGVmaW5lZCBlcnJvcihET01TdHJpbmcgbWVzc2FnZSk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA1
ZGY4ZDVhYjRhMDBiN2IxMmFjNGYwZTQ0NDg1Y2U0NmQyNzQ5MDA5Li5iMGY4OTA4OTczMjU0ZjU0
MTEzOWYyNDllOTgxZDJhODI1ODhlZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTU4LDYgKzE1OCw5
IEBAIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQu
Y3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRWaWRlb0ZyYW1lLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGUuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZVRyYW5zcG9ydC5jcHAKIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjUsNiArMTY4LDggQEAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmNwcAogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lci5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNw
cAorTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAKIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBUcmFuc2Zvcm0uY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNw
cApAQCAtNjIyLDYgKzYyNyw3IEBAIGJpbmRpbmdzL2pzL1dlYkNvcmVKSVRPcGVyYXRpb25zLmNw
cAogYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0YS5jcHAKIGJpbmRpbmdzL2pzL1dlYkNv
cmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAKIGJpbmRpbmdzL2pzL1dpbmRvd1Byb3h5LmNwcAor
YmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uY3BwCiBicmlkZ2UvSWRlbnRpZmllclJlcC5jcHAK
IGJyaWRnZS9OUF9qc29iamVjdC5jcHAKIGJyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmNwcApAQCAt
MzI5NSw2ICszMzAxLDggQEAgSlNSVENEYXRhQ2hhbm5lbC5jcHAKIEpTUlRDRGF0YUNoYW5uZWxF
dmVudC5jcHAKIEpTUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmNwcAogSlNSVENEdHhTdGF0dXMu
Y3BwCitKU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5j
cHAKIEpTUlRDSWNlQ2FuZGlkYXRlLmNwcAogSlNSVENJY2VDYW5kaWRhdGVJbml0LmNwcAogSlNS
VENJY2VDYW5kaWRhdGVUeXBlLmNwcApAQCAtMzMyMywxMiArMzMzMSwxNCBAQCBKU1JUQ1J0cFBh
cmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFJlY2VpdmVyLmNwcAogSlNSVENSdHBSdHhQYXJhbWV0ZXJz
LmNwcAogSlNSVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCitKU1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bS5jcHAKK0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwCitKU1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyQ29uc3RydWN0b3IuY3BwCiBKU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAogSlNSVENS
dHBTZW5kZXIuY3BwCiBKU1JUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJjZS5jcHAKIEpTUlRDUnRw
VHJhbnNjZWl2ZXIuY3BwCiBKU1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmNwcAotSlNSVENS
dHBUcmFuc2Zvcm0uY3BwCiBKU1JUQ1NkcFR5cGUuY3BwCiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlv
bi5jcHAKIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdC5jcHAKQEAgLTM3MjEsNiArMzczMSw3
IEBAIEpTV29ya2xldE9wdGlvbnMuY3BwCiBKU1dyaXRhYmxlU3RyZWFtLmNwcAogSlNXcml0YWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAogSlNXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0
ZXIuY3BwCitKU1dyaXRhYmxlU3RyZWFtU2luay5jcHAKIEpTWE1MRG9jdW1lbnQuY3BwCiBKU1hN
TEh0dHBSZXF1ZXN0LmNwcAogSlNYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEw
NDE0OGNhOGYyOGYxZDI5YzBjMjZiMmU1ZWQxNjQyMDNiYzM2YjIuLjM0YzIxMjc2NDMwZGFmMzA4
YjdlNDQ0MDI1ZTJkMjYxNjFmZjk4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDUsOSArMTEwNSw2IEBACiAJCTQxODFD
NUNCMjU1NTgyRTQwMEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNUNBMjU1NTgyRTMw
MEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCAqLzsgfTsKIAkJNDE4MUM1Q0Qy
NTU1ODM2OTAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1Q0MyNTU1ODM2
ODAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oICovOyB9OwogCQk0
MTgxQzVEMTI1NTU4OTU2MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM1Q0Yy
NTU1ODk1NjAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaCAqLzsgfTsK
LQkJNDE4MUM1RDYyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNUQ1MjU1NUMx
QjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmggKi87IH07Ci0JCTQxODFDNUQ3MjU1
NUM0OUEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNUQzMjU1NUMxQjEwMEFFQjBGRiAv
KiBNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCAqLzsgfTsKLQkJNDE4MUM2MzkyNTVBRTkwRjAwQUVC
MEZGIC8qIEpTTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZGM0U5MjFDMUY4NTU1MDA2MURCRTQgLyogSlNNb2Nr
UlRDUnRwVHJhbnNmb3JtLmNwcCAqLzsgfTsKIAkJNDE4MUM2NDgyNTVCNEMyODAwQUVCMEZGIC8q
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzY0MjI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0MTgxQzY0QTI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzY0
NDI1NUI0QzI3MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmggKi87IH07CiAJCTQx
ODIwNTQ3MUU1M0U5OEMwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgyMDU0NTFFNTNDOENEMDBENjIyMDcg
LyogUlRDQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC03NTczLDcgKzc1NzAsNiBAQAogCQk0MTNDMkMzMzFCQzI5QTdCMDA3NTIw
NEMgLyogSlNET01Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RPTUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0M4
QjI0MjU1MkVFQTkwMEU2NTA1NSAvKiBSVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9ICJSVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMjYyNTUyRUVBOTAwRTY1MDU1IC8qIFJUQ1J0
cFNlbmRlcitUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJSVENSdHBTZW5k
ZXIrVHJhbnNmb3JtLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxM0M4QjI5
MjU1MkYwMTMwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFJUQ1J0cFRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxM0M4QjJFMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNlbmRlcldpdGhUcmFuc2Zv
cm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMkYyNTUyRjI3QjAwRTY1
MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENSdHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhC
MzAyNTUyRjI3QzAwRTY1MDU1IC8qIFJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1ODIsNiArNzU3OCwyNyBAQAogCQk0
MTNFMDA3ODFEQjBFNERFMDAyMzQxRDIgLyogTWVtb3J5UmVsZWFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlSZWxlYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxM0UwMDdCMURCMEU3MDcwMDIzNDFEMiAvKiBNZW1vcnlSZWxlYXNlQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlSZWxlYXNl
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0ZDNENEMUZEMUREOEMw
MDU0MUM0QiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RUYyNTYyREYwQzAwMzYzNDE3IC8q
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNDE4OUYwMjU2MkRGNTUwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zv
cm0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUYxMjU2MkRGNTYwMDM2MzQxNyAv
KiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTQxODlGMjI1NjJFMzJCMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGMzI1NjJFMzJDMDAzNjM0MTcgLyogUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTQxODlGNDI1NjJFMzJDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY1MjU2MkUz
MkQwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTQxODlGNjI1NjJFNjdBMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxNDE4OUY3MjU2MkU2N0EwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lckNvbnN0cnVjdG9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE0MTg5RjkyNTY0MTY1MDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENFbmNvZGVkQXVkaW9GcmFtZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUZBMjU2NDE2NTEwMDM2MzQxNyAvKiBSVENFbmNv
ZGVkVmlkZW9GcmFtZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDRW5jb2RlZFZpZGVv
RnJhbWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGQjI1NjQxNzU3
MDAzNjM0MTcgLyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDE0MTg5RkQyNTY0MTc2NjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUZFMjU2NDE4RTAwMDM2MzQx
NyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSVENFbmNvZGVkQXVkaW9GcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNDE4OUZGMjU2NDE4RTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkVmlkZW9GcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENFbmNvZGVkVmlk
ZW9GcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTAwMjU2NDM1
OTcwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbVNpbmsuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdyaXRhYmxlU3RyZWFtU2luay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxNDE4QTAyMjU2NDM1OTgwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbVNpbmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1TaW5rLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTAzMjU2NDNFMTIwMDM2MzQxNyAvKiBXcml0YWJs
ZVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXcml0YWJs
ZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTA0MjU2NDNF
MTMwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXcml0YWJsZVN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTQxOEEwNTI1NjY2MEFGMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRGcmFtZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTA2MjU2NjYwQjAwMDM2MzQxNyAvKiBSVENFbmNv
ZGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDRW5jb2RlZEZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDQ2MEEwMjQxMjk5NDEwMDgx
NEJFNyAvKiBNZWRpYVNlc3Npb25JZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1lZGlhU2Vzc2lvbklkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDE0NTk4QkUyM0M4QUFCODAwMkI5Q0M4IC8qIFNhbXBsZUJ1ZmZlckRpc3BsYXlM
YXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE0NTk4QzAyM0M4QUQ3
ODAwMkI5Q0M4IC8qIExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03Njk3LDkgKzc3MTQsNiBAQAogCQk0MTgxQzVD
QzI1NTU4MzY4MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVG
cmFtZS5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzVDRTI1NTU4OTU1MDBBRUIwRkYg
LyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDsgcGF0aCA9
IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM1Q0YyNTU1ODk1NjAwQUVCMEZGIC8qIExpYldlYlJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGli
V2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE4MUM1
RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxODFDNUQ1MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2Nr
UlRDUnRwVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tS
VENSdHBUcmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE4MUM2MzYy
NTVBRTI2MTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tSVENS
dHBUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzYzRjI1
NUI0QzI1MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJDb2NvYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM2NDEyNTVCNEMyNjAw
QUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZGIC8qIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzAz
MCw2ICsxNzA0NCwxNCBAQAogCQkJCTA3MjIxQjZFMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENEVE1G
VG9uZUNoYW5nZUV2ZW50LmlkbCAqLywKIAkJCQk0MUZDQjc1RTIxNDg2NkZGMDAzOEFEQzYgLyog
UlRDRHR4U3RhdHVzLmggKi8sCiAJCQkJNDFGQ0I3NTcyMTQ4NjVEMTAwMzhBREM2IC8qIFJUQ0R0
eFN0YXR1cy5pZGwgKi8sCisJCQkJNDE0MTg5RkUyNTY0MThFMDAwMzYzNDE3IC8qIFJUQ0VuY29k
ZWRBdWRpb0ZyYW1lLmNwcCAqLywKKwkJCQk0MTQxODlGQjI1NjQxNzU3MDAzNjM0MTcgLyogUlRD
RW5jb2RlZEF1ZGlvRnJhbWUuaCAqLywKKwkJCQk0MTQxODlGOTI1NjQxNjUwMDAzNjM0MTcgLyog
UlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsICovLAorCQkJCTQxNDE4QTA1MjU2NjYwQUYwMDM2MzQx
NyAvKiBSVENFbmNvZGVkRnJhbWUuY3BwICovLAorCQkJCTQxNDE4QTA2MjU2NjYwQjAwMDM2MzQx
NyAvKiBSVENFbmNvZGVkRnJhbWUuaCAqLywKKwkJCQk0MTQxODlGRjI1NjQxOEU3MDAzNjM0MTcg
LyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwICovLAorCQkJCTQxNDE4OUZEMjU2NDE3NjYwMDM2
MzQxNyAvKiBSVENFbmNvZGVkVmlkZW9GcmFtZS5oICovLAorCQkJCTQxNDE4OUZBMjU2NDE2NTEw
MDM2MzQxNyAvKiBSVENFbmNvZGVkVmlkZW9GcmFtZS5pZGwgKi8sCiAJCQkJMDcyMjFCNzExN0NF
QzMyNzAwODQ4RTUxIC8qIFJUQ0ljZUNhbmRpZGF0ZS5jcHAgKi8sCiAJCQkJMDcyMjFCNzIxN0NF
QzMyNzAwODQ4RTUxIC8qIFJUQ0ljZUNhbmRpZGF0ZS5oICovLAogCQkJCTA3MjIxQjczMTdDRUMz
MjcwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRhdGUuaWRsICovLApAQCAtMTcwOTAsNiArMTcxMTIs
MTUgQEAKIAkJCQk0MTNDOEIzMDI1NTJGMjdDMDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXJXaXRo
VHJhbnNmb3JtLmggKi8sCiAJCQkJNDFGQ0I3NjAyMTQ4NjcwMDAwMzhBREM2IC8qIFJUQ1J0cFJ0
eFBhcmFtZXRlcnMuaCAqLywKIAkJCQk0MUZDQjc1ODIxNDg2NUQyMDAzOEFEQzYgLyogUlRDUnRw
UnR4UGFyYW1ldGVycy5pZGwgKi8sCisJCQkJNDE0MTg5RjQyNTYyRTMyQzAwMzYzNDE3IC8qIFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAgKi8sCisJCQkJNDE0MTg5RjIyNTYyRTMyQjAwMzYzNDE3
IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oICovLAorCQkJCTQxNDE4OUYwMjU2MkRGNTUwMDM2
MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsICovLAorCQkJCTQxNDE4OUYzMjU2MkUz
MkMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgKi8sCisJCQkJNDE0MTg5
RjUyNTYyRTMyRDAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmggKi8sCisJCQkJ
NDE0MTg5RjEyNTYyREY1NjAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbCAq
LywKKwkJCQk0MTQxODlGNjI1NjJFNjdBMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXJDb25zdHJ1Y3Rvci5oICovLAorCQkJCTQxNDE4OUY3MjU2MkU2N0EwMDM2MzQxNyAvKiBSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbCAqLywKKwkJCQk0MTQxODlFRjI1NjJE
RjBDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsICovLAogCQkJ
CTQxM0M4QjI2MjU1MkVFQTkwMEU2NTA1NSAvKiBSVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCAq
LywKIAkJCQk1RTJDNDM1OTFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmNwcCAqLywK
IAkJCQk1RTJDNDM1QTFCQ0VFMzBEMDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmggKi8sCkBAIC0x
NzExMyw3ICsxNzE0NCw2IEBACiAJCQkJMzE2RENCMTcxRTc4QzMzMDAwMUI1Rjg3IC8qIFJUQ1J0
cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbCAqLywKIAkJCQk0MTgxQzVDNjI1NTU3MzUxMDBBRUIw
RkYgLyogUlRDUnRwVHJhbnNmb3JtLmNwcCAqLywKIAkJCQk0MTNDOEIyRjI1NTJGMjdCMDBFNjUw
NTUgLyogUlRDUnRwVHJhbnNmb3JtLmggKi8sCi0JCQkJNDEzQzhCMjkyNTUyRjAxMzAwRTY1MDU1
IC8qIFJUQ1J0cFRyYW5zZm9ybS5pZGwgKi8sCiAJCQkJNDE4MUM1Q0EyNTU1ODJFMzAwQUVCMEZG
IC8qIFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oICovLAogCQkJCTQxODFDNUM4MjU1NTczREYw
MEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggKi8sCiAJCQkJNDEwRjU2NTgyNEZD
Rjg1NDAwQTJFNTBDIC8qIFJUQ1NkcFR5cGUuaWRsICovLApAQCAtMTkyNjgsOSArMTkyOTgsNiBA
QAogCQkJCUExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICov
LAogCQkJCUExNDA2MTg5MUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRlckNsaWVu
dC5jcHAgKi8sCiAJCQkJQTE0MDYxOEExRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9h
ZGVyQ2xpZW50LmggKi8sCi0JCQkJNDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENS
dHBUcmFuc2Zvcm0uY3BwICovLAotCQkJCTQxODFDNUQ1MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2Nr
UlRDUnRwVHJhbnNmb3JtLmggKi8sCi0JCQkJNDE4MUM2MzYyNTVBRTI2MTAwQUVCMEZGIC8qIE1v
Y2tSVENSdHBUcmFuc2Zvcm0uaWRsICovLAogCQkJCTU3MTU2MTA4MjM0QzFCMzEwMDhGQzdBQiAv
KiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJNTcxNTYxMEQy
MzRDNzQ4MTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRs
ICovLAogCQkJCTQxN0YwRDgwMUZGRUUxNEYwMDhFRjMwMyAvKiBTZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmNwcCAqLywKQEAgLTE5Mzg3LDYgKzE5NDE0LDggQEAKIAkJCQk0MTc2NjczMDI0REMwOEVB
MDA4QkZFMjggLyogV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmlkbCAqLywKIAkJCQk0MTc2
NjczMjI0REMwOEVCMDA4QkZFMjggLyogV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmpzICov
LAogCQkJCTk5MDhCMEYxMUJDQUNGOTEwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFs
cy5qcyAqLywKKwkJCQk0MTQxOEEwMjI1NjQzNTk4MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1T
aW5rLmggKi8sCisJCQkJNDE0MThBMDAyNTY0MzU5NzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFt
U2luay5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHN0cmVhbXM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjY4MTksNiArMjY4NDgsOCBAQAogCQkJCTBGMDk5RDA3MTdCOTY4QTEw
MEZGODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLywKIAkJCQk0NjM1MjFB
QzIwODEwOTBFMDBDMjg5MjIgLyogV2luZG93UHJveHkuY3BwICovLAogCQkJCTQ2MzUyMUFBMjA4
MTA5MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oICovLAorCQkJCTQxNDE4QTAzMjU2NDNFMTIw
MDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbS5jcHAgKi8sCisJCQkJNDE0MThBMDQyNTY0M0UxMzAw
MzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMzNDgxLDcgKzMzNTEyLDYgQEAKIAkJCQk0QTBG
RkE5RTFBQUY1RTdFMDA2MjgwM0IgLyogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3RUU3NkVDMUJFOTZEQjAwMEY4OTEzMyAvKiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFRTc2RUYxQkVBNjE5ODAwRjg5
MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQk0
MTgxQzVENjI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyog
TW9ja1RyYWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcxNTYxMEMyMzRDMUNBMTAwOEZDN0FC
IC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLApA
QCAtMzU1NzEsNyArMzU2MDEsNiBAQAogCQkJCUExMDRFQzVEMjIwQTNFNEIwMENCRjY3QSAvKiBK
U01vY2tQYXltZW50Q29udGFjdEZpZWxkcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ2RDMx
QTFGOTlCQ0Y4MDBEMjkxOTYgLyogSlNNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExQkI4NUI4MjE1OUIzQTQwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE4MUM2MzkyNTVBRTkwRjAwQUVCMEZGIC8qIEpT
TW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NzE1NjExNDIzNEM3
RkQ2MDA4RkM3QUIgLyogSlNNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQyN0RBNzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJGNTEyMUMxNjk2NDk2QzAw
NTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzU1ODcs
NyArMzU2MTYsNiBAQAogCQkJCTJEOTdGMDQ3MTlERDQxM0MwMDFFRTlDMyAvKiBNb2NrUGFnZU92
ZXJsYXlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFBRkVERTcxRjhCRkY2RDAwODcw
MTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE0
MDYxOEIxRTJFQ0EwQTAwMzJCMzRFIC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTQxODFDNUQ3MjU1NUM0OUEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJh
bnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBNUYzQjhGMTZDQzRCMzkwMDQ1NUVCMCAv
KiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTdGMEQ4MjFGRkVFOTc5MDA4RUYzMDMgLyogU2VydmljZVdvcmtlckludGVybmFscy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MUQ0MUM2NzIyNTY4NzRGMDA2OTc5NDIgLyogU2VydmljZVdvcmtl
ckludGVybmFscy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcApp
bmRleCAxZTE2OGI3ZGRhYmY0MGU4OTFmNmRkNTdiYzAzMzAwYTlmMGVjODNlLi4wODliMmIwM2Q2
NWQ3ZmQ0YzM3ZjU1YmNkMWEzNGNlMTNkNDliOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
LmNwcApAQCAtODksNiArODksMjIgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyOjplcnJvcihjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKICAgICBpbnZva2VSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24oZ2xvYmFsT2JqZWN0KCksIHByaXZhdGVO
YW1lLCBhcmd1bWVudHMpOwogfQogCitib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXI6OmVucXVldWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRv
JiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAg
IGFyZ3VtZW50cy5hcHBlbmQoJmpzQ29udHJvbGxlcigpKTsKKyAgICBhcmd1bWVudHMuYXBwZW5k
KHZhbHVlKTsKKworICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBw
cml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5yZWFkYWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zKCkucmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckVucXVl
dWVQcml2YXRlTmFtZSgpOworCisgICAgcmV0dXJuIGludm9rZVJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXJGdW5jdGlvbihnbG9iYWxPYmplY3QoKSwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50
cyk7Cit9CisKIGJvb2wgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZShS
ZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIpIHsK
QEAgLTEwOSwxNCArMTI1LDcgQEAgYm9vbCBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVy
OjplbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoJmpzQ29udHJvbGxlcigpKTsKLSAgICBhcmd1bWVu
dHMuYXBwZW5kKHZhbHVlKTsKLQotICAgIGF1dG8qIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KGxleGljYWxHbG9iYWxPYmplY3Qudm0oKS5jbGllbnREYXRhKTsKLSAg
ICBhdXRvJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5yZWFk
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkucmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlckVucXVldWVQcml2YXRlTmFtZSgpOwotCi0gICAgcmV0dXJuIGludm9rZVJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXJGdW5jdGlvbihnbG9iYWxPYmplY3QoKSwgcHJpdmF0ZU5hbWUs
IGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIGVucXVldWUodmFsdWUpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKaW5kZXggNmQxMjM0MzQyNDVjNGFm
NzYwOGIwZDhjMGZmMTliZWEzOTkxNjlkZC4uODg0YzBhOWFjNzczYzkzNTNhMzRkMGQ3NmQ4MDI4
MzBiY2JhMTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaApAQCAtNDQsNiArNDQsNyBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcihKU1Jl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIDogbV9qc0NvbnRyb2xs
ZXIoY29udHJvbGxlcikgeyB9CiAKICAgICBib29sIGVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlC
dWZmZXI+JiYpOworICAgIGJvb2wgZW5xdWV1ZShKU0M6OkpTVmFsdWUpOwogICAgIHZvaWQgZXJy
b3IoY29uc3QgRXhjZXB0aW9uJik7CiAgICAgdm9pZCBjbG9zZSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggMTRkNmRmNDcy
MTgyMWNlNTkxMmYxNThlYzQxMDAzMjlmMzZiZTAzMC4uMGY3NDdjZGYxZWJkZGQ2OWQ0M2Q4MWFj
OTJjNDc0NTZiN2EzNDdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaApAQCAtMjIwLDYgKzIyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSBcCiAgICAgbWFjcm8oUlRD
UnRwUmVjZWl2ZXIpIFwKICAgICBtYWNybyhSVENSdHBTRnJhbWVUcmFuc2Zvcm0pIFwKKyAgICBt
YWNybyhSVENSdHBTY3JpcHRUcmFuc2Zvcm0pIFwKICAgICBtYWNybyhSVENSdHBTZW5kZXIpIFwK
ICAgICBtYWNybyhSVENSdHBUcmFuc2NlaXZlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zZm9y
bSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJl
YW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYyOTY5YmRlMTVmMzk3NjhhZDM0NmU3N2U4Y2NkNTM2MGI0ZjQ3NWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5j
cHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
Q0FOT04gSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXcml0YWJsZVN0cmVhbS5o
IgorCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgorI2luY2x1ZGUgIkpTV3JpdGFibGVT
dHJlYW1TaW5rLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0V4Y2VwdGlvbk9yPFJlZjxX
cml0YWJsZVN0cmVhbT4+IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmUHRyPFdyaXRhYmxlU3RyZWFtU2luaz4mJiBzaW5r
KQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvJiBjbGllbnREYXRhID0g
KnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxH
bG9iYWxPYmplY3QpOworCisgICAgYXV0byogY29uc3RydWN0b3IgPSBKU0M6OmFzT2JqZWN0KGds
b2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIGNsaWVudERhdGEuYnVpbHRpbk5h
bWVzKCkuV3JpdGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpKSk7CisKKyAgICBhdXRvIGNvbnN0cnVj
dERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1Y3Rvcik7CisgICAgQVNTRVJUKGNv
bnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSk7CisKKyAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHNpbmsgPyB0b0pTTmV3bHlDcmVh
dGVkKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzaW5rLnJlbGVhc2VOb25O
dWxsKCkpIDogSlNDOjpqc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZs
b3dlZCgpKTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOworICAgIEFT
U0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFvYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CisKKyAg
ICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgKmpzQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4o
b2JqZWN0KSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dyaXRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0
cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM1ZGI4MDU4OWMwMmYwNmYxZDg0NDQ1MTliMzYzYzBkYWVlZmI0
YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xcml0YWJs
ZVN0cmVhbS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCisj
aW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVh
bS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdyaXRhYmxlU3RyZWFtU2luazsK
KworY2xhc3MgV3JpdGFibGVTdHJlYW0gZmluYWwgOiBwdWJsaWMgRE9NR3VhcmRlZDxKU1dyaXRh
YmxlU3RyZWFtPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXcml0YWJsZVN0cmVhbT4gY3Jl
YXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTV3JpdGFibGVTdHJlYW0mIGpz
U3RyZWFtKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdyaXRhYmxlU3RyZWFtKGdsb2JhbE9iamVj
dCwganNTdHJlYW0pKTsgfQorCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0
cmVhbT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgUmVmUHRyPFdyaXRhYmxlU3RyZWFt
U2luaz4mJik7CisgICAgSlNXcml0YWJsZVN0cmVhbSogd3JpdGFibGVTdHJlYW0oKSBjb25zdCB7
IHJldHVybiBndWFyZGVkKCk7IH0KKworcHJpdmF0ZToKKyAgICBXcml0YWJsZVN0cmVhbShKU0RP
TUdsb2JhbE9iamVjdCYsIEpTV3JpdGFibGVTdHJlYW0mKTsKK307CisKK3N0cnVjdCBKU1dyaXRh
YmxlU3RyZWFtV3JhcHBlckNvbnZlcnRlciB7CisgICAgc3RhdGljIFJlZlB0cjxXcml0YWJsZVN0
cmVhbT4gdG9XcmFwcGVkKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHZtLCAmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAgICAgYXV0byogV3JpdGFibGVTdHJlYW0gPSBKU0M6OmpzRHluYW1p
Y0Nhc3Q8SlNXcml0YWJsZVN0cmVhbSo+KHZtLCB2YWx1ZSk7CisgICAgICAgIGlmICghV3JpdGFi
bGVTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4g
V3JpdGFibGVTdHJlYW06OmNyZWF0ZSgqZ2xvYmFsT2JqZWN0LCAqV3JpdGFibGVTdHJlYW0pOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0
czxXcml0YWJsZVN0cmVhbT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTV3JpdGFibGVT
dHJlYW1XcmFwcGVyQ29udmVydGVyOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBS
ZWZQdHI8V3JpdGFibGVTdHJlYW0+OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc1N0
YXRlID0gdHJ1ZTsKK307CisKK2lubGluZSBXcml0YWJsZVN0cmVhbTo6V3JpdGFibGVTdHJlYW0o
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNXcml0YWJsZVN0cmVhbSYgV3JpdGFi
bGVTdHJlYW0pCisgICAgOiBET01HdWFyZGVkPEpTV3JpdGFibGVTdHJlYW0+KGdsb2JhbE9iamVj
dCwgV3JpdGFibGVTdHJlYW0pCit7Cit9CisKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIFdyaXRhYmxlU3RyZWFtKiBz
dHJlYW0pCit7CisgICAgcmV0dXJuIHN0cmVhbSA/IHN0cmVhbS0+d3JpdGFibGVTdHJlYW0oKSA6
IEpTQzo6anNVbmRlZmluZWQoKTsKK30KKworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxXcml0
YWJsZVN0cmVhbT4mJiBzdHJlYW0pCit7CisgICAgcmV0dXJuIHN0cmVhbS0+d3JpdGFibGVTdHJl
YW0oKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5k
ZXggYTlkYTk0NTI4ZjFiNDBmY2JkZTg5ZmEwYzU0ZTJlZGYxOTg5ODhiMi4uMWM5MjlkODBkZTVl
YmZlZTA0MGZiNTgwNzhjZGM3MWU3NmMxOGU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluCkBAIC0zOCw2ICszOCw3IEBAIFJlbW90ZVBsYXliYWNrIGNvbmRpdGlv
bmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVAogUlRDRGF0YUNoYW5uZWwgY29uZGl0aW9uYWw9
V0VCX1JUQwogUlRDRFRNRlNlbmRlciBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENQZWVyQ29ubmVj
dGlvbiBjb25kaXRpb25hbD1XRUJfUlRDCitSVENSdHBTY3JpcHRUcmFuc2Zvcm0gY29uZGl0aW9u
YWw9V0VCX1JUQwogU2VydmljZVdvcmtlciBjb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUgogU2Vy
dmljZVdvcmtlckNvbnRhaW5lciBjb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUgogU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlIGNvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTNkZmU3OTUxNmMzNTlhZDg0MDc3YmY1ZmU4NTJmYjkx
ZjdlM2VkMC4uYWQ2MzdmZjQ0Zjk2ZjBiNTRlMWYxNmQ4M2QxOThkNmEzNDMwYTUxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTM4LDcgKzEzOCw2IEBACiAjaW5jbHVk
ZSAiTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTW9ja1BhZ2VPdmVy
bGF5LmgiCiAjaW5jbHVkZSAiTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmgiCi0jaW5jbHVkZSAiTW9j
a1JUQ1J0cFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIk5hdmlnYXRvckJlYWNvbi5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvck1lZGlhRGV2aWNlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24uaCIKQEAgLTE1NzcsMTEgKzE1NzYsNiBAQCB2b2lkIEludGVybmFsczo6c2V0V2ViUlRD
VlA5VlRCU3VwcG9ydChib29sIHZhbHVlKQogI2VuZGlmCiB9CiAKLVJlZjxNb2NrUlRDUnRwVHJh
bnNmb3JtPiBJbnRlcm5hbHM6OmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKQotewotICAgIHJl
dHVybiBNb2NrUlRDUnRwVHJhbnNmb3JtOjpjcmVhdGUoKTsKLX0KLQogdWludDY0X3QgSW50ZXJu
YWxzOjpzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
KQogewogICAgIHJldHVybiB0cmFuc2Zvcm0uY291bnRlckZvclRlc3RpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI4MzdjM2IzYTA0ZDM2MDMwNTdkZTI3NTQwMjNhZTcy
N2ZlZWE5MmYuLjE4YzQ1ZWJjMzYzMGU5NGE5N2IwMmQ2MzQ0N2RhZjRkMGVkMjdkM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSEVWQ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklETFR5
cGVzLmgiCi0jaW5jbHVkZSAiTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIk9yaWVu
dGF0aW9uTm90aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlQ29uc29sZUNsaWVudC5oIgogI2luY2x1
ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKQEAgLTYxMCw3ICs2MDksNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRXZWJSVENIMjY1U3VwcG9ydChib29sKTsKICAgICB2b2lkIHNldFdlYlJUQ1ZQ
OVN1cHBvcnQoYm9vbCk7CiAgICAgdm9pZCBzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2wpOwot
ICAgIFJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBjcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7
CiAgICAgdWludDY0X3Qgc2ZyYW1lQ291bnRlcihjb25zdCBSVENSdHBTRnJhbWVUcmFuc2Zvcm0m
KTsKICAgICB2b2lkIHNldEVuYWJsZVdlYlJUQ0VuY3J5cHRpb24oYm9vbCk7CiAgICAgdm9pZCBz
ZXRVc2VEVExTMTAoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXgg
YWUzYTYxZmNhMDNkYzRiNjY3NDczZDAwNWY4MjhlMTVlMGI5OTgzYS4uNTQzYTk1NDBlYzRjNjM0
YWNiYTNlZWM2NjE4ZjAzNjYxNjYxY2M0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbApAQCAtODAyLDcgKzgwMiw2IEBAIGVudW0gVHJlZVR5cGUgewogICAgIFtDb25kaXRpb25h
bD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDSDI2NVN1cHBvcnQoYm9vbGVhbiBhbGxvd2Vk
KTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5kZWZpbmVkIHNldFdlYlJUQ1ZQOVN1cHBv
cnQoYm9vbGVhbiBhbGxvd2VkKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5kZWZpbmVk
IHNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbGVhbiBhbGxvd2VkKTsKLSAgICBbQ29uZGl0aW9u
YWw9V0VCX1JUQ10gTW9ja1JUQ1J0cFRyYW5zZm9ybSBjcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3Jt
KCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuc2lnbmVkIGxvbmcgbG9uZyBzZnJhbWVD
b3VudGVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB0cmFuc2Zvcm0pOwogCiAgICAgW0NvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTV0gdW5kZWZpbmVkIHNldE1vY2tBdWRpb1RyYWNrQ2hhbm5lbE51bWJl
cihNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCB1bnNpZ25lZCBzaG9ydCBjb3VudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmQzYTE2YTg0ZThlZDlhMjdkODBjMTRhYjhmY2Y4NWIzMDJmYmQ2
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTW9ja1JUQ1J0cFRyYW5zZm9ybS5o
IgotCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0KLSNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPE1vY2tSVENSdHBUcmFuc2Zvcm1lciwgV1RGOjpEZXN0cnVjdGlvblRocmVhZDo6TWFpbj4g
ewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybWVyPiBjcmVhdGUo
UmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2VuZCkKLSAgICB7Ci0gICAgICAgIGF1
dG8gdHJhbnNmb3JtZXIgPSBhZG9wdFJlZigqbmV3IE1vY2tSVENSdHBUcmFuc2Zvcm1lcihXVEZN
b3ZlKGJhY2tlbmQpKSk7Ci0gICAgICAgIHRyYW5zZm9ybWVyLT5tX2JhY2tlbmQtPnNldFRyYW5z
Zm9ybWFibGVGcmFtZUNhbGxiYWNrKFt0cmFuc2Zvcm1lcl0oYXV0byYmIGZyYW1lKSB7Ci0gICAg
ICAgICAgICB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKFdURk1vdmUoZnJhbWUpKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybiB0cmFuc2Zvcm1lcjsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFy
KCkKLSAgICB7Ci0gICAgICAgIG1fYmFja2VuZC0+Y2xlYXJUcmFuc2Zvcm1hYmxlRnJhbWVDYWxs
YmFjaygpOwotICAgICAgICBtX2JhY2tlbmQgPSBudWxscHRyOwotICAgIH0KLQotICAgIHZvaWQg
dHJhbnNmb3JtKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSYmIGZyYW1lKQotICAgIHsKLSAgICAg
ICAgbV9pc1Byb2Nlc3NpbmcgPSB0cnVlOwotCi0gICAgICAgIGF1dG8gZGF0YSA9IGZyYW1lLmRh
dGEoKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRyYW5zZm9ybWVkRGF0YTsKLSAgICAgICAg
c2l6ZV90IHN0YXJ0ID0gbV9pc0F1ZGlvID8gMCA6IDEwMDsKLSAgICAgICAgZm9yIChzaXplX3Qg
Y3B0ciA9IDA7IGNwdHIgPCBzdGFydDsgKytjcHRyKQotICAgICAgICAgICAgdHJhbnNmb3JtZWRE
YXRhLmFwcGVuZChkYXRhLmRhdGFbY3B0cl0pOwotICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0g
c3RhcnQ7IGNwdHIgPCBkYXRhLnNpemU7ICsrY3B0cikKLSAgICAgICAgICAgIHRyYW5zZm9ybWVk
RGF0YS5hcHBlbmQoMjU2IC0gZGF0YS5kYXRhW2NwdHJdKTsKLSAgICAgICAgZnJhbWUuc2V0RGF0
YSh7IHRyYW5zZm9ybWVkRGF0YS5kYXRhKCksIGRhdGEuc2l6ZSB9KTsKLQotICAgICAgICBtX2Jh
Y2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1vdmUoZnJhbWUpKTsKLSAgICB9Ci0K
LSAgICBib29sIGlzUHJvY2Vzc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm9jZXNzaW5nOyB9
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKFJlZjxSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kPiYmIGJhY2tlbmQpCi0gICAgICAgIDogbV9iYWNrZW5kKFdURk1v
dmUoYmFja2VuZCkpCi0gICAgICAgICwgbV9pc1NlbmRlcihtX2JhY2tlbmQtPnNpZGUoKSA9PSBS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpTaWRlOjpTZW5kZXIpCi0gICAgICAgICwgbV9pc0F1ZGlv
KG1fYmFja2VuZC0+bWVkaWFUeXBlKCkgPT0gUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6TWVkaWFU
eXBlOjpBdWRpbykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQ+IG1fYmFja2VuZDsKLSAgICBib29sIG1faXNTZW5kZXI7Ci0gICAgYm9vbCBtX2lzQXVk
aW87Ci0gICAgYm9vbCBtX2lzUHJvY2Vzc2luZyB7IGZhbHNlIH07Ci19OwotCi1Nb2NrUlRDUnRw
VHJhbnNmb3JtOjpNb2NrUlRDUnRwVHJhbnNmb3JtKCkKLXsKLX0KLQotTW9ja1JUQ1J0cFRyYW5z
Zm9ybTo6fk1vY2tSVENSdHBUcmFuc2Zvcm0oKQotewotfQotCi1ib29sIE1vY2tSVENSdHBUcmFu
c2Zvcm06OmlzUHJvY2Vzc2luZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHJhbnNmb3JtZXIg
PyBtX3RyYW5zZm9ybWVyLT5pc1Byb2Nlc3NpbmcoKSA6IGZhbHNlOwotfQotCi12b2lkIE1vY2tS
VENSdHBUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYgYmFja2VuZCkKLXsKLSAgICBtX3RyYW5zZm9ybWVyID0gTW9ja1JUQ1J0cFRy
YW5zZm9ybWVyOjpjcmVhdGUoYmFja2VuZCk7Ci19Ci0KLXZvaWQgTW9ja1JUQ1J0cFRyYW5zZm9y
bTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFj
a2VuZCkKLXsKLSAgICBtX3RyYW5zZm9ybWVyID0gTW9ja1JUQ1J0cFRyYW5zZm9ybWVyOjpjcmVh
dGUoYmFja2VuZCk7Ci19Ci0KLXZvaWQgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6d2lsbENsZWFyQmFj
a2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikKLXsKLSAgICBtX3RyYW5zZm9ybWVyLT5jbGVh
cigpOwotICAgIG1fdHJhbnNmb3JtZXIgPSBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRkOTk0ZGZmNzE3NDMyMzUzNTFmOGYwYTMzOTZmYzU5YTFjYWQyOTAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrUlRDUnRwVHJhbnNmb3JtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpZiBFTkFCTEUoV0VCX1JUQykKLQotI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1vY2tSVENSdHBUcmFuc2Zvcm1lcjsKLQotY2xh
c3MgTW9ja1JUQ1J0cFRyYW5zZm9ybSBmaW5hbCA6IHB1YmxpYyBSVENSdHBUcmFuc2Zvcm0gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8TW9ja1JUQ1J0cFRyYW5zZm9ybT4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrUlRDUnRwVHJhbnNmb3JtKCkpOyB9Ci0gICAgfk1vY2tS
VENSdHBUcmFuc2Zvcm0oKTsKLQotICAgIGJvb2wgaXNQcm9jZXNzaW5nKCkgY29uc3Q7Ci0KLXBy
aXZhdGU6Ci0gICAgTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgdm9pZCBpbml0aWFsaXpl
QmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsKLSAgICB2
b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBm
aW5hbDsKLSAgICB2b2lkIHdpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYp
IGZpbmFsOwotCi0gICAgUmVmUHRyPE1vY2tSVENSdHBUcmFuc2Zvcm1lcj4gbV90cmFuc2Zvcm1l
cjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNm
b3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNjMxODc2MDU5NGI2OWYyN2EwMWQ2NWUw
ODg5ODA1ZjMzNzQxYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbAorKysg
L2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9V0VCX1JUQywKLSAgICBKU0dlbmVy
YXRlVG9KU09iamVjdCwKLSAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgTGVnYWN5
Tm9JbnRlcmZhY2VPYmplY3QsCi1dIGludGVyZmFjZSBNb2NrUlRDUnRwVHJhbnNmb3JtIDogUlRD
UnRwVHJhbnNmb3JtIHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1Byb2Nlc3Np
bmc7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAppbmRleCBlZjFkOGJjYWRhMjViYzI1ZjE1MTdlNzg4OWUyNDFjM2U0
OWUzZGFlLi4xNTk5Y2NjOTNlNDYyZDIwZTY5YjNkOTE0YTY5MDUwNzNhN2FiNzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcApAQCAtMzUsNyArMzUsMTAgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
LmgiCisjaW5jbHVkZSAiSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIuaCIKICNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCkBAIC0x
MTIsNCArMTE1LDcyIEBAIHZvaWQgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNhbmNlbEFu
aW1hdGlvbkZyYW1lKENhbGxiYWNrSWQgY2FsbGJhY2tJZCkKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKFdFQl9SVEMpCitFeGNlcHRpb25Pcjx2b2lkPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6cmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJiBuYW1lLCBSZWY8SlNS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yPiYmIHRyYW5zZm9ybWVyQ29uc3RydWN0
b3IpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIk5h
bWUgY2Fubm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MgfTsKKworICAgIGlmIChtX3J0Y1J0cFRy
YW5zZm9ybWVyQ29uc3RydWN0b3JNYXAuY29udGFpbnMobmFtZSkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIkEgdHJhbnNmb3JtZXIgd2FzIGFscmVhZHkg
cmVnaXN0ZXJlZCB3aXRoIHRoaXMgbmFtZSJfcyB9OworCisgICAgSlNDOjpKU09iamVjdCoganND
b25zdHJ1Y3RvciA9IHRyYW5zZm9ybWVyQ29uc3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5jYWxs
YmFjaygpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9i
amVjdCgpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghanNDb25zdHJ1Y3Rvci0+
aXNDb25zdHJ1Y3Rvcih2bSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3Is
ICJDbGFzcyBkZWZpbml0aXRpb24gcGFzc2VkIHRvIHJlZ2lzdGVyUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIoKSBpcyBub3QgYSBjb25zdHJ1Y3RvciJfcyB9OworCisgICAgYXV0byBwcm90b3R5cGUg
PSBqc0NvbnN0cnVjdG9yLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJv
ciB9KTsKKworICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IsICJDbGFzcyBkZWZpbml0aXRpb24gcGFzc2VkIHRvIHJlZ2lz
dGVyUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKSBoYXMgaW52YWxpZCBwcm90b3R5cGUiX3MgfTsK
KworICAgIG1fcnRjUnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcC5hZGQobmFtZSwgV1RGTW92
ZSh0cmFuc2Zvcm1lckNvbnN0cnVjdG9yKSk7CisKKyAgICB0aHJlYWQoKS53b3JrZXJPYmplY3RQ
cm94eSgpLnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoW25hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgp
XShhdXRvJiB3b3JrZXIpIG11dGFibGUgeworICAgICAgICB3b3JrZXIuYWRkUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXIoV1RGTW92ZShuYW1lKSk7CisgICAgfSk7CisKKyAgICByZXR1cm4geyB9Owor
fQorCitSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+IERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJiBuYW1lLCBUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQpCit7CisgICAgYXV0byBjb25zdHJ1Y3RvciA9IG1fcnRj
UnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcC5nZXQobmFtZSk7CisgICAgQVNTRVJUKGNvbnN0
cnVjdG9yKTsKKyAgICBpZiAoIWNvbnN0cnVjdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCkt
PmNhbGxiYWNrKCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmNhbGxi
YWNrRGF0YSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayB7IGdsb2JhbE9iamVjdCB9OworCisgICAgbV9wZW5kaW5nUlRD
VHJhbnNmb21lck1lc3NhZ2VQb3J0ID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKCp0aGlzLCBXVEZN
b3ZlKHBvcnQpKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICBh
dXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdChnbG9iYWxPYmplY3QsIGpzQ29uc3RydWN0b3Is
IGFyZ3MsICJGYWlsZWQgdG8gY29uc3RydWN0IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIik7Cisg
ICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9iamVjdCk7CisKKyAgICBpZiAoc2Nv
cGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOworCisgICAgYXV0byYganNUcmFuc2Zvcm1lciA9ICpKU0M6OmpzQ2FzdDxKU1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyKj4ob2JqZWN0KTsKKyAgICBhdXRvJiB0cmFuc2Zvcm1lciA9
IGpzVHJhbnNmb3JtZXIud3JhcHBlZCgpOworICAgIHRyYW5zZm9ybWVyLnNldENhbGxiYWNrKG1h
a2VVbmlxdWU8SlNDYWxsYmFja0RhdGFTdHJvbmc+KCZqc1RyYW5zZm9ybWVyLCBnbG9iYWxPYmpl
Y3QpKTsKKworICAgIHJldHVybiAmdHJhbnNmb3JtZXI7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggY2FhZDRjZWJhNThiYTgzMzJkNWU5YTYwM2RlMTI2
MjYzZGFlYTc1Ny4uMDE4ZjRhYTA5NTU0ZjI3ODcxYWU0OWI4YTg5Y2EyZjQ1MGQ0ZDRmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuaApAQCAtNDQsNyArNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKIGNsYXNzIERlZGljYXRlZFdvcmtlclRo
cmVhZDsKK2NsYXNzIEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3RvcjsKIGNsYXNz
IE1lc3NhZ2VQb3J0OworY2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI7CiBjbGFzcyBSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjazsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IApAQCAtNTQsNiArNTYsOCBAQCBjbGFzcyBXb3JrZXJBbmltYXRpb25Db250cm9sbGVyOwogdXNp
bmcgQ2FsbGJhY2tJZCA9IGludDsKICNlbmRpZgogCit1c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0ID0gc3RkOjpwYWlyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyPjsKKwogY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUgZmluYWwgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURUQoRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUpOwogcHVibGljOgpAQCAtNzEsNiAr
NzUsMTIgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9uRnJhbWUoQ2FsbGJhY2tJ
ZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIFJlZlB0cjxSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lcj4gY3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoU3RyaW5nJiYsIFRy
YW5zZmVycmVkTWVzc2FnZVBvcnQpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVyUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIoU3RyaW5nJiYsIFJlZjxKU1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyQ29uc3RydWN0b3I+JiYpOworICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gdGFrZVBlbmRpbmdS
VENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQoKSB7IHJldHVybiBXVEZNb3ZlKG1fcGVuZGluZ1JUQ1Ry
YW5zZm9tZXJNZXNzYWdlUG9ydCk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHVzaW5nIEJh
c2UgPSBXb3JrZXJHbG9iYWxTY29wZTsKIApAQCAtODUsNiArOTUsMTAgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKICAgICBSZWZQdHI8V29ya2VyQW5pbWF0aW9uQ29u
dHJvbGxlcj4gbV93b3JrZXJBbmltYXRpb25Db250cm9sbGVyOwogI2VuZGlmCisjaWYgRU5BQkxF
KFdFQl9SVEMpCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxKU1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyQ29uc3RydWN0b3I+PiBtX3J0Y1J0cFRyYW5zZm9ybWVyQ29uc3RydWN0b3JNYXA7Cisg
ICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBtX3BlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQ7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwKaW5kZXggMmQw
Y2U4Mjk1MWZiZTk5N2E4YmI1OGE3ZDZiOGY4M2RmNjE1Njc3MS4uOGNlMzg0MmMyODM1ZjE3ODIz
MjgxYzU0YzM2NzAyNTdmZjUxMzRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwKQEAgLTQ4LDMgKzQ4LDUgQEAKIH07
CiAKIFtDb25kaXRpb25hbD1PRkZTQ1JFRU5fQ0FOVkFTLCBFbmFibGVkQXRSdW50aW1lPU9mZnNj
cmVlbkNhbnZhc10gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgaW5jbHVkZXMgQW5pbWF0aW9u
RnJhbWVQcm92aWRlcjsKKy8vIEZJWE1FOiBFbmFibGUgdGhpcyBiYXNlZCBvbiBXZWJSVENJbnNl
cnRhYmxlU3RyZWFtcyBzZXR0aW5nLgorW0NvbmRpdGlvbmFsPVdFQl9SVENdIERlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlIGluY2x1ZGVzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDgwODMzNWQwMjc0MWZjOTgzOTVkOWNkMjc5
ZWJlNTljMjMzMDBlMTQuLjYyZjkxN2EzNjc4MTlkZWMzY2Q0MTBkOTc2Njk1Y2VlNjJmNmQ0Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKQEAg
LTIzMCw0ICsyMzEsMjggQEAgdm9pZCBXb3JrZXI6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50
KQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShXRUJfUlRDKQordm9pZCBXb3JrZXI6OmFkZFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyKFN0cmluZyYmIG5hbWUpCit7CisgICAgbV90cmFuc2Zvcm1lcnMu
YWRkKFdURk1vdmUobmFtZSkpOworfQorCit2b2lkIFdvcmtlcjo6Y3JlYXRlUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBv
cnQsIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIGlmICghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHRQcm94
eS5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW25hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgp
LCBwb3J0LCB0cmFuc2Zvcm0gPSBtYWtlUmVmKHRyYW5zZm9ybSldKGF1dG8mIGNvbnRleHQpIG11
dGFibGUgeworICAgICAgICB0cmFuc2Zvcm0tPnNldFRyYW5zZm9ybWVyKGRvd25jYXN0PERlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5jcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lcihXVEZNb3ZlKG5hbWUpLCBwb3J0KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ry
YW5zZm9ybSA9IFdURk1vdmUodHJhbnNmb3JtKV0geyB9KTsKKyAgICB9KTsKKworfQorCit2b2lk
IFdvcmtlcjo6cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpPiYmIHRhc2spCit7CisgICAgbV9jb250ZXh0UHJveHkucG9zdFRh
c2tUb1dvcmtlckdsb2JhbFNjb3BlKFdURk1vdmUodGFzaykpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDY3ZjRiMmI1OGFi
NWFkZWZmNmZjZDFjZDk1OWQ0YjYzYjlmZjU5NWQuLjUzZjVlNmZmZjI3YzlmYTNlNWMwZTAxZjBm
NmM0MmM2Y2I2ZjlkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNDUsNiArNDUsOCBA
QCBjbGFzcyBKU1ZhbHVlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybTsKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiBjbGFz
cyBXb3JrZXJTY3JpcHRMb2FkZXI7CkBAIC03MCw2ICs3MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBmaW5hbDsKIAorI2lmIEVOQUJMRShXRUJfUlRDKQor
ICAgIHZvaWQgYWRkUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoU3RyaW5nJiYpOworICAgIGJvb2wg
aGFzUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoY29uc3QgU3RyaW5nJiBuYW1lKSB7IHJldHVybiBt
X3RyYW5zZm9ybWVycy5jb250YWlucyhuYW1lKTsgfQorICAgIHZvaWQgY3JlYXRlUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIoY29uc3QgU3RyaW5nJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCwgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtJik7CisgICAgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2Nv
cGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBK
U0M6OlJ1bnRpbWVGbGFncywgY29uc3QgT3B0aW9ucyYpOwogCkBAIC0xMDAsNiArMTA5LDkgQEAg
cHJpdmF0ZToKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKICAgICBEZXF1
ZTxSZWZQdHI8RXZlbnQ+PiBtX3BlbmRpbmdFdmVudHM7CiAgICAgYm9vbCBtX3dhc1Rlcm1pbmF0
ZWQgeyBmYWxzZSB9OworI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBt
X3RyYW5zZm9ybWVyczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAppbmRleCA1
NmRhMTIwN2I3Nzc5ZjJlYTdiYWU2YWI3MzZmOWQyYzk1NGY3MjQ0Li40MDAwM2MzZTAxMDk5OTYw
ZjY0Nzg2MWU3MDE2ODdkMGUzNzFkNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaApAQCAtMzMsMTEgKzMzLDEzIEBACiAKICNpbmNsdWRl
ICJNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1
bnRpbWVGbGFncy5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9N
b25vdG9uaWNUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFdvcmtlcjsKIGVudW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgOiB1aW50OF90Owog
CkBAIC00OSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0
aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgSlNDOjpSdW50aW1lRmxhZ3MpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29w
ZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggYTYxYjQxNDg2MzNiZGYy
MGQ1MmJlNTc2NGRhOWI1NTRlMTYxMGQ3ZC4uMTFmZTA2ZmM2YTM2ZDg0Y2U3YzJlYWVlZjM5ZWNm
NjE0OTQyMzU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAKQEAgLTExMCwyNCArMTEwLDM4IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBt
CiAgICAgfSk7CiB9CiAKLXZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9X
b3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCit2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KEZ1bmN0aW9uPHZv
aWQoV29ya2VyJik+JiYgZnVuY3Rpb24pCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkK
LSAgICAgICAgcmV0dXJuOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
W3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildKGF1dG8mKSBtdXRhYmxlIHsKKyAg
ICAgICAgYXV0byogd29ya2VyT2JqZWN0ID0gdGhpcy0+d29ya2VyT2JqZWN0KCk7CisgICAgICAg
IGlmICghd29ya2VyT2JqZWN0IHx8IGFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgZnVuY3Rpb24oKndvcmtlck9iamVjdCk7CisgICAgfSk7Cit9CiAKLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1l
c3NhZ2UpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7
Cit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2Nv
cGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlKQoreworICAgIHBvc3RUYXNrVG9X
b3JrZXJHbG9iYWxTY29wZShbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKGF1dG8mIHNjcmlw
dENvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihzY3JpcHRDb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8m
IGNvbnRleHQgPSBzdGF0aWNfY2FzdDxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSY+KHNjcmlw
dENvbnRleHQpOwogICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9y
dHMoc2NyaXB0Q29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAg
ICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUo
cG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOwogICAgICAgICBjb250
ZXh0LnRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2Vy
T2JqZWN0KGNvbnRleHQuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0pOworfQorCit2b2lk
IFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rp
b248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKK3sKKyAgICBpZiAobV9h
c2tlZFRvVGVybWluYXRlKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV93b3JrZXJUaHJl
YWQpIHsKLSAgICAgICAgKyttX3VuY29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dv
cmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotICAgIH0gZWxz
ZQorICAgIGlmICghbV93b3JrZXJUaHJlYWQpIHsKICAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tz
LmFwcGVuZChtYWtlVW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFdURk1vdmUo
dGFzaykpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICArK21fdW5jb25maXJtZWRNZXNz
YWdlQ291bnQ7CisgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3Zl
KHRhc2spKTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3VzcGVuZEZvckJhY2tG
b3J3YXJkQ2FjaGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJN
ZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5oCmluZGV4IDNiYjRkOWQ4MTVhMjA5MTRhZDlmMjViMzRhODdjYTkxZTFjODViYWQuLmM1
YjU3NWI5ZTYxNWIzZjNmNTk2YmZjM2RmNjgzYzg3N2NjNjJiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNP
bmxpbmUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3ksIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIEpT
Qzo6UnVudGltZUZsYWdzKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNj
b3BlKCkgZmluYWw7CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJikgZmluYWw7CisgICAgdm9pZCBwb3N0VGFza1RvV29ya2Vy
R2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpIGZp
bmFsOwogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeU5ldHdvcmtT
dGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBmaW5hbDsKQEAgLTYyLDYgKzYzLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBXb3JrZXJPYmplY3RQcm94eS4KICAgICAvLyAo
T25seSB1c2UgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQuKQog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoRnVuY3Rpb248dm9p
ZChXb3JrZXImKT4mJikgZmluYWw7CiAgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgZmluYWw7CiAgICAgdm9pZCBjb25maXJt
TWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwog
ICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAppbmRleCAy
ODAxMzE0ZTM3MmQzMGVlOWFjYmU1NGI5ODY5OWRjZWRmNzhmOWNhLi44ZTkxZWM3OTQ0ZjMyNTli
NjdkNWU0YTU1ODVkODU0NGNiY2Y3MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPYmplY3RQcm94eS5oCkBAIC0zMiwxNCArMzIsMTkgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzLmgiCiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0aW5nUHJveHkuaCIKKwog
I2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBXb3JrZXI7CisKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUg
d29ya2VyIG9iamVjdC4KIGNsYXNzIFdvcmtlck9iamVjdFByb3h5IDogcHVibGljIFdvcmtlclJl
cG9ydGluZ1Byb3h5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dv
cmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoRnVuY3Rpb248dm9pZChXb3JrZXImKT4mJikgeyB9
OwogCiAgICAgdmlydHVhbCB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5n
QWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiOTIyYzJiMDE3
MGY2ZTE1Mzc1OWM1NGQ2YjdlNzU3YWZmYzg0MjE3Li5lNzU3ZDllNzY5NzFiMTBiYzBmZWVhYTY4
MzIzNWMxZTkzMTBjN2Q3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMTEtMTkgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBS
VENSdHBTY3JpcHRUcmFuc2Zvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTE0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3JvdXRpbmVzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGNyZWF0ZUNvbm5lY3Rpb25zKToKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2NyaXB0
LXRyYW5zZm9ybS5qczogQWRkZWQuCisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNmb3JtZXIpOgor
ICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyLnByb3RvdHlwZS5zdGFydCk6CisgICAgICAg
IChNb2NrUlRDUnRwVHJhbnNmb3JtZXIucHJvdG90eXBlLnByb2Nlc3MpOgorICAgICAgICAqIGh0
dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0OiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sLgorICAgICAg
ICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiB3ZWJydGMvc2Ny
aXB0LXRyYW5zZm9ybS5qczogQWRkZWQuCisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNmb3JtZXIp
OgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyLnByb3RvdHlwZS5zdGFydCk6CisKIDIw
MjAtMTEtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFRl
eHRFbmNvZGVyU3RyZWFtRW5jb2RlciBzaG91bGQgbm90IGJlIGV4cG9zZWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnJ0Yy9yb3V0aW5lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGRiNzJmNjVkMTc2OTYxZWE3
OTdjOWRjNDgyYmQwYjUxZWY5M2IyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL3JvdXRpbmVzLmpzCkBAIC0wLDAgKzEsMjk5IEBACisvLyBUZXN0IGluc3Bp
cmVkIGZyb20gaHR0cHM6Ly93ZWJydGMuZ2l0aHViLmlvL3NhbXBsZXMvCit2YXIgbG9jYWxDb25u
ZWN0aW9uOwordmFyIHJlbW90ZUNvbm5lY3Rpb247CisKK2Z1bmN0aW9uIGNyZWF0ZUNvbm5lY3Rp
b25zKHNldHVwTG9jYWxDb25uZWN0aW9uLCBzZXR1cFJlbW90ZUNvbm5lY3Rpb24sIG9wdGlvbnMg
PSB7IH0pIHsKKyAgICBsb2NhbENvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsK
KyAgICByZW1vdGVDb25uZWN0aW9uID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgcmVt
b3RlQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4geyBpY2VDYWxsYmFjazIo
ZXZlbnQsIG9wdGlvbnMuZmlsdGVyT3V0SUNFQ2FuZGlkYXRlKSB9OworCisgICAgbG9jYWxDb25u
ZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7IGljZUNhbGxiYWNrMShldmVudCwg
b3B0aW9ucy5maWx0ZXJPdXRJQ0VDYW5kaWRhdGUpIH07CisKKyAgICBQcm9taXNlLnJlc29sdmUo
c2V0dXBMb2NhbENvbm5lY3Rpb24obG9jYWxDb25uZWN0aW9uKSkudGhlbigoKSA9PiB7CisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc2V0dXBSZW1vdGVDb25uZWN0aW9uKHJlbW90ZUNv
bm5lY3Rpb24pKTsKKyAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgbG9jYWxDb25uZWN0aW9u
LmNyZWF0ZU9mZmVyKCkudGhlbigoZGVzYykgPT4gZ290RGVzY3JpcHRpb24xKGRlc2MsIG9wdGlv
bnMpLCBvbkNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkVycm9yKTsKKyAgICB9KTsKKworICAgIHJl
dHVybiBbbG9jYWxDb25uZWN0aW9uLCByZW1vdGVDb25uZWN0aW9uXQorfQorCitmdW5jdGlvbiBj
bG9zZUNvbm5lY3Rpb25zKCkKK3sKKyAgICBsb2NhbENvbm5lY3Rpb24uY2xvc2UoKTsKKyAgICBy
ZW1vdGVDb25uZWN0aW9uLmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9uIG9uQ3JlYXRlU2Vzc2lvbkRl
c2NyaXB0aW9uRXJyb3IoZXJyb3IpCit7CisgICAgYXNzZXJ0X3VucmVhY2hlZCgpOworfQorCitm
dW5jdGlvbiBnb3REZXNjcmlwdGlvbjEoZGVzYywgb3B0aW9ucykKK3sKKyAgICBpZiAob3B0aW9u
cy5vYnNlcnZlT2ZmZXIpIHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9ucy5vYnNlcnZl
T2ZmZXIoZGVzYyk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAgICAgICBkZXNjID0gcmVz
dWx0OworICAgIH0KKworICAgIGxvY2FsQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKGRl
c2MpOworICAgIHJlbW90ZUNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzYykudGhl
bigoKSA9PiB7CisgICAgICAgIHJlbW90ZUNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKCkudGhlbigo
ZGVzYykgPT4gZ290RGVzY3JpcHRpb24yKGRlc2MsIG9wdGlvbnMpLCBvbkNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvbkVycm9yKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZ290RGVzY3JpcHRpb24y
KGRlc2MsIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMub2JzZXJ2ZUFuc3dlcikKKyAgICAg
ICAgb3B0aW9ucy5vYnNlcnZlQW5zd2VyKGRlc2MpOworCisgICAgcmVtb3RlQ29ubmVjdGlvbi5z
ZXRMb2NhbERlc2NyaXB0aW9uKGRlc2MpOworICAgIGxvY2FsQ29ubmVjdGlvbi5zZXRSZW1vdGVE
ZXNjcmlwdGlvbihkZXNjKTsKK30KKworZnVuY3Rpb24gaWNlQ2FsbGJhY2sxKGV2ZW50LCBmaWx0
ZXJPdXRJQ0VDYW5kaWRhdGUpCit7CisgICAgaWYgKGZpbHRlck91dElDRUNhbmRpZGF0ZSAmJiBm
aWx0ZXJPdXRJQ0VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRlKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVtb3RlQ29ubmVjdGlvbi5hZGRJY2VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRlKS50
aGVuKG9uQWRkSWNlQ2FuZGlkYXRlU3VjY2Vzcywgb25BZGRJY2VDYW5kaWRhdGVFcnJvcik7Cit9
CisKK2Z1bmN0aW9uIGljZUNhbGxiYWNrMihldmVudCwgZmlsdGVyT3V0SUNFQ2FuZGlkYXRlKQor
eworICAgIGlmIChmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUgJiYgZmlsdGVyT3V0SUNFQ2FuZGlkYXRl
KGV2ZW50LmNhbmRpZGF0ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGxvY2FsQ29ubmVjdGlv
bi5hZGRJY2VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRlKS50aGVuKG9uQWRkSWNlQ2FuZGlkYXRl
U3VjY2Vzcywgb25BZGRJY2VDYW5kaWRhdGVFcnJvcik7Cit9CisKK2Z1bmN0aW9uIG9uQWRkSWNl
Q2FuZGlkYXRlU3VjY2VzcygpCit7Cit9CisKK2Z1bmN0aW9uIG9uQWRkSWNlQ2FuZGlkYXRlRXJy
b3IoZXJyb3IpCit7CisgICAgY29uc29sZS5sb2coImFkZEljZUNhbmRpZGF0ZSBlcnJvcjogIiAr
IGVycm9yKQorICAgIGFzc2VydF91bnJlYWNoZWQoKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcmVu
ZWdvdGlhdGUocGMxLCBwYzIpCit7CisgICAgbGV0IGQgPSBhd2FpdCBwYzEuY3JlYXRlT2ZmZXIo
KTsKKyAgICBhd2FpdCBwYzEuc2V0TG9jYWxEZXNjcmlwdGlvbihkKTsKKyAgICBhd2FpdCBwYzIu
c2V0UmVtb3RlRGVzY3JpcHRpb24oZCk7CisgICAgZCA9IGF3YWl0IHBjMi5jcmVhdGVBbnN3ZXIo
KTsKKyAgICBhd2FpdCBwYzEuc2V0UmVtb3RlRGVzY3JpcHRpb24oZCk7CisgICAgYXdhaXQgcGMy
LnNldExvY2FsRGVzY3JpcHRpb24oZCk7Cit9CisKK2Z1bmN0aW9uIGFuYWx5c2VBdWRpbyhzdHJl
YW0sIGR1cmF0aW9uLCBjb250ZXh0KQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2
ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHZhciBzb3VyY2VOb2RlID0gY29udGV4dC5jcmVhdGVN
ZWRpYVN0cmVhbVNvdXJjZShzdHJlYW0pOworCisgICAgICAgIHZhciBhbmFseXNlciA9IGNvbnRl
eHQuY3JlYXRlQW5hbHlzZXIoKTsKKyAgICAgICAgdmFyIGdhaW4gPSBjb250ZXh0LmNyZWF0ZUdh
aW4oKTsKKworICAgICAgICB2YXIgcmVzdWx0cyA9IHsgaGVhcmRIdW06IGZhbHNlLCBoZWFyZEJp
cDogZmFsc2UsIGhlYXJkQm9wOiBmYWxzZSwgaGVhcmROb2lzZTogZmFsc2UgfTsKKworICAgICAg
ICBhbmFseXNlci5mZnRTaXplID0gMjA0ODsKKyAgICAgICAgYW5hbHlzZXIuc21vb3RoaW5nVGlt
ZUNvbnN0YW50ID0gMDsKKyAgICAgICAgYW5hbHlzZXIubWluRGVjaWJlbHMgPSAtMTAwOworICAg
ICAgICBhbmFseXNlci5tYXhEZWNpYmVscyA9IDA7CisgICAgICAgIGdhaW4uZ2Fpbi52YWx1ZSA9
IDA7CisKKyAgICAgICAgc291cmNlTm9kZS5jb25uZWN0KGFuYWx5c2VyKTsKKyAgICAgICAgYW5h
bHlzZXIuY29ubmVjdChnYWluKTsKKyAgICAgICAgZ2Fpbi5jb25uZWN0KGNvbnRleHQuZGVzdGlu
YXRpb24pOworCisgICAgICAgZnVuY3Rpb24gYW5hbHlzZSgpIHsKKyAgICAgICAgICAgdmFyIGZy
ZXFEb21haW4gPSBuZXcgVWludDhBcnJheShhbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCk7Cisg
ICAgICAgICAgIGFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKGZyZXFEb21haW4pOworCisg
ICAgICAgICAgIHZhciBoYXNGcmVxdWVuY3kgPSBleHBlY3RlZEZyZXF1ZW5jeSA9PiB7CisgICAg
ICAgICAgICAgICAgdmFyIGJpbiA9IE1hdGguZmxvb3IoZXhwZWN0ZWRGcmVxdWVuY3kgKiBhbmFs
eXNlci5mZnRTaXplIC8gY29udGV4dC5zYW1wbGVSYXRlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gYmluIDwgZnJlcURvbWFpbi5sZW5ndGggJiYgZnJlcURvbWFpbltiaW5dID49IDEwMDsKKyAg
ICAgICAgICAgfTsKKworICAgICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmRIdW0pCisgICAgICAg
ICAgICAgICAgcmVzdWx0cy5oZWFyZEh1bSA9IGhhc0ZyZXF1ZW5jeSgxNTApOworCisgICAgICAg
ICAgIGlmICghcmVzdWx0cy5oZWFyZEJpcCkKKyAgICAgICAgICAgICAgIHJlc3VsdHMuaGVhcmRC
aXAgPSBoYXNGcmVxdWVuY3koMTUwMCk7CisKKyAgICAgICAgICAgaWYgKCFyZXN1bHRzLmhlYXJk
Qm9wKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuaGVhcmRCb3AgPSBoYXNGcmVxdWVuY3koNTAw
KTsKKworICAgICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmROb2lzZSkKKyAgICAgICAgICAgICAg
ICByZXN1bHRzLmhlYXJkTm9pc2UgPSBoYXNGcmVxdWVuY3koMzAwMCk7CisKKyAgICAgICAgICAg
aWYgKHJlc3VsdHMuaGVhcmRIdW0gJiYgcmVzdWx0cy5oZWFyZEJpcCAmJiByZXN1bHRzLmhlYXJk
Qm9wICYmIHJlc3VsdHMuaGVhcmROb2lzZSkKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAg
ICAgIH07CisKKyAgICAgICBmdW5jdGlvbiBkb25lKCkgeworICAgICAgICAgICAgY2xlYXJUaW1l
b3V0KHRpbWVvdXQpOworICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CisgICAg
ICAgICAgICByZXNvbHZlKHJlc3VsdHMpOworICAgICAgIH0KKworICAgICAgICB2YXIgdGltZW91
dCA9IHNldFRpbWVvdXQoZG9uZSwgMyAqIGR1cmF0aW9uKTsKKyAgICAgICAgdmFyIGludGVydmFs
ID0gc2V0SW50ZXJ2YWwoYW5hbHlzZSwgZHVyYXRpb24gLyAzMCk7CisgICAgICAgIGFuYWx5c2Uo
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gd2FpdEZvcihkdXJhdGlvbikKK3sKKyAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24p
KTsKK30KKworZnVuY3Rpb24gd2FpdEZvclZpZGVvU2l6ZSh2aWRlbywgd2lkdGgsIGhlaWdodCwg
Y291bnQpCit7CisgICAgaWYgKHZpZGVvLnZpZGVvV2lkdGggPT09IHdpZHRoICYmIHZpZGVvLnZp
ZGVvSGVpZ2h0ID09PSBoZWlnaHQpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoInZp
ZGVvIGhhcyBleHBlY3RlZCBzaXplIik7CisKKyAgICBpZiAoY291bnQgPT09IHVuZGVmaW5lZCkK
KyAgICAgICAgY291bnQgPSAwOworICAgIGlmICgrK2NvdW50ID4gMjApCisgICAgICAgIHJldHVy
biBQcm9taXNlLnJlamVjdCgid2FpdEZvclZpZGVvU2l6ZSB0aW1lZCBvdXQsIGV4cGVjdGVkICIg
KyB3aWR0aCArICJ4IisgaGVpZ2h0ICsgIiBidXQgZ290ICIgKyB2aWRlby52aWRlb1dpZHRoICsg
IngiICsgdmlkZW8udmlkZW9IZWlnaHQpOworCisgICAgcmV0dXJuIHdhaXRGb3IoMTAwKS50aGVu
KCgpID0+IHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JWaWRlb1NpemUodmlkZW8sIHdpZHRoLCBo
ZWlnaHQsIGNvdW50KTsKKyAgICB9KTsKK30KKworYXN5bmMgZnVuY3Rpb24gZG9IdW1BbmFseXNp
cyhzdHJlYW0sIGV4cGVjdGVkKQoreworICAgIHZhciBjb250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4
dCgpOworICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgMjA7IGNwdHIrKykgeworICAgICAg
ICB2YXIgcmVzdWx0cyA9IGF3YWl0IGFuYWx5c2VBdWRpbyhzdHJlYW0sIDIwMCwgY29udGV4dCk7
CisgICAgICAgIGlmIChyZXN1bHRzLmhlYXJkSHVtID09PSBleHBlY3RlZCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBhd2FpdCB3YWl0Rm9yKDUwKTsKKyAgICB9CisgICAgYXdh
aXQgY29udGV4dC5jbG9zZSgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gaXNW
aWRlb0JsYWNrKGNhbnZhcywgdmlkZW8sIHN0YXJ0WCwgc3RhcnRZLCBncmFiYmVkV2lkdGgsIGdy
YWJiZWRIZWlnaHQpCit7CisgICAgY2FudmFzLndpZHRoID0gdmlkZW8udmlkZW9XaWR0aDsKKyAg
ICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQ7CisgICAgaWYgKCFncmFiYmVkSGVp
Z2h0KSB7CisgICAgICAgIHN0YXJ0WCA9IDEwOworICAgICAgICBzdGFydFkgPSAxMDsKKyAgICAg
ICAgZ3JhYmJlZFdpZHRoID0gY2FudmFzLndpZHRoIC0gMjA7CisgICAgICAgIGdyYWJiZWRIZWln
aHQgPSBjYW52YXMuaGVpZ2h0IC0gMjA7CisgICAgfQorCisgICAgY2FudmFzLmdldENvbnRleHQo
JzJkJykuZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQp
OworCisgICAgaW1hZ2VEYXRhID0gY2FudmFzLmdldENvbnRleHQoJzJkJykuZ2V0SW1hZ2VEYXRh
KHN0YXJ0WCwgc3RhcnRZLCBncmFiYmVkV2lkdGgsIGdyYWJiZWRIZWlnaHQpOworICAgIGRhdGEg
PSBpbWFnZURhdGEuZGF0YTsKKyAgICBmb3IgKHZhciBjcHRyID0gMDsgY3B0ciA8IGdyYWJiZWRX
aWR0aCAqIGdyYWJiZWRIZWlnaHQ7ICsrY3B0cikgeworICAgICAgICAvLyBBcHByb3hpbWF0aXZl
bHkgYmxhY2sgcGl4ZWxzLgorICAgICAgICBpZiAoZGF0YVs0ICogY3B0cl0gPiAzMCB8fCBkYXRh
WzQgKiBjcHRyICsgMV0gPiAzMCB8fCBkYXRhWzQgKiBjcHRyICsgMl0gPiAzMCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIGNoZWNrVmlkZW9CbGFjayhleHBlY3RlZCwgY2FudmFzLCB2aWRlbywgZXJyb3JNZXNz
YWdlLCBjb3VudGVyKQoreworICAgIGlmIChpc1ZpZGVvQmxhY2soY2FudmFzLCB2aWRlbykgPT09
IGV4cGVjdGVkKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisKKyAgICBpZiAo
Y291bnRlciA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb3VudGVyID0gMDsKKyAgICBpZiAoY291
bnRlciA+IDQwMCkgeworICAgICAgICBpZiAoIWVycm9yTWVzc2FnZSkKKyAgICAgICAgICAgIGVy
cm9yTWVzc2FnZSA9ICJjaGVja1ZpZGVvQmxhY2sgdGltZWQgb3V0IGV4cGVjdGluZyAiICsgZXhw
ZWN0ZWQ7CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvck1lc3NhZ2UpOworICAg
IH0KKworICAgIGF3YWl0IHdhaXRGb3IoNTApOworICAgIHJldHVybiBjaGVja1ZpZGVvQmxhY2so
ZXhwZWN0ZWQsIGNhbnZhcywgdmlkZW8sIGVycm9yTWVzc2FnZSwgKytjb3VudGVyKTsKK30KKwor
ZnVuY3Rpb24gc2V0Q29kZWMoc2RwLCBjb2RlYykKK3sKKyAgICByZXR1cm4gc2RwLnNwbGl0KCdc
clxuJykuZmlsdGVyKGxpbmUgPT4geworICAgICAgICByZXR1cm4gbGluZS5pbmRleE9mKCdhPWZt
dHAnKSA9PT0gLTEgJiYgbGluZS5pbmRleE9mKCdhPXJ0Y3AtZmInKSA9PT0gLTEgJiYgKGxpbmUu
aW5kZXhPZignYT1ydHBtYXAnKSA9PT0gLTEgfHwgbGluZS5pbmRleE9mKGNvZGVjKSAhPT0gLTEp
OworICAgIH0pLmpvaW4oJ1xyXG4nKTsKK30KKworYXN5bmMgZnVuY3Rpb24gZ2V0VHlwZWRTdGF0
cyhjb25uZWN0aW9uLCB0eXBlKQoreworICAgIGNvbnN0IHJlcG9ydCA9IGF3YWl0IGNvbm5lY3Rp
b24uZ2V0U3RhdHMoKTsKKyAgICB2YXIgc3RhdHM7CisgICAgcmVwb3J0LmZvckVhY2goKHN0YXRJ
dGVtKSA9PiB7CisgICAgICAgIGlmIChzdGF0SXRlbS50eXBlID09PSB0eXBlKQorICAgICAgICAg
ICAgc3RhdHMgPSBzdGF0SXRlbTsKKyAgICB9KTsKKyAgICByZXR1cm4gc3RhdHM7Cit9CisKK2Z1
bmN0aW9uIGdldFJlY2VpdmVkVHJhY2tTdGF0cyhjb25uZWN0aW9uKQoreworICAgIHJldHVybiBj
b25uZWN0aW9uLmdldFN0YXRzKCkudGhlbigocmVwb3J0KSA9PiB7CisgICAgICAgIHZhciBzdGF0
czsKKyAgICAgICAgcmVwb3J0LmZvckVhY2goKHN0YXRJdGVtKSA9PiB7CisgICAgICAgICAgICBp
ZiAoc3RhdEl0ZW0udHlwZSA9PT0gInRyYWNrIikgeworICAgICAgICAgICAgICAgIHN0YXRzID0g
c3RhdEl0ZW07CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gc3Rh
dHM7CisgICAgfSk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGNvbXB1dGVGcmFtZVJhdGUoc3RyZWFt
LCB2aWRlbykKK3sKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICBpbnRlcm5h
bHMub2JzZXJ2ZU1lZGlhU3RyZWFtVHJhY2soc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0pOwor
ICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwg
MTAwMCkpOyAKKyAgICAgICAgcmV0dXJuIGludGVybmFscy50cmFja1ZpZGVvU2FtcGxlQ291bnQ7
CisgICAgfQorCisgICAgbGV0IGNvbm5lY3Rpb247CisgICAgdmlkZW8uc3JjT2JqZWN0ID0gYXdh
aXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25u
ZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rp
b24uYWRkVHJhY2soc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIHN0cmVhbSk7CisgICAgICAg
IH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBjb25uZWN0aW9uID0gc2Vj
b25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0
cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVh
bXNbMF0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHNldFRpbWVvdXQo
KCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICB9KTsKKworICAgIGF3
YWl0IHZpZGVvLnBsYXkoKTsKKworICAgIGNvbnN0IHN0YXRzMSA9IGF3YWl0IGdldFJlY2VpdmVk
VHJhY2tTdGF0cyhjb25uZWN0aW9uKTsKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpOyAKKyAgICBjb25zdCBzdGF0czIgPSBhd2FpdCBn
ZXRSZWNlaXZlZFRyYWNrU3RhdHMoY29ubmVjdGlvbik7CisgICAgcmV0dXJuIChzdGF0czIuZnJh
bWVzUmVjZWl2ZWQgLSBzdGF0czEuZnJhbWVzUmVjZWl2ZWQpICogMTAwMCAvIChzdGF0czIudGlt
ZXN0YW1wIC0gc3RhdHMxLnRpbWVzdGFtcCk7Cit9CisKK2Z1bmN0aW9uIHNldEgyNjRCYXNlbGlu
ZUNvZGVjKHNkcCkKK3sKKyAgICBjb25zdCBsaW5lcyA9IHNkcC5zcGxpdCgnXHJcbicpOworICAg
IGNvbnN0IGgyNjRMaW5lcyA9IGxpbmVzLmZpbHRlcihsaW5lID0+IGxpbmUuaW5kZXhPZigiYT1m
bXRwIikgPT09IDAgJiYgbGluZS5pbmRleE9mKCI0MmUwMWYiKSAhPT0gLTEpOworICAgIGNvbnN0
IGJhc2VsaW5lTnVtYmVyID0gaDI2NExpbmVzWzBdLnN1YnN0cmluZyg2KS5zcGxpdCgnICcpWzBd
OworICAgIHJldHVybiBsaW5lcy5maWx0ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiAobGlu
ZS5pbmRleE9mKCdhPWZtdHAnKSA9PT0gLTEgJiYgbGluZS5pbmRleE9mKCdhPXJ0Y3AtZmInKSA9
PT0gLTEgJiYgbGluZS5pbmRleE9mKCdhPXJ0cG1hcCcpID09PSAtMSkgfHwgbGluZS5pbmRleE9m
KGJhc2VsaW5lTnVtYmVyKSAhPT0gLTE7CisgICAgfSkuam9pbignXHJcbicpOworfQorCitmdW5j
dGlvbiBzZXRIMjY0SGlnaENvZGVjKHNkcCkKK3sKKyAgICBjb25zdCBsaW5lcyA9IHNkcC5zcGxp
dCgnXHJcbicpOworICAgIGNvbnN0IGgyNjRMaW5lcyA9IGxpbmVzLmZpbHRlcihsaW5lID0+IGxp
bmUuaW5kZXhPZigiYT1mbXRwIikgPT09IDAgJiYgbGluZS5pbmRleE9mKCI2NDBjMWYiKSAhPT0g
LTEpOworICAgIGNvbnN0IGJhc2VsaW5lTnVtYmVyID0gaDI2NExpbmVzWzBdLnN1YnN0cmluZyg2
KS5zcGxpdCgnICcpWzBdOworICAgIHJldHVybiBsaW5lcy5maWx0ZXIobGluZSA9PiB7CisgICAg
ICAgIHJldHVybiAobGluZS5pbmRleE9mKCdhPWZtdHAnKSA9PT0gLTEgJiYgbGluZS5pbmRleE9m
KCdhPXJ0Y3AtZmInKSA9PT0gLTEgJiYgbGluZS5pbmRleE9mKCdhPXJ0cG1hcCcpID09PSAtMSkg
fHwgbGluZS5pbmRleE9mKGJhc2VsaW5lTnVtYmVyKSAhPT0gLTE7CisgICAgfSkuam9pbignXHJc
bicpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NjcmlwdC10
cmFuc2Zvcm0uanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9y
bS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZWM4NjUwYzllYmZiYzNiYTJlY2U1OTJmZTE2NzQ0Zjk0NGQxYmVh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NjcmlwdC10
cmFuc2Zvcm0uanMKQEAgLTAsMCArMSwyNyBAQAorY2xhc3MgTW9ja1JUQ1J0cFRyYW5zZm9ybWVy
IGV4dGVuZHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgeworICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgICBzdXBlcigpOworICAgICAgICB0aGlzLnBvcnQub25tZXNzYWdlID0gKGV2ZW50KSA9
PiB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7CisgICAgfQorICAgIHN0YXJ0KHJl
YWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbSkKKyAgICB7CisgICAgICAgIHNlbGYucG9zdE1l
c3NhZ2UoInN0YXJ0ZWQiKTsKKyAgICAgICAgdGhpcy5yZWFkZXIgPSByZWFkYWJsZVN0cmVhbS5n
ZXRSZWFkZXIoKTsKKyAgICAgICAgdGhpcy53cml0ZXIgPSB3cml0YWJsZVN0cmVhbS5nZXRXcml0
ZXIoKTsKKyAgICAgICAgdGhpcy5wcm9jZXNzKCk7CisgICAgfQorCisgICAgcHJvY2VzcygpCisg
ICAgeworICAgICAgICB0aGlzLnJlYWRlci5yZWFkKCkudGhlbihjaHVuayA9PiB7CisgICAgICAg
ICAgICBpZiAoY2h1bmsuZG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBzZWxmLnBvc3RNZXNzYWdlKCJjaHVuayIpOworICAgICAgICAgICAgdGhpcy53cml0ZXIud3Jp
dGUoY2h1bmsudmFsdWUpOworICAgICAgICAgICAgdGhpcy5wcm9jZXNzKCk7CisgICAgICAgIH0p
OworICAgIH0KK307CisKK3JlZ2lzdGVyUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoIk1vY2tSVENS
dHBUcmFuc2Zvcm0iLCBNb2NrUlRDUnRwVHJhbnNmb3JtZXIpOworc2VsZi5wb3N0TWVzc2FnZSgi
cmVnaXN0ZXJlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Nm
cmFtZS10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRj
L3NmcmFtZS10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMGU4NmRkZGUyOTM1
ZDFmMGY1YWMwMmRkM2E4N2M2YTJmNzhkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwzIEBACisKK1BBU1MgQ2Fubm90IHJldXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmEwNDg4MGQxNDVhY2ZiODFkN2U5OWJmMTEzODRhMDg1MzUxMzNjNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmh0
bWwKQEAgLTAsMCArMSwzMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkg
PT4geworICAgIGNvbnN0IHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CisgICAgY29uc3Qg
c2VuZGVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOworICAgIGNvbnN0
IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOworICAgIGNv
bnN0IHNlbmRlcjEgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKS5zZW5kZXI7CisgICAgY29u
c3Qgc2VuZGVyMiA9IHBjLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycpLnNlbmRlcjsKKyAgICBjb25z
dCByZWNlaXZlcjEgPSBwYy5nZXRSZWNlaXZlcnMoKVswXTsKKyAgICBjb25zdCByZWNlaXZlcjIg
PSBwYy5nZXRSZWNlaXZlcnMoKVsxXTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVy
VHJhbnNmb3JtOworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiBzZW5kZXIy
LnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIklu
dmFsaWRTdGF0ZUVycm9yIiwgKCkgPT4gcmVjZWl2ZXIyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJh
bnNmb3JtKTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOworICAg
IHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKworICAgIHNlbmRlcjEu
dHJhbnNmb3JtID0gbnVsbDsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gbnVsbDsKK30sICJD
YW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcyIpOworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y5ZDU2ZWU4
NWU2MGU0NzE4ZGY2ZDAxYzMxMzFjMTE0NTQ0ZTVlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDcgQEAKKworCitQQVNTIHRyYW5zZm9ybSBtZXNzYWdpbmcKK1BBU1MgQ2Fubm90IHJl
dXNlIGF0dGFjaGVkIHRyYW5zZm9ybXMKK1BBU1MgYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zv
cm0KK1BBU1MgdmlkZW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI4
NzUzMDlhMDMxYmVjZDAxZjRjY2Y4ZjVkMzcyMjQ5ZDliN2RhNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwKQEAgLTAs
MCArMSwxMzIgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3BsYXk+PC92aWRlbz4KKyAgICAgICAg
PHZpZGVvIGlkPSJ2aWRlbzIiIGF1dG9wbGF5PjwvdmlkZW8+CisgICAgICAgIDxzY3JpcHQgc3Jj
ID0icm91dGluZXMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorYXN5bmMgZnVuY3Rp
b24gd2FpdEZvck1lc3NhZ2Uod29ya2VyLCBkYXRhKQoreworICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgIGNvbnN0IHJlY2VpdmVkID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3Jr
ZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICAgICAg
aWYgKGRhdGEgPT09IHJlY2VpdmVkKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcign
c2NyaXB0LXRyYW5zZm9ybS5qcycpOworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQu
ZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKKworICAgIGNv
bnN0IHRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCAnTW9ja1JU
Q1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHRyYW5zZm9ybS5wb3J0Lm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5k
YXRhKSk7CisgICAgdHJhbnNmb3JtLnBvcnQucG9zdE1lc3NhZ2UoInRlc3QiKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IHByb21pc2UsICJ0ZXN0Iik7Cit9LCAidHJhbnNmb3JtIG1lc3NhZ2lu
ZyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBuZXcg
V29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2
ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwor
CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBzZW5k
ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENS
dHBUcmFuc2Zvcm0nKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0
IHNlbmRlcjEgPSBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nKS5zZW5kZXI7CisgICAgY29uc3Qg
c2VuZGVyMiA9IHBjLmFkZFRyYW5zY2VpdmVyKCd2aWRlbycpLnNlbmRlcjsKKyAgICBjb25zdCBy
ZWNlaXZlcjEgPSBwYy5nZXRSZWNlaXZlcnMoKVswXTsKKyAgICBjb25zdCByZWNlaXZlcjIgPSBw
Yy5nZXRSZWNlaXZlcnMoKVsxXTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVyVHJh
bnNmb3JtOworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiBzZW5kZXIyLnRy
YW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybSk7CisgICAgYXNzZXJ0X3Rocm93c19kb20oIkludmFs
aWRTdGF0ZUVycm9yIiwgKCkgPT4gcmVjZWl2ZXIyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNm
b3JtKTsKKworICAgIHNlbmRlcjEudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOworICAgIHJl
Y2VpdmVyMS50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKworICAgIHNlbmRlcjEudHJh
bnNmb3JtID0gbnVsbDsKKyAgICByZWNlaXZlcjEudHJhbnNmb3JtID0gbnVsbDsKK30sICJDYW5u
b3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7
CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9u
bWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2Vx
dWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQg
bmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOiB0cnVlfSk7CisKKyAg
ICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFuc2Zvcm0nKTsKKyAg
ICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29y
a2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworCisgICAgY29uc3Qgc3RhcnRlZFByb21pc2Ug
PSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJl
c29sdmUoZXZlbnQuZGF0YSkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmly
c3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Cisg
ICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAgc2VuZGVyLnRy
YW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24p
ID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAgICAgICAgICBz
ZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAg
ICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAgICAgICByZWNl
aXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAgICAgICByZXNv
bHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAgICB9KTsK
KyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDAp
OworICAgIH0pOworCisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBzdGFydGVkUHJvbWlzZSwgInN0
YXJ0ZWQiKTsKKworICAgIGF3YWl0IHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgImNodW5rIik7CisK
KyAgICB2aWRlbzEuc3JjT2JqZWN0ID0gc3RyZWFtOworICAgIGF3YWl0IHZpZGVvMS5wbGF5KCk7
Cit9LCAiYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcignc2NyaXB0LXRyYW5zZm9y
bS5qcycpOworICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdv
cmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFz
c2VydF9lcXVhbHMoZGF0YSwgInJlZ2lzdGVyZWQiKTsKKworICAgIGNvbnN0IGxvY2FsU3RyZWFt
ID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVl
fSk7CisKKyAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zv
cm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHdvcmtlciwgJ01vY2tSVENSdHBUcmFuc2Zv
cm0nKTsKKyAgICBjb25zdCByZWNlaXZlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFu
c2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworCisgICAgY29uc3Qgc3RhcnRl
ZFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworCisgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQg
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBjcmVhdGVDb25uZWN0
aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5l
Y3Rpb247CisgICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9j
YWxTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICAgICAg
c2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKKyAgICAgICAgfSwgKHNlY29uZENv
bm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247CisgICAg
ICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAg
ICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKKyAgICAgICAgICAg
ICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKKyAgICAgICAgICAg
ICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0
IiksIDUwMDApOworICAgIH0pOworCisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBzdGFydGVkUHJv
bWlzZSwgInN0YXJ0ZWQiKTsKKworICAgIGF3YWl0IHdhaXRGb3JNZXNzYWdlKHdvcmtlciwgImNo
dW5rIik7CisKKyAgICB2aWRlbzEuc3JjT2JqZWN0ID0gc3RyZWFtOworICAgIGF3YWl0IHZpZGVv
MS5wbGF5KCk7Cit9LCAidmlkZW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xp
Yi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDUzMzU3ZjRhMGZkMjk3Mjc2ZTg3NjE1ODc2Y2IxYWE3
ZmYzN2I1OGYuLmRmZmM1Y2IwMzNmMmU1ZjRmYzlhMjE2OWE3NDhlODExNTRjN2Q0MTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg2Nyw3ICs4Njcs
NyBAQCB3ZWJraXQub3JnL2IvMjE4Nzg3IHdlYnJ0Yy92aWRlby1zdGF0cy5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMjE4Nzg3IGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tc3RhdHNTZWxlY3Rvci5odG1sIFsgVGltZW91dCBdCiB3ZWJraXQub3JnL2IvMjE4Nzg3IHdl
YnJ0Yy9jb25jdXJyZW50VmlkZW9QbGF5YmFjay5odG1sIFsgVGltZW91dCBdCiB3ZWJraXQub3Jn
L2IvMjE4Nzg3IHdlYnJ0Yy9pY2UtY2FuZGlkYXRlLXNkcE1MaW5lSW5kZXguaHRtbCBbIFRpbWVv
dXQgXQotd2Via2l0Lm9yZy9iLzIxODc4NyB3ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sIFsg
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjE4Nzg3IGh0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJh
bnNmb3JtLmh0bWwgWyBGYWlsdXJlIF0KIAogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KICMgRW5kIG9mIFdlYlJUQy1yZWxhdGVkIGJ1Z3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzIGIvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10
cmFuc2Zvcm0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU2OGM2MjJiZmMxMWFjZTFlYjFmMWZjYzhkODJkMjJm
YzQ4MmQ1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9zY3JpcHQtdHJh
bnNmb3JtLmpzCkBAIC0wLDAgKzEsNyBAQAorY2xhc3MgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyIGV4
dGVuZHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgeworICAgIGNvbnN0cnVjdG9yKCkgeyB9Cisg
ICAgc3RhcnQocmVhZGFibGVTdHJlYW0sIHdyaXRhYmxlU3RyZWFtKSB7IHJlYWRhYmxlU3RyZWFt
LnBpcGVUbyh3cml0YWJsZVN0cmVhbSk7IH0KK307CisKK3JlZ2lzdGVyUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIoIk1vY2tSVENSdHBUcmFuc2Zvcm0iLCBNb2NrUlRDUnRwVHJhbnNmb3JtZXIpOwor
c2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
cnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3dl
YnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBmYThmNTFiM2M4MDBjNWQ3YWM0OTNkNzAzMzAwYWNkNjgyNzhmOWY4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJy
dGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAot
Ci0KLVBBU1MgYXVkaW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0KLVBBU1MgdmlkZW8gZXhjaGFu
Z2Ugd2l0aCB0cmFuc2Zvcm0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0
Yy10cmFuc2Zvcm0uaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YzVhNmRmYTU3N2JhM2JhOTBlZWFl
NTIwYzYzMjUxNTRlMWFmNTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDg2ICswLDAgQEAKLTwhZG9jdHlwZSBodG1sPgotPGh0bWw+Ci0gICAgPGhl
YWQ+Ci0gICAgICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAgICAgPHRpdGxlPlRlc3Rp
bmcgbWVkaWEgZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm08L3RpdGxlPgotICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KLSAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMSIgYXV0b3Bs
YXk+PC92aWRlbz4KLSAgICAgICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGF1dG9wbGF5PjwvdmlkZW8+
Ci0gICAgICAgIDxzY3JpcHQgc3JjID0icm91dGluZXMuanMiPjwvc2NyaXB0PgotICAgICAgICA8
c2NyaXB0PgotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgaWYgKCF3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBsZXQgc2VuZGVyLCByZWNlaXZlcjsK
LSAgICBsZXQgc2VuZGVyVHJhbnNmb3JtID0gaW50ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFu
c2Zvcm0oKTsKLSAgICBsZXQgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBpbnRlcm5hbHMuY3JlYXRlTW9j
a1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKLSAgICBjb25z
dCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAg
ICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAg
IHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVj
dGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVh
bSk7Ci0gICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAg
ICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25k
Q29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFj
a0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2Vp
dmVyOwotICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNm
b3JtOwotICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVj
dCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICB2aWRlbzEuc3JjT2Jq
ZWN0ID0gc3RyZWFtOwotICAgIGF3YWl0IHZpZGVvMS5wbGF5KCk7Ci0KLSAgICBsZXQgY291bnRl
ciA9IDA7Ci0gICAgd2hpbGUgKCFyZWNlaXZlclRyYW5zZm9ybS5pc1Byb2Nlc3NpbmcgJiYgY291
bnRlcisrIDwgMTAwKQotICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRp
bWVvdXQocmVzb2x2ZSwgNTApKTsKLQotICAgIGFzc2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS5p
c1Byb2Nlc3NpbmcsICJzZW5kZXIiKTsKLX0sICJhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9y
bSIpOwotCi1wcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBpZiAoIXdpbmRvdy5p
bnRlcm5hbHMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwot
ICAgIGxldCBzZW5kZXJUcmFuc2Zvcm0gPSBpbnRlcm5hbHMuY3JlYXRlTW9ja1JUQ1J0cFRyYW5z
Zm9ybSgpOwotICAgIGxldCByZWNlaXZlclRyYW5zZm9ybSA9IGludGVybmFscy5jcmVhdGVNb2Nr
UlRDUnRwVHJhbnNmb3JtKCk7Ci0KLSAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzogdHJ1ZX0pOwotCi0gICAgY29u
c3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAg
ICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAg
ICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Ci0gICAgICAgICAgICBzZW5kZXIgPSBmaXJzdENvbm5l
Y3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJl
YW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9IHNlbmRlclRyYW5zZm9ybTsKLSAg
ICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMiA9IHNlY29u
ZENvbm5lY3Rpb247Ci0gICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLm9udHJhY2sgPSAodHJh
Y2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhY2tFdmVudC5yZWNl
aXZlcjsKLSAgICAgICAgICAgICAgICByZWNlaXZlci50cmFuc2Zvcm0gPSByZWNlaXZlclRyYW5z
Zm9ybTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7Ci0g
ICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWpl
Y3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwotICAgIH0pOwotCi0gICAgdmlkZW8yLnNyY09i
amVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2aWRlbzIucGxheSgpOwotCi0gICBsZXQgY291bnRl
ciA9IDA7Ci0gICB3aGlsZSAoIXJlY2VpdmVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZyAmJiBjb3Vu
dGVyKysgPCAxMDApCi0gICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1l
b3V0KHJlc29sdmUsIDUwKSk7Ci0KLSAgICBhc3NlcnRfdHJ1ZShzZW5kZXJUcmFuc2Zvcm0uaXNQ
cm9jZXNzaW5nLCAic2VuZGVyIik7Ci19LCAidmlkZW8gZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0i
KTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9ib2R5PgotPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="431482"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414560</attachid>
            <date>2020-11-19 03:12:03 -0800</date>
            <delta_ts>2020-11-19 04:00:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219148-20201119121200.patch</filename>
            <type>text/plain</type>
            <size>175573</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4N2JjMDU3MTMzOWEy
YmU1ZTIzMjg0ODBhYjlmZTE0MDQ3YzZjZS4uMzQ1MzFlMDIzN2UwYmRhYTIwYjk2M2RkNGZmNWVj
ZTk1NTljMDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0xMS0xOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB3aGljaCBw
cm9jZXNzZXMgZW5jb2RlZCBmcmFtZXMgaW4gYSB3b3JrZXIgZm9yIGVpdGhlciBSVENSdHBTZW5k
ZXIgb3IgUlRDUnRwUmVjZWl2ZXIuCisgICAgICAgIFRoZSBtb2RlbCBmb2xsb3dzIEF1ZGlvV29y
a2xldE5vZGUgaW4gdGhlIHNlbnNlIHRoYXQgd2UgY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtIG9iamVjdCBpbiBtYWluIHRocmVhZCB0aGF0IGlzIHVzZWQgd2l0aCBSVENSdHAgb2JqZWN0
cy4KKyAgICAgICAgVGhlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB0YWtlcyBhIG5hbWUgYW5kIGEg
d29ya2VyIGFzIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIg
Y291bnRlciBwYXJ0IGluIGEgd29ya2VyLgorICAgICAgICBCZWZvcmUgdGhhdCwgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIgY29uc3RydWN0b3JzIGFyZSByZWdpc3RlcmVkIGluIHRoZSB3b3JrZXIg
d2l0aCBhIHNwZWNpZmljIG5hbWUuCisgICAgICAgIEEgbWVzc2FnZSBwb3J0IGlzIHNoYXJlZCBi
ZXR3ZWVuIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBhbmQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
CisKKyAgICAgICAgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGtlZXBzIGEgd2VhayBwb2ludGVyIHRv
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHNvIHRoYXQgd2Uga2VlcCBhbGwgcmVmIGNvdW50aW5n
IG9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIGluIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgICAg
ICBUbyBtYWtlIHN1cmUgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgc3RheXMgYWxpdmUgZm9yIGxv
bmcgZW5vdWdoLCB3ZSBzZXQgYSBwZW5kaW5nIGFjdGl2aXR5IHdoZW4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtIGlzIGxpbmtlZCB0byBpdHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuCisgICAgICAg
IFRoZSBwZW5kaW5nIGFjdGl2aXR5IGlzIHRoZW4gcmVtb3ZlZCBlaXRoZXIgYXQgd29ya2VyIGNs
b3N1cmUgb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGJlaW5nIG5vIGxvbmdlciBkb2luZyBwcm9j
ZXNzaW5nLgorCisgICAgICAgIFdlIGV4cG9zZSBpbmRpdmlkdWFsIGNvbXByZXNzZWQgZnJhbWVz
IGFzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIGFuZCBSVENFbmNvZGVkVmlkZW9GcmFtZS4KKyAgICAg
ICAgQWNjZXNzb3IgaXMgbGltaXRlZCB0byB0aGUgcmF3IGRhdGEgYnV0IGFkZGl0aW9uYWwgZ2V0
dGVycyBzaG91bGQgYmUgYWRkZWQgbGF0ZXIgb24uCisKKyAgICAgICAgVG8gaW1wbGVtZW50IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLCB3ZSBoYXZlIHRvIGJlIGFibGUgdG8gY3JlYXRlIFdyaXRh
YmxlU3RyZWFtIHdpdGggbmF0aXZlIHNpbmtzLgorICAgICAgICBUaGlzIGlzIHdoeSB3ZSBpbnRy
b2R1Y2UgV3JpdGFibGVTdHJlYW1TaW5rIGFuZCBXcml0YWJsZVN0cmVhbSBDKysgY2xhc3Nlcy4K
KyAgICAgICAgQmluZGluZyBiZXR3ZWVuIG5hdGl2ZSBmcmFtZXMgYW5kIHN0cmVhbXMgaXMgZG9u
ZSB0aHJvdWdoIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlIGFuZCBSVENSdHBXcml0YWJsZVN0
cmVhbVNpbmsuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zv
cm0uaHRtbCBhbmQgaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
VENFbmNvZGVkQXVkaW9GcmFtZTo6UlRDRW5jb2RlZEF1ZGlvRnJhbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpSVENFbmNvZGVkQXVkaW9GcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVv
RnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
citUcmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFu
c2Zvcm1lcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRh
Y2hlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFu
c2Zvcm06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRU
cmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtOjpzZXRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZv
clNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxD
bGVhckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpp
bml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjplbnF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6UlRDUnRwV3JpdGFi
bGVTdHJlYW1TaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
azo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXI6On5SVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI6OnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RvcFBlbmRpbmdBY3Rpdml0
eSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyV2l0aFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcldpdGhU
cmFuc2Zvcm06OnNldFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpm
cm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6UlRDUnRwVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1JlY2VpdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpjbGVhckJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwVHJhbnNmb3JtOjppbnRlcm5hbFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6
VHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5r
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3Ry
ZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyOjp0b1dyYXBwZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRl
ZCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6
dHJhbnNmb3JtKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdp
c3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAg
ICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9iamVj
dFByb3h5Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKwogMjAyMC0xMS0xNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFNGcmFtZSB0cmFuc2Zv
cm1hdGlvbiBpbXBsZW1lbnRhdGlvbiBhY2NvcmRpbmcgcG9zdC1jb21taXQgcmV2aWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDk0ZDA2MmJmOTkzZDFiNGM3YzQ0NDI0ZmE0ZTkxNjU3ZjQwMDdl
YWEuLjc4OWY4ZjFlNDgzMjZhNGZmZmJmOGMyOTQyNTM0NGRiNGQxODMwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0zNzMsNiArMzczLDggQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklM
RVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEdHhTdGF0dXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC00MDMs
MTMgKzQwNSwxNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSdHhQYXJhbWV0ZXJzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
UHJvdmlkZXIuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1lci5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Q29uc3RydWN0b3IuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1l
dGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0u
aWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2RwVHlw
ZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsCkBA
IC00ODEsNiArNDg2LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKKyAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVT
dHJlYW1TaW5rLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCkBAIC0xNzUzLDcgKzE3NTks
NiBAQCBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0lETF9GSUxFUwogICAgIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaWRsCiAgICAgdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5pZGwKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCiAgICAg
dGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsCiApCkBAIC0xNzc3LDcgKzE3ODIsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNFUwogICAgIHRlc3RpbmcvTW9ja0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uLmNwcAogICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmNwcAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAotICAgIHRlc3RpbmcvTW9ja1JU
Q1J0cFRyYW5zZm9ybS5jcHAKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
CiAgICAgdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBiMTZkODhlODQ1Y2Q2
NmNlYzhjZWNkMGU3Y2I0MGY4NDJjY2Q5NjA0Li43OGIzZDRmYTA4OTQ5NDM4ZDBiZTk3NDk0ZDQ2
OWZlZTkyMzk0NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKQEAgLTIwNSw2ICsyMDUsOCBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0R0eFN0YXR1cy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCiskKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQuaWRsCiAkKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC0yMzcs
NiArMjM5LDEwIEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIrVHJhbnNmb3JtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUnR4UGFyYW1ldGVycy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAorJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKKyQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlcitUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5pZGwKQEAgLTMzOCw2ICszNDQsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcwogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIu
anMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFs
cy5qcworJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAyNmQzYzE0YTJhNjhi
ODkxNjY5ZWIwZDU2MDI3Y2U0ZjVjZTczYzhmLi5hMTZiODMyNzY5ZDY3YzgyMGQzYmUyNjU1ZmQz
MjZiYTNlN2FkMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtMTY0Nyw2ICsxNjQ3LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEZWdyYWRh
dGlvblByZWZlcmVuY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSVENEdHhTdGF0dXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ0R0eFN0YXR1cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlk
YXRlSW5pdC5jcHAKQEAgLTE3MDcsNiArMTcxMSwxNCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRl
cnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVy
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5k
UGFyYW1ldGVycy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uY3BwCkBAIC0yNTY5LDYgKzI1ODEsOCBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuYwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtU2luay5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTERvY3Vt
ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNY
TUxEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
MjdhYzdkODBlZWIxMDM1NjRkMWFlNjUzMjFlZjAwNzU3MGJlY2NiMS4uOWJhOWFkYzJhNDU3NzJh
N2IxMzIyOGM0OWExNjk5NTc0OGY0Y2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0yMzEsNiArMjMxLDggQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0Zy
YW1lLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZVR5cGUuaWRsIFwKQEAgLTI2NCwxMCArMjY2LDEzIEBAIEpTX0JJTkRJTkdfSURM
UyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJh
bnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
eW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1NkcFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsIFwK
QEAgLTM0Miw2ICszNDcsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJPcHRpb25zLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCkBAIC0xMjMwLDcg
KzEyMzYsNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9N
b2NrUGF5bWVudENvbnRhY3RGaWVsZHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5
bWVudEVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zv
cm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRBdWRpb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODUyNzcyNjM3OWZiZmI2ZGE3ODQ4
MzcxZWNmYjEzMThkYjhlZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkQXVkaW9GcmFtZS5oIgorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZEF1ZGlvRnJh
bWU6OlJUQ0VuY29kZWRBdWRpb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJh
bWU+JiYgZnJhbWUpCisgICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9
CisKK1JUQ0VuY29kZWRBdWRpb0ZyYW1lOjp+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKSA9IGRlZmF1
bHQ7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkQXVkaW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyYjZmMDgyNzVlNjkzNTliNDdjMGYwNTE2
YzMyY2VlZDYwNDAxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkQXVkaW9GcmFtZSA6IHB1Ymxp
YyBSVENFbmNvZGVkRnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZEF1
ZGlvRnJhbWU+IGNyZWF0ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZy
YW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFdURk1vdmUo
ZnJhbWUpKSk7IH0KKyAgICB+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBSVENFbmNvZGVkQXVkaW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDBkNTZj
MWQzMDg4MmFjYTk2MzY0YWE3NTZjNDlkOWRjMGVmM2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwK
QEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRD
LAorICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCitdIGludGVyZmFjZSBSVENFbmNvZGVkQXVkaW9GcmFtZSB7CisgICAgLy8gcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRl
IEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRDQXVkaW9GcmFtZU1ldGFkYXRhIGdldE1ldGFk
YXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NmE5Mzk1NmFiYmJlODQ2MDQ3Y2Nl
MDFhZjEyYzVjMWNiMmQ1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
VENFbmNvZGVkRnJhbWU6OlJUQ0VuY29kZWRGcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmIGZyYW1lKQorICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30K
KworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IFJUQ0VuY29kZWRGcmFtZTo6ZGF0YSgpIGNvbnN0
Cit7CisgICAgYXV0byBkYXRhID0gbV9mcmFtZS0+ZGF0YSgpOworICAgIHJldHVybiBKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhLCBkYXRhLnNpemUpOworfQorCit2b2lkIFJUQ0Vu
Y29kZWRGcmFtZTo6c2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJiBidWZmZXIpCit7CisgICAgbV9m
cmFtZS0+c2V0RGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgp
KSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGI0NzRkYjkx
MzE1MDhkZTM1ZGQwYTdlMGQwMWQ3NGViYTZhZjliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBS
VENFbmNvZGVkRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENFbmNvZGVkRnJhbWU+IHsKK3B1
YmxpYzoKKyAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0OworICAgIHZv
aWQgc2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lPiB0YWtlUlRDRnJhbWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fZnJhbWUp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSVENFbmNvZGVkRnJhbWUoVW5pcXVlUmVm
PFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lPiBtX2ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhZjYzYTA5YzJkOGE2OTVkNDM3NjJlZjdkMzkwY2ZmOTdlNjYxNDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRl
b0ZyYW1lLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ0VuY29k
ZWRWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWUoVW5pcXVl
UmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJiBmcmFtZSkKKyAgICA6IFJUQ0VuY29kZWRG
cmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30KKworUlRDRW5jb2RlZFZpZGVvRnJhbWU6On5SVENF
bmNvZGVkVmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzc3MDVhYzg1NmEwMjYyOTdmODE5MDczZWFmNGM4MzBlMzYxOWE1NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1
ZGUgIlJUQ0VuY29kZWRGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJU
Q0VuY29kZWRWaWRlb0ZyYW1lIDogcHVibGljIFJUQ0VuY29kZWRGcmFtZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSVENFbmNvZGVkVmlkZW9GcmFtZT4gY3JlYXRlKFVuaXF1ZVJlZjxSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRD
RW5jb2RlZFZpZGVvRnJhbWUoV1RGTW92ZShmcmFtZSkpKTsgfQorICAgIH5SVENFbmNvZGVkVmlk
ZW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ0VuY29kZWRWaWRlb0ZyYW1l
KFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkZGQ2YTgxN2ZlMWRlZmEwMGRiMTNiNzljNmZjYWJlY2VkNjI5
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRXhwb3NlZD1EZWRpY2F0ZWRXb3JrZXIs
CisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKK10gaW50ZXJmYWNlIFJUQ0VuY29kZWRW
aWRlb0ZyYW1lIHsKKyAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgUlRDRW5jb2RlZFZpZGVvRnJh
bWVUeXBlIHR5cGU7CisgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRlIEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRD
VmlkZW9GcmFtZU1ldGFkYXRhIGdldE1ldGFkYXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFu
c2Zvcm0uaWRsCmluZGV4IGYwYjJlMTFkNDdmZmJiM2E4NDNiZjQxMzk3ZTBjMDhjOTFlMjYyNzgu
LjQ2OTM0ZTQ4ZDAyYWZmNGJiZTY0YmJhNTlhYzdmZTA3MDlhMGEyY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3Jt
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyK1RyYW5zZm9ybS5pZGwKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCit0eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3Ig
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKSBSVENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRp
b25hbD1XRUJfUlRDLAogICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVh
bXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuY3BwCmluZGV4IDBiZmNjOTY2M2MyZjA2ZDRlOTBjMDk0ODhkZjI1MmUxZmQyYjNj
MDAuLmVmN2EyOTgwMDA2MmUyMzhjNmNiM2M2MGM2NTIyNWNlZDViMzgxYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3Bw
CkBAIC04MSw4ICs4MSwxMCBAQCBPcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJl
Y2VpdmVyOjpnZXRDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJldHVybiBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnRleHQsIGtpbmQp
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBSZWNlaXZlcjo6c2V0VHJhbnNmb3JtKFJl
ZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKQorRXhjZXB0aW9uT3I8dm9pZD4gUlRD
UnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYgdHJh
bnNmb3JtKQogeworICAgIGlmICh0cmFuc2Zvcm0gJiYgbV90cmFuc2Zvcm0gJiYgKnRyYW5zZm9y
bSA9PSAqbV90cmFuc2Zvcm0pCisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKHRyYW5zZm9y
bSAmJiB0cmFuc2Zvcm0tPmlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAidHJhbnNmb3JtIGlzIGFscmVhZHkgaW4gdXNlIl9zIH07CiAK
QEAgLTk1LDYgKzk3LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJlY2VpdmVyOjpzZXRU
cmFuc2Zvcm0oUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2ZvCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gUlRDUnRwUmVjZWl2
ZXI6OnRyYW5zZm9ybSgpCit7CisgICAgaWYgKCFtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm0tPmludGVybmFsVHJhbnNmb3JtKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5o
CmluZGV4IDhjYjFhNDNkMmJkMDQ0NjI0YzI4N2NhNmFmNzFjN2RmODc4ZDIyYjUuLjNhMTYxNzIw
NTQzYzFkNGJiZmM1MWExNDAxMzdkOWNjNzcwMGQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKQEAgLTY3LDggKzY3LDgg
QEAgcHVibGljOgogICAgIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJu
IG1fYmFja2VuZC5nZXQoKTsgfQogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKLSAgICBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJh
bnNmb3JtLmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJlZlB0
cjxSVENSdHBUcmFuc2Zvcm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+IHRyYW5zZm9ybSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShP
cHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFJlY2Vp
dmVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBzdGQ6
OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKQEAgLTc2LDcgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IG1fY29ubmVjdGlvbjsKLSAgICBSZWZQdHI8UlRDUnRwVHJh
bnNmb3JtPiBtX3RyYW5zZm9ybTsKKyAgICBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+IG1fdHJh
bnNmb3JtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRo
VHJhbnNmb3JtLmgKaW5kZXggNGViOWI4NDc5MTEzZGEyMTc5NWM4NzA3ZWJkZGU0Y2E2ZWEyYjRj
Zi4uODE2Y2E3OWM5ZDNiNzBiMjc5NGViOTZiODI3Y2ZhNTI5MzM2OTM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFu
c2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyV2l0aFRyYW5zZm9ybS5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5z
Zm9ybTsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2Vp
dmVyKSB7IHJldHVybiByZWNlaXZlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0YXRpYyBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyLCBSZWZQdHI8
UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gcmVjZWl2ZXIuc2V0VHJhbnNm
b3JtKFdURk1vdmUodHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwVHJh
bnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyBy
ZXR1cm4gcmVjZWl2ZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0VHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlciwgT3B0aW9uYWw8UlRDUnRw
VHJhbnNmb3JtOjpJbnRlcm5hbD4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHJlY2VpdmVyLnNldFRy
YW5zZm9ybShSVENSdHBUcmFuc2Zvcm06OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCAy
OTc0YzY0MGM5OGExYWVmZDFlMWI2ZmEyMWQxN2E2ZDY1MGE2NjM2Li41Yzg3Y2Y1NjRhNTE1MzAx
NDc5M2M0OGYyZjJkZTkyNzVjNzk3MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgiCisjaW5jbHVkZSAiUlRD
UnRwVHJhbnNmb3JtQmFja2VuZC5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFt
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCwxMSArNjksMTIgQEAgdWludDY0X3Qg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygpIGNvbnN0CiAKIHZvaWQg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYgYmFja2VuZCwgU2lkZSBzaWRlKQogeworICAgIG1faXNBdHRhY2hlZCA9IHRy
dWU7CiAgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVy
KTsKICAgICBtX3RyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlh
VHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOwogCiAg
ICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBt
X3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7
Ci0gICAgICAgIGF1dG8gY2h1bmsgPSBmcmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gY2h1bmsg
PSBmcmFtZS0+ZGF0YSgpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFu
c2Zvcm0oY2h1bmsuZGF0YSwgY2h1bmsuc2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgewpAQCAtODAsOSArODIsOSBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZnJhbWUuc2V0RGF0YSh7
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgp
IH0pOworICAgICAgICBmcmFtZS0+c2V0RGF0YSh7IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmRhdGEo
KSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgpIH0pOwogCi0gICAgICAgIGJhY2tlbmQtPnBy
b2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1vdmUoZnJhbWUpKTsKKyAgICAgICAgYmFja2VuZC0+
cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZS5nZXQoKSkpOwogICAgIH0pOwog
fQogCkBAIC0xMDAsNiArMTAyLDcgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRp
YWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGIKIHZvaWQgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmIGJhY2tlbmQpCiB7CiAgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxi
YWNrKCk7CisgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCmluZGV4IDE1ODE5MGE5MDk2NjBjZjA0MGQwNjdlMzZh
YTU3ZmZiY2E2MTRiYWMuLmQ0N2RiOWIyOWM4YTZiZDU3OGNlMjMxYWEzMWI1NjlhMDlhZTg1Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaApAQCAtMjgsMzIgKzI4LDM0IEBACiAjaWYgRU5BQkxFKFdF
Ql9SVEMpCiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIlJU
Q1J0cFRyYW5zZm9ybS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0tl
eTsKIGNsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworY2xhc3MgUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZDsKIAotY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGZpbmFsIDogcHVibGljIFJU
Q1J0cFRyYW5zZm9ybSB7CitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gOiBwdWJsaWMgUmVm
Q291bnRlZDxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CiAgICAgflJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOwog
CiAgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9wdGlvbmFsPHVpbnQ2NF90
PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCisgICAgYm9vbCBpc0F0dGFjaGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9CisgICAgdm9pZCBpbml0aWFsaXplQmFja2Vu
ZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIGluaXRpYWxp
emVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIHdp
bGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRG
b3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCBpbml0
aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0g
ICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsK
LQogICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKICAgICB2b2lkIGlu
aXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7CiAKKyAg
ICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgUmVmPFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyPiBtX3RyYW5zZm9ybWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCmluZGV4
IDk3Yjc2OThiZDhjNmQ0YjIyY2VjNjA5YTg3Y2E3MWFiMGFlNGI5NDEuLjI2NDI4ZGQ5MmY1MTU5
ZDNlOTIyYjUxMGU0ZGUwNzU2NjdhOTEyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKQEAg
LTI4LDggKzI4LDkgQEAKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJl
YW1zLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEV4cG9zZWQ9V2luZG93
LAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LAotXSBpbnRlcmZhY2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogUlRDUnRwVHJhbnNm
b3JtIHsKK10gaW50ZXJmYWNlIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB7CiAgICAgY29uc3RydWN0
b3IoKTsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tl
eSBrZXksIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc3MzYwNzVkZWQ3NzZiMmY3NjljZDVlOTg0YjU3ZjM1OWQy
MTVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgorI2luY2x1ZGUgIldv
cmtlci5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSk7CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrZXImIHdvcmtlciwgU3RyaW5nJiYgbmFtZSkKK3sKKyAgICBpZiAoIXdvcmtlci5oYXNSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcihuYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiTm8gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgd2FzIHJlZ2lzdGVy
ZWQgd2l0aCB0aGlzIG5hbWUiX3MgfTsKKworICAgIGlmICghd29ya2VyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiV29ya2VyIGZyYW1lIGlzIGRldGFjaGVkIl9zIH07CisKKyAgICBhdXRvIG1lc3NhZ2VDaGFu
bmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgYXV0byB0cmFuc2Zvcm1NZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVsLT5w
b3J0MSgpOworICAgIGF1dG8gdHJhbnNmb3JtZXJNZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVs
LT5wb3J0MigpOworCisgICAgYXV0byB0cmFuc2Zvcm0gPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybShjb250ZXh0LCBtYWtlUmVmKHdvcmtlciksIG1ha2VSZWYoKnRyYW5zZm9y
bU1lc3NhZ2VQb3J0KSkpOworICAgIHRyYW5zZm9ybS0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAg
ICB3b3JrZXIuY3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIobmFtZSwgdHJhbnNmb3JtZXJN
ZXNzYWdlUG9ydC0+ZGlzZW50YW5nbGUoKSwgdHJhbnNmb3JtKTsKKworICAgIHJldHVybiB0cmFu
c2Zvcm07Cit9CisKK1JUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxXb3JrZXI+JiYgd29ya2VyLCBS
ZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkK
KyAgICAsIG1fd29ya2VyKFdURk1vdmUod29ya2VyKSkKKyAgICAsIG1fcG9ydChXVEZNb3ZlKHBv
cnQpKQoreworfQorCitSVENSdHBTY3JpcHRUcmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zv
cm0oKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpz
ZXRUcmFuc2Zvcm1lcihSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+JiYgdHJhbnNmb3Jt
ZXIpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCF0cmFuc2Zvcm1l
cikgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgRXJyb3JFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAiQW4gZXJyb3Igd2FzIHRocm93biBmcm9tIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyIGNvbnN0cnVjdG9yIl9zLCB7IH0sIDAsIDAsIHsgfSkpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9p
c1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQpOworICAgICAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFs
aXplZCA9IHRydWU7CisgICAgICAgIG1fdHJhbnNmb3JtZXIgPSBtYWtlV2Vha1B0cih0cmFuc2Zv
cm1lci5nZXQoKSk7CisgICAgfQorICAgIHRyYW5zZm9ybWVyLT5zdGFydFBlbmRpbmdBY3Rpdml0
eSgpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgICAg
IHNldHVwVHJhbnNmb3JtZXIobV9iYWNrZW5kLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0pOwor
fQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNl
aXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxpemVU
cmFuc2Zvcm1lcihiYWNrZW5kKTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06Omlu
aXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQp
Cit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQpOworfQorCit2b2lkIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
JikKK3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5p
dGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgbV9pc0F0dGFjaGVkID0gdHJ1ZTsKKyAgICBpZiAoIXNldHVwVHJhbnNmb3JtZXIobWFrZVJl
ZihiYWNrZW5kKSkpCisgICAgICAgIG1fYmFja2VuZCA9IG1ha2VSZWYoYmFja2VuZCk7Cit9CisK
K2Jvb2wgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpzZXR1cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kPiYmIGJhY2tlbmQpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgaWYgKCFtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXpl
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV93b3JrZXItPnBvc3RUYXNrVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gV1RG
TW92ZShiYWNrZW5kKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAodHJhbnNmb3JtZXIp
CisgICAgICAgICAgICB0cmFuc2Zvcm1lci0+c3RhcnQoV1RGTW92ZShiYWNrZW5kKSk7CisgICAg
fSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpj
bGVhcigpCit7CisgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fdHJhbnNmb3JtZXJMb2NrKTsKKyAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFs
aXplZCA9IGZhbHNlOworICAgIG1fd29ya2VyLT5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUo
W3RyYW5zZm9ybWVyID0gV1RGTW92ZShtX3RyYW5zZm9ybWVyKV0oYXV0byYpIG11dGFibGUgewor
ICAgICAgICBpZiAodHJhbnNmb3JtZXIpCisgICAgICAgICAgICB0cmFuc2Zvcm1lci0+Y2xlYXIo
KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGRjZWI1ZjQwZmY1
N2ZkNWZhM2NjMDc5M2E2MTA4ZTg1NTZlNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcjsKK2NsYXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ7CitjbGFzcyBXb3JrZXI7
CisKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBmaW5hbAorICAgIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4KKyAgICAsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QKKyAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKKyAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk7CitwdWJsaWM6
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtlciYsIFN0cmluZyYmIG5hbWUpOworICAg
IH5SVENSdHBTY3JpcHRUcmFuc2Zvcm0oKTsKKworICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgeyBy
ZXR1cm4gbV9wb3J0LmdldCgpOyB9CisKKyAgICB2b2lkIHNldFRyYW5zZm9ybWVyKFJlZlB0cjxS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4mJik7CisKKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7IH0KKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9y
UmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgd2lsbENs
ZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisKKyAgICB1c2luZyBUaHJlYWRT
YWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJl
ZjsKKworcHJpdmF0ZToKKyAgICBSVENSdHBTY3JpcHRUcmFuc2Zvcm0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZjxXb3JrZXI+JiYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CisKKyAgICB2b2lk
IGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisgICAgYm9v
bCBzZXR1cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmKTsKKyAgICB2
b2lkIGNsZWFyKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgeyByZXR1cm4gIlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bSI7IH0KKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQorCisgICAgUmVmPFdvcmtlcj4gbV93b3JrZXI7CisgICAgUmVmPE1l
c3NhZ2VQb3J0PiBtX3BvcnQ7CisKKyAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07Cisg
ICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFja2VuZDsKKworICAgIExvY2sg
bV90cmFuc2Zvcm1lckxvY2s7CisgICAgYm9vbCBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCB7
IGZhbHNlIH07CisgICAgV2Vha1B0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4gbV90cmFuc2Zv
cm1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NmE5Yjk1MzFjMTc4
MjFjNjg5OWI2ZjYwMGZkNTczMGQ5ZmU5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9zZWQ9V2luZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSA6IEV2ZW50VGFyZ2V0IHsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoV29ya2VyIHdv
cmtlciwgRE9NU3RyaW5nIG5hbWUpOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQ
b3J0IHBvcnQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNjNiZThhZGMzMDI3ZTU3OGY2NmNmNGM1OWMxYjU3NGQ2ZmUyNjM1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2lu
dGVyZmFjZSBtaXhpbiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlciB7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihE
T01TdHJpbmcgbmFtZSwgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3RvciBwcm9jZXNz
b3JDb25zdHJ1Y3Rvcik7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzM3NGQ3MjNlMDQ3NTc5ZDBmOGIzNTdmZGJjNTQ1ZTY0NWNhMzcwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAi
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5o
IgorI2luY2x1ZGUgIkpTUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaCIKKyNpbmNsdWRlICJKU1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgi
CisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNv
dXJjZS5oIgorI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCisjaW5jbHVkZSAiV3JpdGFibGVT
dHJlYW1TaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwUmVhZGFi
bGVTdHJlYW1Tb3VyY2UKKyAgICA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNvdXJjZQorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSk7IH0KKwor
ICAgIHZvaWQgY2xvc2UoKSB7IGNvbnRyb2xsZXIoKS5jbG9zZSgpOyB9CisgICAgdm9pZCBlbnF1
ZXVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBjb250cm9sbGVyKCkuZW5xdWV1ZSh2YWx1ZSk7IH0K
KworcHJpdmF0ZToKKyAgICBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSgpID0gZGVmYXVsdDsK
KworICAgIC8vIFJlYWRhYmxlU3RyZWFtU291cmNlCisgICAgdm9pZCBzZXRBY3RpdmUoKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHNldEluYWN0aXZlKCkgZmluYWwgeyB9CisgICAgdm9pZCBkb1N0YXJ0
KCkgZmluYWwgeyB9CisgICAgdm9pZCBkb1B1bGwoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRvQ2Fu
Y2VsKCkgZmluYWwgeyB9Cit9OworCitjbGFzcyBSVENSdHBXcml0YWJsZVN0cmVhbVNpbmsgOiBw
dWJsaWMgV3JpdGFibGVTdHJlYW1TaW5rIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ1J0
cFdyaXRhYmxlU3RyZWFtU2luaz4gY3JlYXRlKEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVmPFJUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZT4mJik+JiYgZW5xdWV1ZUZ1bmN0aW9uKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luayhXVEZNb3ZlKGVucXVldWVGdW5jdGlv
bikpKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
ayhGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPiYm
IGVucXVldWVGdW5jdGlvbikKKyAgICAgICAgOiBtX2VucXVldWVGdW5jdGlvbihXVEZNb3ZlKGVu
cXVldWVGdW5jdGlvbikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgd3JpdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7CisKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBhdXRvIGZyYW1lID0g
Y29udmVydDxJRExVbmlvbjxJRExJbnRlcmZhY2U8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBJRExJ
bnRlcmZhY2U8UlRDRW5jb2RlZFZpZGVvRnJhbWU+Pj4oZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisK
KyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0sIFJlamVjdEFzSGFuZGxl
ZDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6
c3dpdGNoT24oZnJhbWUsIFsmXShSZWZQdHI8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+JiB2YWx1ZSkg
eworICAgICAgICAgICAgbV9lbnF1ZXVlRnVuY3Rpb24odmFsdWUtPnRha2VSVENGcmFtZSgpKTsK
KyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENFbmNvZGVkVmlkZW9GcmFtZT4mIHZhbHVlKSB7Cisg
ICAgICAgICAgICBtX2VucXVldWVGdW5jdGlvbih2YWx1ZS0+dGFrZVJUQ0ZyYW1lKCkpOworICAg
ICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgfQorCisgICAgLy8gRklY
TUU6IERlY2lkZSB3aGV0aGVyIGNsZWFyaW5nIGFsbCBwZW5kaW5nIGZyYW1lcy4KKyAgICB2b2lk
IGNsb3NlKCkgZmluYWwgeyB9CisgICAgdm9pZCBlcnJvcihTdHJpbmcmJikgZmluYWwgeyB9CisK
KyAgICBGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYp
PiBtX2VucXVldWVGdW5jdGlvbjsKK307CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcj4+IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBvcnQgPSBkb3duY2FzdDxEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGFrZVBlbmRpbmdSVENUcmFuc2ZvbWVyTWVz
c2FnZVBvcnQoKTsKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJObyBwZW5kaW5nIGNvbnN0cnVjdGlvbiBkYXRhIGZvciB0aGlzIFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyIl9zIH07CisKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gYWRvcHRSZWYo
Km5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb250ZXh0LCBwb3J0LnJlbGVhc2VOb25OdWxs
KCkpKTsKKyAgICB0cmFuc2Zvcm1lci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRy
YW5zZm9ybWVyOworfQorCitSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1lc3NhZ2VQb3J0
PiYmIHBvcnQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3BvcnQo
V1RGTW92ZShwb3J0KSkKK3sKK30KKworUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6On5SVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcigpCit7Cit9CisKK1JlZlB0cjxSVENSdHBSZWFkYWJsZVN0cmVhbVNv
dXJjZT4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OnN0YXJ0U3RyZWFtcyhSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2Fs
bGJhY2spOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKKworICAgIGF1dG8m
IHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CisKKyAgICBhdXRvIHJlYWRhYmxlU3RyZWFtU291cmNlID0gUlRDUnRwUmVhZGFibGVTdHJlYW1T
b3VyY2U6OmNyZWF0ZSgpOworICAgIGF1dG8gcmVhZGFibGVTdHJlYW0gPSBSZWFkYWJsZVN0cmVh
bTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgcmVhZGFibGVTdHJlYW1Tb3VyY2UuY29weVJlZigpKTsK
KyAgICBpZiAocmVhZGFibGVTdHJlYW0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byB3cml0YWJsZVN0cmVhbSA9IFdyaXRhYmxlU3RyZWFtOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShbYmFja2Vu
ZCA9IG1ha2VSZWYoYmFja2VuZCldKGF1dG8mJiBmcmFtZSkgeworICAgICAgICBiYWNrZW5kLT5w
cm9jZXNzVHJhbnNmb3JtZWRGcmFtZShXVEZNb3ZlKGZyYW1lLmdldCgpKSk7CisgICAgfSkpOwor
ICAgIGlmICh3cml0YWJsZVN0cmVhbS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAvLyBDYWxsIHN0YXJ0IGNhbGxiYWNrLgorICAgIEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTTmV3bHlDcmVhdGVkKCZnbG9i
YWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHJlYWRhYmxlU3RyZWFtLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKSk7CisgICAgYXJncy5hcHBlbmQodG9KU05ld2x5Q3JlYXRlZCgmZ2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCB3cml0YWJsZVN0cmVhbS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworCisg
ICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIGNhbGxi
YWNrLT5pbnZva2VDYWxsYmFjayhKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAic3RhcnQiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhp
bmcgaW4gY2FzZSBvZiBleGNlcHRpb24/IFdlIHNob3VsZCBhdCBsZWFzdCBsb2cgZXJyb3JzLgor
CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtU291cmNlOworfQorCit2b2lkIFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5k
KQoreworICAgIGF1dG8gcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBzdGFydFN0cmVhbXMoYmFja2Vu
ZC5nZXQoKSk7CisgICAgaWYgKCFyZWFkYWJsZVN0cmVhbVNvdXJjZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9iYWNrZW5kID0gV1RGTW92ZShiYWNrZW5kKTsKKworICAgIGF1dG8mIGNvbnRl
eHQgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisgICAgbV9iYWNrZW5kLT5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbcmVhZGFi
bGVTdHJlYW1Tb3VyY2UgPSBtYWtlV2Vha1B0cihyZWFkYWJsZVN0cmVhbVNvdXJjZS5nZXQoKSks
IGlzQXVkaW8gPSBtX2JhY2tlbmQtPm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQ6Ok1lZGlhVHlwZTo6QXVkaW8sIHRocmVhZCA9IG1ha2VSZWYoY29udGV4dC50aHJlYWQoKSld
KGF1dG8mJiBmcmFtZSkgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShbcmVhZGFibGVTdHJlYW1Tb3VyY2UsIGlzQXVkaW8sIGZyYW1lID0gV1RGTW92
ZShmcmFtZSldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFyZWFk
YWJsZVN0cmVhbVNvdXJjZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAg
ICAgICAgICBhdXRvIHZhbHVlID0gaXNBdWRpbyA/IHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2Jh
bE9iamVjdCwgUlRDRW5jb2RlZEF1ZGlvRnJhbWU6OmNyZWF0ZShXVEZNb3ZlKGZyYW1lKSkpIDog
dG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBSVENFbmNvZGVkQXVkaW9GcmFtZTo6
Y3JlYXRlKFdURk1vdmUoZnJhbWUpKSk7CisgICAgICAgICAgICByZWFkYWJsZVN0cmVhbVNvdXJj
ZS0+ZW5xdWV1ZSh2YWx1ZSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOworICAgIH0pOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjbGVhcigp
Cit7CisgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgbV9iYWNrZW5kLT5jbGVhclRyYW5zZm9y
bWFibGVGcmFtZUNhbGxiYWNrKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKKyAgICBzdG9w
UGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMx
NWQ0MGNmYzBlZDg1MDA3NDhjMGJlZmQ3MjQyN2RhYmNmYzYwZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBKU0NhbGxiYWNrRGF0YVN0cm9uZzsKK2NsYXNzIE1lc3Nh
Z2VQb3J0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFJUQ1J0cFRyYW5z
Zm9ybUJhY2tlbmQ7CitjbGFzcyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTsKKworY2xhc3Mg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyPgorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgflJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
KCk7CisKKyAgICB2b2lkIHNldENhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0
YVN0cm9uZz4mJiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0K
KyAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisgICAg
dm9pZCBzdGFydChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJik7CisgICAgdm9pZCBjbGVh
cigpOworCisgICAgdm9pZCBzdGFydFBlbmRpbmdBY3Rpdml0eSgpIHsgbV9wZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsgfQorCitwcml2YXRlOgorICAgIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8TWVzc2FnZVBv
cnQ+JiYpOworCisgICAgUmVmUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiBzdGFydFN0
cmVhbXMoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lciI7IH0KKyAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IHN0b3BQ
ZW5kaW5nQWN0aXZpdHkoKTsgfQorICAgIHZvaWQgc3RvcFBlbmRpbmdBY3Rpdml0eSgpIHsgYXV0
byBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3ZlKG1fcGVuZGluZ0FjdGl2aXR5KTsgfQorCisgICAg
UmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tE
YXRhU3Ryb25nPiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
PiBtX2JhY2tlbmQ7CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcj4+IG1fcGVuZGluZ0FjdGl2aXR5OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODc3NDU1N2QwNWRjNWEwNTAzZTllMTcyYmI5MmQ2NDdlNDkwMDk2ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisv
LyBGSVhNRTogQWRkIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCitb
CisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRXhw
b3NlZD1EZWRpY2F0ZWRXb3JrZXIsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorXSBp
bnRlcmZhY2UgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgeworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcigvKiBvcHRpb25hbCBvYmplY3QgdHJhbnNmb3Jt
T3B0aW9ucyAqLyk7CisKKyAgICAvLyBGSVhNRTogYWRkIGNvbnRyb2xsZXIgYXR0cmlidXRlLgor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXJDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTlkOWJkYjhiZTEz
NzNiZjdmZmMwZjdmMWFkOTBiODJkZjQ4NDQzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2lu
Y2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tSZXN1bHQuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lckNvbnN0cnVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXJDb25zdHJ1Y3Rvcj4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6CisgICAg
dXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOworCisgICAgdmlydHVh
bCBDYWxsYmFja1Jlc3VsdDxSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBoYW5kbGVF
dmVudCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rv
ci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTcyMWU1M2Y2YjY1NWI0ZjhhYTliMTcyZTIzYjI3MDMxNGM1N2Jm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwKQEAgLTAsMCArMSwzMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKK10gY2FsbGJhY2sgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3RvciA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3Jt
LmlkbAppbmRleCAzMzhhN2UzMDdkNjI0YzEzNGY3ODBjY2I3MTBjOGM2ODI0ZGMwZGRhLi5iOTEy
ZDAxYTZkOTk1NWEzMDRiYmIxYTVjZmQ4YTlmNTAwYzkwMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5z
Zm9ybS5pZGwKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCit0eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3IgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtKSBSVENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRpb25hbD1XRUJf
UlRDLAogICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAK
aW5kZXggYzdhYzNjNDliZDlkNzk2YjI0ODc1ZjlkOTIzMDZkM2U5M2E3NTQzYi4uM2UwMzJiNjU5
M2E3NjQzYjQ2MmQzZGZhOGUyMmZiMmIwOTQ0NmUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtMTkzLDggKzE5Mywx
MCBAQCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwU2VuZGVyOjpj
dXJyZW50VHJhbnNjZWl2ZXJEaXJlY3Rpb24oKQogICAgIHJldHVybiBzZW5kZXJUcmFuc2NlaXZl
ci0+Y3VycmVudERpcmVjdGlvbigpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5k
ZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKK0V4
Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKE9wdGlvbmFsPFJUQ1J0
cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pCiB7CisgICAgaWYgKHRyYW5zZm9ybSAmJiBtX3RyYW5z
Zm9ybSAmJiAqdHJhbnNmb3JtID09ICptX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBpZiAodHJhbnNmb3JtICYmIHRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJ0cmFuc2Zvcm0gaXMgYWxyZWFk
eSBpbiB1c2UiX3MgfTsKIApAQCAtMjA3LDYgKzIwOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBS
VENSdHBTZW5kZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5z
Zm9ybQogICAgIHJldHVybiB7IH07CiB9CiAKK09wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+IFJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKCkKK3sKKyAgICBpZiAoIW1fdHJhbnNmb3Jt
KQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3RyYW5zZm9ybS0+aW50ZXJuYWxU
cmFuc2Zvcm0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuaAppbmRleCA3MGFkOTU5MjcwYmIyYTI5YWUzNDkzYjFkMWViODA5NGE5YjUw
NWI1Li5lZGU0ZDlkYTBiODUwYThjYTlmODlhYTI0YzFjYWE1Nzg3YjlmNDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKQEAgLTgy
LDggKzgyLDggQEAgcHVibGljOgogICAgIFJUQ0RUTUZTZW5kZXIqIGR0bWYoKTsKICAgICBPcHRp
b25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3VycmVudFRyYW5zY2VpdmVyRGlyZWN0
aW9uKCkgY29uc3Q7CiAKLSAgICBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0dXJu
IG1fdHJhbnNmb3JtLmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3Jt
KFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9y
bTo6SW50ZXJuYWw+IHRyYW5zZm9ybSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5z
Zm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0
cFNlbmRlcihSVENQZWVyQ29ubmVjdGlvbiYsIFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0
cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tl
bmQ+JiYpOwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
VENSdHBTZW5kZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxSVENQZWVyQ29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZlB0cjxSVENEVE1GU2VuZGVyPiBtX2R0bWZTZW5k
ZXI7Ci0gICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgT3B0aW9u
YWw8UlRDUnRwVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKaW5kZXggODcxNDM4ZWU2NjViMjZmODBl
MTUxYzE5NWVjODc2Y2NlYWFhOTMwZS4uNDZkMzdhNzczNmYxNmRjMDc5NWI5NWQ0MDU4ZWFhOTQz
ZmRhNmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKQEAgLTM2LDggKzM2LDggQEAg
Y2xhc3MgUlRDUnRwVHJhbnNmb3JtOwogCiBjbGFzcyBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3Jt
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRDUnRw
U2VuZGVyJiBzZW5kZXIpIHsgcmV0dXJuIHNlbmRlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0YXRp
YyBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJl
ZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0VHJh
bnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRw
VHJhbnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSB7IHJl
dHVybiBzZW5kZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBPcHRpb25hbDxSVENSdHBUcmFuc2Zv
cm06OkludGVybmFsPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gc2VuZGVyLnNldFRyYW5zZm9ybShS
VENSdHBUcmFuc2Zvcm06OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAppbmRleCAzYmY1ZTVlNWMyZGY3MGY5NjMwM2Rm
OTQ5NGZjNWIzMTVjNjkzYjFkLi4zYzdmY2Y0YmQyNDI3NTZlMzFjNWRiMzhhYzk2YmI4YTFmNzQw
ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uY3BwCkBAIC0zMywxMCArMzMsMzAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+IFJUQ1J0cFRyYW5zZm9ybTo6ZnJvbShP
cHRpb25hbDxJbnRlcm5hbD4mJiBpbnRlcm5hbCkKK3sKKyAgICBpZiAoIWludGVybmFsKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBSVENSdHBUcmFuc2Zvcm0oV1RGTW92ZSgqaW50
ZXJuYWwpKTsKK30KKworUlRDUnRwVHJhbnNmb3JtOjpSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwm
JiB0cmFuc2Zvcm0pCisgICAgOiBtX3RyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCit7Cit9
CisKIFJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSgpCiB7Ci0gICAgaWYgKG1fYmFj
a2VuZCkKLSAgICAgICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICBjbGVhckJh
Y2tlbmQoKTsKK30KKworYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQoKSBjb25zdAor
eworICAgIHJldHVybiBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENS
dHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgcmV0dXJuIHNm
cmFtZVRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpOworICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRD
UnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgIHJldHVybiBz
Y3JpcHRUcmFuc2Zvcm0tPmlzQXR0YWNoZWQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSVENSdHBU
cmFuc2Zvcm06OmF0dGFjaFRvUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyKQpAQCAt
NDQsOCArNjQsMTMgQEAgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvUmVjZWl2ZXIoUlRD
UnRwUmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IHJlY2VpdmVyLmJhY2tlbmQoKSkKICAgICAgICAgbV9iYWNrZW5k
ID0gYmFja2VuZC0+Y3JlYXRlUlRDUnRwVHJhbnNmb3JtQmFja2VuZCgpOwotICAgIGlmIChtX2Jh
Y2tlbmQpCi0gICAgICAgIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoKm1fYmFja2VuZCk7
CisgICAgaWYgKG1fYmFja2VuZCkgeworICAgICAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZd
KFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAg
ICAgICAgIHNmcmFtZVRyYW5zZm9ybS0+aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9i
YWNrZW5kKTsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBz
Y3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlhbGl6
ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9iYWNrZW5kKTsKKyAgICAgICAgfSk7CisgICAgfQogfQog
CiB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIoUlRDUnRwU2VuZGVyJiBzZW5k
ZXIpCkBAIC01MywyNiArNzgsNTQgQEAgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvU2Vu
ZGVyKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IHNlbmRlci5iYWNrZW5kKCkpCiAgICAgICAgIG1fYmFja2Vu
ZCA9IGJhY2tlbmQtPmNyZWF0ZVJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQoKTsKLSAgICBpZiAobV9i
YWNrZW5kKQotICAgICAgICBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9iYWNrZW5kKTsK
KyAgICBpZiAobV9iYWNrZW5kKSB7CisgICAgICAgIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0o
UmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAgICAg
ICAgICAgc2ZyYW1lVHJhbnNmb3JtLT5pbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9iYWNr
ZW5kKTsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3Jp
cHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlhbGl6ZUJh
Y2tlbmRGb3JTZW5kZXIoKm1fYmFja2VuZCk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAotdm9p
ZCBSVENSdHBUcmFuc2Zvcm06OmRldGFjaEZyb21SZWNlaXZlcihSVENSdHBSZWNlaXZlciYpCit2
b2lkIFJUQ1J0cFRyYW5zZm9ybTo6Y2xlYXJCYWNrZW5kKCkKIHsKICAgICBpZiAoIW1fYmFja2Vu
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsK
KyAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zv
cm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgc2ZyYW1lVHJhbnNmb3JtLT53aWxsQ2xl
YXJCYWNrZW5kKCptX2JhY2tlbmQpOworICAgIH0sIFsmXShSZWZQdHI8UlRDUnRwU2NyaXB0VHJh
bnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+d2ls
bENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICB9KTsKKwogICAgIG1fYmFja2VuZCA9IG51
bGxwdHI7CiB9CiAKK3ZvaWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIoUlRD
UnRwUmVjZWl2ZXImKQoreworICAgIGNsZWFyQmFja2VuZCgpOworfQorCiB2b2lkIFJUQ1J0cFRy
YW5zZm9ybTo6ZGV0YWNoRnJvbVNlbmRlcihSVENSdHBTZW5kZXImKQogewotICAgIGlmICghbV9i
YWNrZW5kKQotICAgICAgICByZXR1cm47CisgICAgY2xlYXJCYWNrZW5kKCk7Cit9CiAKLSAgICB3
aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZCA9IG51bGxwdHI7Citi
b29sIG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBhLCBjb25zdCBSVENSdHBUcmFu
c2Zvcm0mIGIpCit7CisgICAgcmV0dXJuIHN3aXRjaE9uKGEubV90cmFuc2Zvcm0sIFsmXShjb25z
dCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtQSkgeworICAg
ICAgICByZXR1cm4gc3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENS
dHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1CKSB7CisgICAgICAgICAgICByZXR1
cm4gc2ZyYW1lVHJhbnNmb3JtQS5nZXQoKSA9PSBzZnJhbWVUcmFuc2Zvcm1CLmdldCgpOworICAg
ICAgICB9LCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mKSB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0pOworICAgIH0sIFsmXShjb25zdCBSZWZQ
dHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQSkgeworICAgICAgICBy
ZXR1cm4gc3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJh
bWVUcmFuc2Zvcm0+JikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LCBb
Jl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlwdFRyYW5zZm9ybUIp
IHsKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHRUcmFuc2Zvcm1BLmdldCgpID09IHNjcmlwdFRy
YW5zZm9ybUIuZ2V0KCk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uaAppbmRleCBkYjdmZDg0MjdmNTgwYzg2OGFhZWM0M2UwNjdhMzhmOTA3
M2NmZTBiLi42MWI5MWVhY2U4NjhjZDdhYzc0Y2M0NGMzOTJiOTVmYzBhMjliZWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3Jt
LmgKQEAgLTI3LDE4ICsyNywyMiBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKKyNpbmNsdWRl
ICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIFJUQ1J0cFRyYW5zZm9ybSA6IHB1YmxpYyBSZWZDb3VudGVkPFJU
Q1J0cFRyYW5zZm9ybT4geworY2xhc3MgUlRDUnRwVHJhbnNmb3JtICB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtKCk7CisgICAgdXNpbmcgSW50ZXJuYWwgPSBWYXJpYW50
PFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+LCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNm
b3JtPj47CisgICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gZnJvbShPcHRpb25h
bDxJbnRlcm5hbD4mJik7CisKKyAgICBleHBsaWNpdCBSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwm
Jik7CisgICAgflJUQ1J0cFRyYW5zZm9ybSgpOwogCiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29u
c3Q7CiAgICAgdm9pZCBhdHRhY2hUb1JlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJik7CkBAIC00Niwz
MCArNTAsMjEgQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoRnJvbVJlY2VpdmVyKFJUQ1J0cFJl
Y2VpdmVyJik7CiAgICAgdm9pZCBkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpOwogCisg
ICAgSW50ZXJuYWwgaW50ZXJuYWxUcmFuc2Zvcm0oKSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQor
CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mLCBjb25z
dCBSVENSdHBUcmFuc2Zvcm0mKTsKKwogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwotICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kJik7CisgICAgdm9pZCBjbGVhckJhY2tlbmQoKTsKIAotcHJvdGVjdGVkOgogICAgIFJl
ZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX2JhY2tlbmQ7CisgICAgSW50ZXJuYWwgbV90
cmFuc2Zvcm07CiB9OwogCi1pbmxpbmUgYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQo
KSBjb25zdAotewotICAgIHJldHVybiAhIW1fYmFja2VuZDsKLX0KLQotaW5saW5lIHZvaWQgUlRD
UnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kJikKLXsKLX0KLQotaW5saW5lIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXpl
QmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQotewotfQotCi1pbmxp
bmUgdm9pZCBSVENSdHBUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZCYpCitib29sIG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiwgY29uc3Qg
UlRDUnRwVHJhbnNmb3JtJik7CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJUQ1J0cFRy
YW5zZm9ybSYgYSwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBiKQogeworICAgIHJldHVybiAhKGEg
PT0gYik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2U2ZTMyODEyYmM0M2ZmMWUzZjVmYWIxMDUxNjY2ZTRlYzQz
MzVhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKLSAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X0VYUE9SVCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgUlRDUnRwVHJhbnNmb3Jt
IHsKLSAgICAvLyBGSVhNRTogQWRkIHJlYWRhYmxlL3dyaXRhYmxlIGdldHRlcnMKLSAgICAvLyBy
ZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0gcmVhZGFibGU7Ci0gICAgLy8gcmVhZG9u
bHkgYXR0cmlidXRlIFdyaXRhYmxlU3RyZWFtIHdyaXRhYmxlOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmgKaW5kZXggNDEyMTQ5MjIwMWFlNjQ2MzViODgyOTM1NDU1ZTViOGYzNzNiYmNhOS4uYWE5
MjJkMzI3OTM3NDRhYTljZTg5OTMyNjEyZjg2ZGNiNTRjNTljYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUlRDUnRwVHJhbnNmb3JtQmFja2VuZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBUcmFuc2Zvcm1CYWNrZW4KIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SVENSdHBUcmFuc2Zvcm1CYWNrZW5kKCkgPSBkZWZhdWx0OwogCi0gICAg
dXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSYm
KT47CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWU+JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtYWJs
ZUZyYW1lQ2FsbGJhY2soQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRy
YW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
VHJhbnNmb3JtZWRGcmFtZShSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUmJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lLmgKaW5kZXggNTcyNjM2MDA3ZWZjMjc2YzM5NThjMmU3MmMzOWEyMTNj
OWFmOTk5MC4uZGI1YjFmMTFjZjEzOGJiMDM2OGJmMTc3NDhhMzEzYzgyODNiMzE3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZS5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtYWJsZUZy
YW1lKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQuY3BwCmluZGV4IDAxNjJkMzBkMWZkZDMwMmEzYjVjM2VkYjM4ZGNjYjll
ZWUxMzMxMDQuLjFlNTU5NTU1NDE4ZjgxN2RjYjhkNDBmZjlkM2RmN2I1MmJjNzNmZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwCkBA
IC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykK
IAogI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIExpYldlYlJU
Q1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2FsbGJhY2soQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9pbnB1dENhbGxiYWNrTG9jayk7CiAgICAgbV9pbnB1dENhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgTGliV2ViUlRDUnRwVHJhbnNm
b3JtQmFja2VuZDo6VHJhbnNmb3JtKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlRyYW5zZm9ybWFi
CiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5wdXRDYWxsYmFja0xv
Y2spOwogICAgICAgICBpZiAobV9pbnB1dENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX2lucHV0
Q2FsbGJhY2soTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lKFdURk1vdmUocnRjRnJhbWUp
KSk7CisgICAgICAgICAgICBtX2lucHV0Q2FsbGJhY2sobWFrZVVuaXF1ZVJlZjxMaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+KFdURk1vdmUocnRjRnJhbWUpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFmYTU1ZDk0NWM1ZTcz
OTYwN2UwNTBiNDdhMWVlOWFlYjUyZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdyaXRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdyaXRhYmxlU3RyZWFtU2luaz4geworcHVibGljOgorICAgIHZpcnR1YWwgfldy
aXRhYmxlU3RyZWFtU2luaygpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCB3cml0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZXJyb3IoU3RyaW5nJiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVh
bVNpbmsuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFt
U2luay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNmMDYwMDk0YjhlY2VkN2M5Njg5ZTE1ZGJjYjQ3ZGYzYTY4
M2YwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbVNpbmsuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK1sK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgor
XSBpbnRlcmZhY2UgV3JpdGFibGVTdHJlYW1TaW5rIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gUHJvbWlzZTx1bmRlZmluZWQ+IHdyaXRlKGFueSB2YWx1ZSk7CisgICAg
dW5kZWZpbmVkIGNsb3NlKCk7CisgICAgdW5kZWZpbmVkIGVycm9yKERPTVN0cmluZyBtZXNzYWdl
KTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVkZjhkNWFiNGEwMGI3YjEyYWM0ZjBlNDQ0ODVjZTQ2
ZDI3NDkwMDkuLmIwZjg5MDg5NzMyNTRmNTQxMTM5ZjI0OWU5ODFkMmE4MjU4OGVkOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0xNTgsNiArMTU4LDkgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNw
cAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5j
b2RlZEF1ZGlvRnJhbWUuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5j
cHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
SWNlVHJhbnNwb3J0LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKQEAgLTE2NSw2ICsxNjgsOCBAQCBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uSWNlRXZlbnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3Bw
CiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCkBAIC02MjIsNiArNjI3LDcgQEAgYmluZGluZ3Mv
anMvV2ViQ29yZUpJVE9wZXJhdGlvbnMuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmNwcAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogYmlu
ZGluZ3MvanMvV2luZG93UHJveHkuY3BwCitiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAK
IGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAogYnJpZGdlL05QX2pzb2JqZWN0LmNwcAogYnJpZGdl
L2MvQ1J1bnRpbWVPYmplY3QuY3BwCkBAIC0zMjk1LDYgKzMzMDEsOCBAQCBKU1JUQ0RhdGFDaGFu
bmVsLmNwcAogSlNSVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAogSlNSVENEZWdyYWRhdGlvblByZWZl
cmVuY2UuY3BwCiBKU1JUQ0R0eFN0YXR1cy5jcHAKK0pTUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3Bw
CitKU1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcAogSlNSVENJY2VDYW5kaWRhdGUuY3BwCiBKU1JU
Q0ljZUNhbmRpZGF0ZUluaXQuY3BwCiBKU1JUQ0ljZUNhbmRpZGF0ZVR5cGUuY3BwCkBAIC0zMzIz
LDEyICszMzMxLDE0IEBAIEpTUlRDUnRwUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwUmVjZWl2ZXIu
Y3BwCiBKU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5j
cHAKK0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcAorSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5jcHAKK0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5jcHAKIEpTUlRDUnRw
U2VuZFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNlbmRlci5jcHAKIEpTUlRDUnRwU3luY2hyb25p
emF0aW9uU291cmNlLmNwcAogSlNSVENSdHBUcmFuc2NlaXZlci5jcHAKIEpTUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uY3BwCi1KU1JUQ1J0cFRyYW5zZm9ybS5jcHAKIEpTUlRDU2RwVHlwZS5j
cHAKIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAogSlNSVENTZXNzaW9uRGVzY3JpcHRpb25J
bml0LmNwcApAQCAtMzcyMSw2ICszNzMxLDcgQEAgSlNXb3JrbGV0T3B0aW9ucy5jcHAKIEpTV3Jp
dGFibGVTdHJlYW0uY3BwCiBKU1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCiBK
U1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5jcHAKK0pTV3JpdGFibGVTdHJlYW1TaW5rLmNw
cAogSlNYTUxEb2N1bWVudC5jcHAKIEpTWE1MSHR0cFJlcXVlc3QuY3BwCiBKU1hNTEh0dHBSZXF1
ZXN0RXZlbnRUYXJnZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTA0MTQ4Y2E4ZjI4ZjFkMjljMGMyNmIyZTVlZDE2NDIw
M2JjMzZiMi4uMzRjMjEyNzY0MzBkYWYzMDhiN2U0NDQwMjVlMmQyNjE2MWZmOThiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTEwNSw5ICsxMTA1LDYgQEAKIAkJNDE4MUM1Q0IyNTU1ODJFNDAwQUVCMEZGIC8qIFJUQ1J0cFRy
YW5zZm9ybWFibGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4MUM1Q0EyNTU1ODJFMzAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybWFibGVG
cmFtZS5oICovOyB9OwogCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTgxQzVDQzI1NTU4MzY4MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNm
b3JtYWJsZUZyYW1lLmggKi87IH07CiAJCTQxODFDNUQxMjU1NTg5NTYwMEFFQjBGRiAvKiBMaWJX
ZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVDRjI1NTU4OTU2MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtQmFja2VuZC5oICovOyB9OwotCQk0MTgxQzVENjI1NTVDMUI5MDBBRUIwRkYgLyog
TW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zv
cm0uaCAqLzsgfTsKLQkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9
OwotCQk0MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkYzRTky
MUMxRjg1NTUwMDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9OwogCQk0
MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQyMjU1QjRD
MjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODFDNjRBMjU1QjRDMjgwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAwRDYyMjA3IC8qIFJUQ0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1NzMsNyArNzU3MCw2IEBA
CiAJCTQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMjQyNTUyRUVBOTAwRTY1MDU1IC8qIFJUQ1J0cFJl
Y2VpdmVyK1RyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIlJUQ1J0cFJlY2Vp
dmVyK1RyYW5zZm9ybS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIy
NjI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gIlJUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDEzQzhCMjkyNTUyRjAxMzAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5z
Zm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwVHJhbnNmb3JtLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMkUyNTUyRjI3QjAwRTY1MDU1IC8qIFJU
Q1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNDOEIyRjI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIzMDI1NTJGMjdDMDBFNjUwNTUgLyogUlRDUnRwUmVj
ZWl2ZXJXaXRoVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJU
Q1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzU4Miw2ICs3NTc4LDI3IEBACiAJCTQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1v
cnlSZWxlYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVJlbGVh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTAwN0IxREIwRTcwNzAwMjM0
MUQyIC8qIE1lbW9yeVJlbGVhc2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1lbW9yeVJlbGVhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzRkM0Q0QxRkQxREQ4QzAwNTQxQzRCIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRR
dWVyeU9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTQxODlFRjI1NjJERjBDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjAyNTYyREY1NTAwMzYz
NDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE0MTg5RjEyNTYyREY1NjAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUYyMjU2MkUzMkIwMDM2MzQxNyAvKiBSVENS
dHBTY3JpcHRUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4
OUYzMjU2MkUzMkMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY0MjU2MkUzMkMwMDM2MzQx
NyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0MTg5RjUyNTYyRTMyRDAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY2MjU2MkU2
N0EwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjcyNTYyRTY3QTAw
MzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGOTI1NjQxNjUwMDAzNjM0MTcgLyog
UlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ0VuY29k
ZWRBdWRpb0ZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RkEy
NTY0MTY1MTAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSVENFbmNvZGVkVmlkZW9GcmFtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNDE4OUZCMjU2NDE3NTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGRDI1NjQxNzY2MDAzNjM0
MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE0MTg5RkUyNTY0MThFMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRBdWRpb0ZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RkYyNTY0MThFNzAwMzYz
NDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0MThBMDAyNTY0MzU5NzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtU2lu
ay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW1TaW5rLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDIyNTY0MzU5ODAwMzYzNDE3IC8qIFdy
aXRhYmxlU3RyZWFtU2luay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0
YWJsZVN0cmVhbVNpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDMy
NTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTA1MjU2NjYwQUYwMDM2MzQxNyAvKiBSVENF
bmNvZGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRD
RW5jb2RlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDYy
NTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE0NDYwQTAyNDEyOTk0MTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1OThCRTIzQzhBQUI4MDAyQjlD
QzggLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2
OTcsOSArNzcxNCw2IEBACiAJCTQxODFDNUNDMjU1NTgzNjgwMEFFQjBGRiAvKiBMaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2Vi
UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxODFDNUNFMjU1NTg5NTUwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzVDRjI1NTU4
OTU2MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg7IHBh
dGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MTgxQzVEMzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0
cFRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UlRDUnRwVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE4MUM1
RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MTgxQzYzNjI1NUFFMjYxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRy
YW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTgxQzY0MTI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzY0MjI1
NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDMwLDYgKzE3MDQ0LDE0IEBACiAJCQkJMDcyMjFCNkUx
N0NFQzMyNzAwODQ4RTUxIC8qIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsICovLAogCQkJCTQx
RkNCNzVFMjE0ODY2RkYwMDM4QURDNiAvKiBSVENEdHhTdGF0dXMuaCAqLywKIAkJCQk0MUZDQjc1
NzIxNDg2NUQxMDAzOEFEQzYgLyogUlRDRHR4U3RhdHVzLmlkbCAqLywKKwkJCQk0MTQxODlGRTI1
NjQxOEUwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwICovLAorCQkJCTQxNDE4
OUZCMjU2NDE3NTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5oICovLAorCQkJCTQx
NDE4OUY5MjU2NDE2NTAwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgKi8sCisJ
CQkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5jcHAgKi8sCisJ
CQkJNDE0MThBMDYyNTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5oICovLAorCQkJ
CTQxNDE4OUZGMjU2NDE4RTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkVmlkZW9GcmFtZS5jcHAgKi8s
CisJCQkJNDE0MTg5RkQyNTY0MTc2NjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmgg
Ki8sCisJCQkJNDE0MTg5RkEyNTY0MTY1MTAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbCAqLywKIAkJCQkwNzIyMUI3MTE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRl
LmNwcCAqLywKIAkJCQkwNzIyMUI3MjE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRl
LmggKi8sCiAJCQkJMDcyMjFCNzMxN0NFQzMyNzAwODQ4RTUxIC8qIFJUQ0ljZUNhbmRpZGF0ZS5p
ZGwgKi8sCkBAIC0xNzA5MCw2ICsxNzExMiwxNSBAQAogCQkJCTQxM0M4QjMwMjU1MkYyN0MwMEU2
NTA1NSAvKiBSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaCAqLywKIAkJCQk0MUZDQjc2MDIx
NDg2NzAwMDAzOEFEQzYgLyogUlRDUnRwUnR4UGFyYW1ldGVycy5oICovLAogCQkJCTQxRkNCNzU4
MjE0ODY1RDIwMDM4QURDNiAvKiBSVENSdHBSdHhQYXJhbWV0ZXJzLmlkbCAqLywKKwkJCQk0MTQx
ODlGNDI1NjJFMzJDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcCAqLywKKwkJ
CQk0MTQxODlGMjI1NjJFMzJCMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmggKi8s
CisJCQkJNDE0MTg5RjAyNTYyREY1NTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5p
ZGwgKi8sCisJCQkJNDE0MTg5RjMyNTYyRTMyQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmNwcCAqLywKKwkJCQk0MTQxODlGNTI1NjJFMzJEMDAzNjM0MTcgLyogUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIuaCAqLywKKwkJCQk0MTQxODlGMTI1NjJERjU2MDAzNjM0MTcgLyogUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsICovLAorCQkJCTQxNDE4OUY2MjU2MkU2N0EwMDM2MzQx
NyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmggKi8sCisJCQkJNDE0MTg5
RjcyNTYyRTY3QTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3Iu
aWRsICovLAorCQkJCTQxNDE4OUVGMjU2MkRGMEMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1Qcm92aWRlci5pZGwgKi8sCiAJCQkJNDEzQzhCMjYyNTUyRUVBOTAwRTY1MDU1IC8qIFJU
Q1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsICovLAogCQkJCTVFMkM0MzU5MUJDRUUzMEQwMDAxRTJC
QyAvKiBSVENSdHBTZW5kZXIuY3BwICovLAogCQkJCTVFMkM0MzVBMUJDRUUzMEQwMDAxRTJCQyAv
KiBSVENSdHBTZW5kZXIuaCAqLywKQEAgLTE3MTEzLDcgKzE3MTQ0LDYgQEAKIAkJCQkzMTZEQ0Ix
NzFFNzhDMzMwMDAxQjVGODcgLyogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsICovLAog
CQkJCTQxODFDNUM2MjU1NTczNTEwMEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm0uY3BwICovLAog
CQkJCTQxM0M4QjJGMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaCAqLywKLQkJ
CQk0MTNDOEIyOTI1NTJGMDEzMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmlkbCAqLywKIAkJ
CQk0MTgxQzVDQTI1NTU4MkUzMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgg
Ki8sCiAJCQkJNDE4MUM1QzgyNTU1NzNERjAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQuaCAqLywKIAkJCQk0MTBGNTY1ODI0RkNGODU0MDBBMkU1MEMgLyogUlRDU2RwVHlwZS5pZGwg
Ki8sCkBAIC0xOTI2OCw5ICsxOTI5OCw2IEBACiAJCQkJQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdD
IC8qIE1vY2tQYXltZW50TWV0aG9kLmggKi8sCiAJCQkJQTE0MDYxODkxRTJFQ0EwQTAwMzJCMzRF
IC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQlBMTQwNjE4QTFFMkVDQTBB
MDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCAqLywKLQkJCQk0MTgxQzVEMzI1
NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi8sCi0JCQkJNDE4MUM1
RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLywKLQkJCQk0MTgx
QzYzNjI1NUFFMjYxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgKi8sCiAJCQkJ
NTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaCAqLywKIAkJCQk1NzE1NjEwRDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZFRTE0RjAwOEVG
MzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLApAQCAtMTkzODcsNiArMTk0MTQs
OCBAQAogCQkJCTQxNzY2NzMwMjREQzA4RUEwMDhCRkUyOCAvKiBXcml0YWJsZVN0cmVhbURlZmF1
bHRXcml0ZXIuaWRsICovLAogCQkJCTQxNzY2NzMyMjREQzA4RUIwMDhCRkUyOCAvKiBXcml0YWJs
ZVN0cmVhbURlZmF1bHRXcml0ZXIuanMgKi8sCiAJCQkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjc1
IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzICovLAorCQkJCTQxNDE4QTAyMjU2NDM1OTgw
MDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbVNpbmsuaCAqLywKKwkJCQk0MTQxOEEwMDI1NjQzNTk3
MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1TaW5rLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
c3RyZWFtczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjgxOSw2ICsyNjg0OCw4
IEBACiAJCQkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlci5oICovLAogCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQcm94
eS5jcHAgKi8sCiAJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Lmgg
Ki8sCisJCQkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAq
LywKKwkJCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzM0
ODEsNyArMzM1MTIsNiBAQAogCQkJCTRBMEZGQTlFMUFBRjVFN0UwMDYyODAzQiAvKiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFRTc2RUMxQkU5
NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxODFDNUQ2MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2Nr
UlRDUnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxNzE4MjA1NDA3MDBG
MkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTU3MSw3ICszNTYwMSw2IEBACiAJCQkJQTEw
NEVDNUQyMjBBM0U0QjAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0RmllbGRzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBKU01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1QjgyMTU5QjNBNDAw
NjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTgx
QzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3MTU2MTE0MjM0QzdGRDYwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDI3REE3MUQxMzcz
NURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFQkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zNTU4Nyw3ICszNTYxNiw2IEBACiAJCQkJMkQ5N0YwNDcxOURE
NDEzQzAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMUFGRURFNzFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQwNjE4QjFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1By
ZXZpZXdMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE4MUM1RDcyNTU1QzQ5
QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUE1RjNCOEYxNkNDNEIzOTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxN0YwRDgyMUZGRUU5NzkwMDhFRjMwMyAvKiBTZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRDQxQzY3MjI1Njg3
NEYwMDY5Nzk0MiAvKiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCmluZGV4IDFlMTY4YjdkZGFiZjQwZTg5MWY2ZGQ1N2Jj
MDMzMDBhOWYwZWM4M2UuLjA4OWIyYjAzZDY1ZDdmZDRjMzdmNTViY2QxYTM0Y2UxM2Q0OWI4YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCkBAIC04OSw2ICs4OSwyMiBAQCB2b2lkIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVycm9yKGNvbnN0IEV4Y2VwdGlvbiYgZXhj
ZXB0aW9uKQogICAgIGludm9rZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJGdW5jdGlv
bihnbG9iYWxPYmplY3QoKSwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CiB9CiAKK2Jvb2wgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZShKU0M6OkpTVmFsdWUgdmFsdWUp
Cit7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IHRoaXMt
Pmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
OworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCgmanNDb250cm9sbGVy
KCkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOworCisgICAgYXV0byogY2xpZW50RGF0
YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5yZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZVByaXZhdGVOYW1lKCk7CisKKyAgICByZXR1cm4g
aW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGdsb2JhbE9iamVj
dCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKK30KKwogYm9vbCBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWJ1ZmZlcikgewpAQCAtMTA5LDE0ICsxMjUsNyBAQCBib29sIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCgmanND
b250cm9sbGVyKCkpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwotCi0gICAgYXV0byog
Y2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5y
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZVByaXZhdGVOYW1lKCk7Ci0KLSAg
ICByZXR1cm4gaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGds
b2JhbE9iamVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gZW5xdWV1
ZSh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuaAppbmRleCA2ZDEyMzQzNDI0NWM0YWY3NjA4YjBkOGMwZmYxOWJlYTM5OTE2OWRkLi44ODRj
MGE5YWM3NzNjOTM1M2EzNGQwZDc2ZDgwMjgzMGJjYmExMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyKEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciog
Y29udHJvbGxlcikgOiBtX2pzQ29udHJvbGxlcihjb250cm9sbGVyKSB7IH0KIAogICAgIGJvb2wg
ZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CisgICAgYm9vbCBlbnF1ZXVlKEpT
Qzo6SlNWYWx1ZSk7CiAgICAgdm9pZCBlcnJvcihjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lk
IGNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaAppbmRleCAxNGQ2ZGY0NzIxODIxY2U1OTEyZjE1OGVjNDEwMDMyOWYzNmJlMDMw
Li4wZjc0N2NkZjFlYmRkZDY5ZDQzZDgxYWM5MmM0NzQ1NmI3YTM0N2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMjAsNiAr
MjIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9u
SWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAogICAgIG1hY3JvKFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSkgXAorICAgIG1hY3JvKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSkgXAog
ICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBc
CiAgICAgbWFjcm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI5NjliZGUxNWYzOTc2OGFkMzQ2
ZTc3ZThjY2Q1MzYwYjRmNDc1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2Vz
LmgiCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVhbVNpbmsuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06
OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWZQdHI8
V3JpdGFibGVTdHJlYW1TaW5rPiYmIHNpbmspCit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisKKyAgICBhdXRvKiBjb25z
dHJ1Y3RvciA9IEpTQzo6YXNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5Xcml0YWJsZVN0cmVhbVByaXZhdGVOYW1l
KCkpKTsKKworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNv
bnN0cnVjdG9yKTsKKyAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpU
eXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5h
cHBlbmQoc2luayA/IHRvSlNOZXdseUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9i
YWxPYmplY3QsIHNpbmsucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzVW5kZWZpbmVkKCkpOwor
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgSlNPYmplY3QqIG9iamVj
dCA9IEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29u
c3RydWN0RGF0YSwgYXJncyk7CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0LCAq
anNDYXN0PEpTV3JpdGFibGVTdHJlYW0qPihvYmplY3QpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVkYjgwNTg5YzAy
ZjA2ZjFkODQ0NDUxOWIzNjNjMGRhZWVmYjRiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgKQEAgLTAsMCArMSw4NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIK
KyNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgV3JpdGFibGVTdHJlYW1TaW5rOworCitjbGFzcyBXcml0YWJsZVN0cmVhbSBmaW5hbCA6
IHB1YmxpYyBET01HdWFyZGVkPEpTV3JpdGFibGVTdHJlYW0+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFdyaXRhYmxlU3RyZWFtPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNXcml0YWJsZVN0cmVhbSYganNTdHJlYW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V3JpdGFibGVTdHJlYW0oZ2xvYmFsT2JqZWN0LCBqc1N0cmVhbSkpOyB9CisKKyAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBSZWZQdHI8V3JpdGFibGVTdHJlYW1TaW5rPiYmKTsKKyAgICBKU1dyaXRhYmxlU3RyZWFt
KiB3cml0YWJsZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQorCitwcml2YXRl
OgorICAgIFdyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNXcml0YWJsZVN0cmVh
bSYpOworfTsKKworc3RydWN0IEpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyIHsKKyAg
ICBzdGF0aWMgUmVmUHRyPFdyaXRhYmxlU3RyZWFtPiB0b1dyYXBwZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4odm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgaWYgKCFnbG9iYWxP
YmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvKiBXcml0
YWJsZVN0cmVhbSA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4odm0sIHZh
bHVlKTsKKyAgICAgICAgaWYgKCFXcml0YWJsZVN0cmVhbSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIHJldHVybiBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9iYWxP
YmplY3QsICpXcml0YWJsZVN0cmVhbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdyaXRhYmxlU3RyZWFtPiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXcml0YWJsZVN0cmVhbVdyYXBwZXJDb252ZXJ0ZXI7CisgICAgdXNp
bmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFJlZlB0cjxXcml0YWJsZVN0cmVhbT47CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOworfTsKKworaW5saW5lIFdyaXRh
YmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU1dyaXRhYmxlU3RyZWFtJiBXcml0YWJsZVN0cmVhbSkKKyAgICA6IERPTUd1YXJkZWQ8SlNX
cml0YWJsZVN0cmVhbT4oZ2xvYmFsT2JqZWN0LCBXcml0YWJsZVN0cmVhbSkKK3sKK30KKworaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgV3JpdGFibGVTdHJlYW0qIHN0cmVhbSkKK3sKKyAgICByZXR1cm4gc3RyZWFtID8g
c3RyZWFtLT53cml0YWJsZVN0cmVhbSgpIDogSlNDOjpqc1VuZGVmaW5lZCgpOworfQorCitpbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgUmVmPFdyaXRhYmxlU3RyZWFtPiYmIHN0cmVhbSkKK3sKKyAgICBy
ZXR1cm4gc3RyZWFtLT53cml0YWJsZVN0cmVhbSgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBhOWRhOTQ1MjhmMWI0MGZjYmRlODlmYTBjNTRl
MmVkZjE5ODk4OGIyLi4xYzkyOWQ4MGRlNWViZmVlMDQwZmI1ODA3OGNkYzcxZTc2YzE4ZTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTM4LDYgKzM4LDcg
QEAgUmVtb3RlUGxheWJhY2sgY29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUCiBS
VENEYXRhQ2hhbm5lbCBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENEVE1GU2VuZGVyIGNvbmRpdGlv
bmFsPVdFQl9SVEMKIFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPVdFQl9SVEMKK1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybSBjb25kaXRpb25hbD1XRUJfUlRDCiBTZXJ2aWNlV29ya2VyIGNvbmRp
dGlvbmFsPVNFUlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGNvbmRpdGlvbmFs
PVNFUlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgY29uZGl0aW9uYWw9U0VS
VklDRV9XT1JLRVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlM2RmZTc5
NTE2YzM1OWFkODQwNzdiZjVmZTg1MmZiOTFmN2UzZWQwLi5hZDYzN2ZmNDRmOTZmMGI1NGUxZjE2
ZDgzZDE5OGQ2YTM0MzBhNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC0xMzgsNyArMTM4LDYgQEAKICNpbmNsdWRlICJNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJNb2NrUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJNb2NrUGFnZU92ZXJs
YXlDbGllbnQuaCIKLSNpbmNsdWRlICJNb2NrUlRDUnRwVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAi
TmF2aWdhdG9yQmVhY29uLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIgpAQCAtMTU3NywxMSArMTU3Niw2IEBA
IHZvaWQgSW50ZXJuYWxzOjpzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2wgdmFsdWUpCiAjZW5k
aWYKIH0KIAotUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IEludGVybmFsczo6Y3JlYXRlTW9ja1JU
Q1J0cFRyYW5zZm9ybSgpCi17Ci0gICAgcmV0dXJuIE1vY2tSVENSdHBUcmFuc2Zvcm06OmNyZWF0
ZSgpOwotfQotCiB1aW50NjRfdCBJbnRlcm5hbHM6OnNmcmFtZUNvdW50ZXIoY29uc3QgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgcmV0dXJuIHRyYW5zZm9ybS5jb3Vu
dGVyRm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjgzN2Mz
YjNhMDRkMzYwMzA1N2RlMjc1NDAyM2FlNzI3ZmVlYTkyZi4uMThjNDVlYmMzNjMwZTk0YTk3YjAy
ZDYzNDQ3ZGFmNGQwZWQyN2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJIRVZDVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJNb2NrUlRDUnRwVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgpAQCAt
NjEwLDcgKzYwOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYlJUQ0gyNjVTdXBwb3J0KGJv
b2wpOwogICAgIHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sKTsKICAgICB2b2lkIHNldFdl
YlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCk7Ci0gICAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IGNy
ZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKICAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVyKGNv
bnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgc2V0RW5hYmxlV2ViUlRDRW5j
cnlwdGlvbihib29sKTsKICAgICB2b2lkIHNldFVzZURUTFMxMChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhZTNhNjFmY2EwM2RjNGI2Njc0NzNkMDA1ZjgyOGUx
NWUwYjk5ODNhLi41NDNhOTU0MGVjNGM2MzRhY2JhM2VlYzY2MThmMDM2NjE2NjFjYzRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04MDIsNyArODAyLDYgQEAgZW51bSBU
cmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENI
MjY1U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1
bmRlZmluZWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25k
aXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29sZWFu
IGFsbG93ZWQpOwotICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSBNb2NrUlRDUnRwVHJhbnNmb3Jt
IGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10g
dW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRy
YW5zZm9ybSk7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0
TW9ja0F1ZGlvVHJhY2tDaGFubmVsTnVtYmVyKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIHVuc2ln
bmVkIHNob3J0IGNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1JUQ1J0cFRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBU
cmFuc2Zvcm0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDNhMTZhODRlOGVk
OWEyN2Q4MGMxNGFiOGZjZjg1YjMwMmZiZDY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5z
Zm9ybS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJNb2NrUlRDUnRwVHJhbnNmb3JtLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1JUQykKLQotI2lu
Y2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9ja1JUQ1J0cFRyYW5zZm9ybWVyLCBXVEY6
OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNb2Nr
UlRDUnRwVHJhbnNmb3JtZXI+IGNyZWF0ZShSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBi
YWNrZW5kKQotICAgIHsKLSAgICAgICAgYXV0byB0cmFuc2Zvcm1lciA9IGFkb3B0UmVmKCpuZXcg
TW9ja1JUQ1J0cFRyYW5zZm9ybWVyKFdURk1vdmUoYmFja2VuZCkpKTsKLSAgICAgICAgdHJhbnNm
b3JtZXItPm1fYmFja2VuZC0+c2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3RyYW5zZm9y
bWVyXShhdXRvJiYgZnJhbWUpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0o
V1RGTW92ZShmcmFtZSkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVy
OwotICAgIH0KLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9iYWNrZW5kLT5j
bGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Ci0gICAgICAgIG1fYmFja2VuZCA9IG51
bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCB0cmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtYWJsZUZy
YW1lJiYgZnJhbWUpCi0gICAgewotICAgICAgICBtX2lzUHJvY2Vzc2luZyA9IHRydWU7Ci0KLSAg
ICAgICAgYXV0byBkYXRhID0gZnJhbWUuZGF0YSgpOwotICAgICAgICBWZWN0b3I8dWludDhfdD4g
dHJhbnNmb3JtZWREYXRhOwotICAgICAgICBzaXplX3Qgc3RhcnQgPSBtX2lzQXVkaW8gPyAwIDog
MTAwOwotICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHN0YXJ0OyArK2NwdHIp
Ci0gICAgICAgICAgICB0cmFuc2Zvcm1lZERhdGEuYXBwZW5kKGRhdGEuZGF0YVtjcHRyXSk7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGNwdHIgPSBzdGFydDsgY3B0ciA8IGRhdGEuc2l6ZTsgKytjcHRy
KQotICAgICAgICAgICAgdHJhbnNmb3JtZWREYXRhLmFwcGVuZCgyNTYgLSBkYXRhLmRhdGFbY3B0
cl0pOwotICAgICAgICBmcmFtZS5zZXREYXRhKHsgdHJhbnNmb3JtZWREYXRhLmRhdGEoKSwgZGF0
YS5zaXplIH0pOwotCi0gICAgICAgIG1fYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUo
V1RGTW92ZShmcmFtZSkpOwotICAgIH0KLQotICAgIGJvb2wgaXNQcm9jZXNzaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1Byb2Nlc3Npbmc7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2Nr
UlRDUnRwVHJhbnNmb3JtZXIoUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2VuZCkK
LSAgICAgICAgOiBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKLSAgICAgICAgLCBtX2lzU2Vu
ZGVyKG1fYmFja2VuZC0+c2lkZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OlNpZGU6OlNl
bmRlcikKLSAgICAgICAgLCBtX2lzQXVkaW8obV9iYWNrZW5kLT5tZWRpYVR5cGUoKSA9PSBSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kOjpNZWRpYVR5cGU6OkF1ZGlvKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4gbV9iYWNrZW5kOwotICAgIGJvb2wgbV9p
c1NlbmRlcjsKLSAgICBib29sIG1faXNBdWRpbzsKLSAgICBib29sIG1faXNQcm9jZXNzaW5nIHsg
ZmFsc2UgfTsKLX07Ci0KLU1vY2tSVENSdHBUcmFuc2Zvcm06Ok1vY2tSVENSdHBUcmFuc2Zvcm0o
KQotewotfQotCi1Nb2NrUlRDUnRwVHJhbnNmb3JtOjp+TW9ja1JUQ1J0cFRyYW5zZm9ybSgpCi17
Ci19Ci0KLWJvb2wgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6aXNQcm9jZXNzaW5nKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV90cmFuc2Zvcm1lciA/IG1fdHJhbnNmb3JtZXItPmlzUHJvY2Vzc2luZygp
IDogZmFsc2U7Ci19Ci0KLXZvaWQgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tl
bmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQotewotICAgIG1f
dHJhbnNmb3JtZXIgPSBNb2NrUlRDUnRwVHJhbnNmb3JtZXI6OmNyZWF0ZShiYWNrZW5kKTsKLX0K
LQotdm9pZCBNb2NrUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQotewotICAgIG1fdHJhbnNmb3JtZXIgPSBN
b2NrUlRDUnRwVHJhbnNmb3JtZXI6OmNyZWF0ZShiYWNrZW5kKTsKLX0KLQotdm9pZCBNb2NrUlRD
UnRwVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQot
ewotICAgIG1fdHJhbnNmb3JtZXItPmNsZWFyKCk7Ci0gICAgbV90cmFuc2Zvcm1lciA9IG51bGxw
dHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNm
b3JtLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5OTRkZmY3MTc0MzIzNTM1MWY4ZjBhMzM5NmZj
NTlhMWNhZDI5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfUlRDKQotCi0jaW5jbHVk
ZSAiUlRDUnRwVHJhbnNmb3JtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTW9j
a1JUQ1J0cFRyYW5zZm9ybWVyOwotCi1jbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtIGZpbmFsIDog
cHVibGljIFJUQ1J0cFRyYW5zZm9ybSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNb2NrUlRD
UnRwVHJhbnNmb3JtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tSVENSdHBU
cmFuc2Zvcm0oKSk7IH0KLSAgICB+TW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgYm9vbCBp
c1Byb2Nlc3NpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBNb2NrUlRDUnRwVHJhbnNmb3Jt
KCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIo
UlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgd2lsbENsZWFyQmFja2Vu
ZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0KLSAgICBSZWZQdHI8TW9ja1JUQ1J0
cFRyYW5zZm9ybWVyPiBtX3RyYW5zZm9ybWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGU2MzE4NzYwNTk0YjY5ZjI3YTAxZDY1ZTA4ODk4MDVmMzM3NDFjMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tSVENSdHBUcmFuc2Zvcm0uaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJfUlRDLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKLSAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNl
IE1vY2tSVENSdHBUcmFuc2Zvcm0gOiBSVENSdHBUcmFuc2Zvcm0gewotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIGlzUHJvY2Vzc2luZzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGVmMWQ4YmNh
ZGEyNWJjMjVmMTUxN2U3ODg5ZTI0MWMzZTQ5ZTNkYWUuLjE1OTljY2M5M2U0NjJkMjBlNjliM2Q5
MTRhNjkwNTA3M2E3YWI3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0zNSw3ICszNSwxMCBAQAogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
IkpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlICJKU1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNs
dWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIgogI2luY2x1ZGUgIlJlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKQEAgLTExMiw0ICsxMTUsNzIgQEAgdm9pZCBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZTo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUoQ2FsbGJhY2tJZCBjYWxsYmFj
a0lkKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyKFN0cmluZyYmIG5hbWUsIFJlZjxKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0
b3I+JiYgdHJhbnNmb3JtZXJDb25zdHJ1Y3RvcikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTmFtZSBjYW5ub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJf
cyB9OworCisgICAgaWYgKG1fcnRjUnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcC5jb250YWlu
cyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAi
QSB0cmFuc2Zvcm1lciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07
CisKKyAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gdHJhbnNmb3JtZXJDb25zdHJ1
Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0ganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKHZtKSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNsYXNzIGRlZmluaXRpdGlvbiBwYXNzZWQgdG8g
cmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigpIGlzIG5vdCBhIGNvbnN0cnVjdG9yIl9z
IH07CisKKyAgICBhdXRvIHByb3RvdHlwZSA9IGpzQ29uc3RydWN0b3ItPmdldFByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworCisgICAgaWYgKCFwcm90b3R5cGUuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNsYXNzIGRl
ZmluaXRpdGlvbiBwYXNzZWQgdG8gcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigpIGhh
cyBpbnZhbGlkIHByb3RvdHlwZSJfcyB9OworCisgICAgbV9ydGNSdHBUcmFuc2Zvcm1lckNvbnN0
cnVjdG9yTWFwLmFkZChuYW1lLCBXVEZNb3ZlKHRyYW5zZm9ybWVyQ29uc3RydWN0b3IpKTsKKwor
ICAgIHRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkucG9zdFRhc2tUb1dvcmtlck9iamVjdChb
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKGF1dG8mIHdvcmtlcikgbXV0YWJsZSB7CisgICAg
ICAgIHdvcmtlci5hZGRSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihXVEZNb3ZlKG5hbWUpKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiB7IH07Cit9CisKK1JlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lcj4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKFN0cmluZyYmIG5hbWUsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCkKK3sKKyAg
ICBhdXRvIGNvbnN0cnVjdG9yID0gbV9ydGNSdHBUcmFuc2Zvcm1lckNvbnN0cnVjdG9yTWFwLmdl
dChuYW1lKTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3IpOworICAgIGlmICghY29uc3RydWN0b3Ip
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGNv
bnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKKyAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmdsb2JhbE9iamVjdCgpOworICAg
IGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrIHsgZ2xvYmFsT2Jq
ZWN0IH07CisKKyAgICBtX3BlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQgPSBNZXNzYWdl
UG9ydDo6ZW50YW5nbGUoKnRoaXMsIFdURk1vdmUocG9ydCkpOworCisgICAgSlNDOjpNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0KGds
b2JhbE9iamVjdCwganNDb25zdHJ1Y3RvciwgYXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3QgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIiKTsKKyAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAhb2JqZWN0KTsKKworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvJiBqc1RyYW5z
Zm9ybWVyID0gKkpTQzo6anNDYXN0PEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIqPihvYmplY3Qp
OworICAgIGF1dG8mIHRyYW5zZm9ybWVyID0ganNUcmFuc2Zvcm1lci53cmFwcGVkKCk7CisgICAg
dHJhbnNmb3JtZXIuc2V0Q2FsbGJhY2sobWFrZVVuaXF1ZTxKU0NhbGxiYWNrRGF0YVN0cm9uZz4o
JmpzVHJhbnNmb3JtZXIsIGdsb2JhbE9iamVjdCkpOworCisgICAgcmV0dXJuICZ0cmFuc2Zvcm1l
cjsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBjYWFk
NGNlYmE1OGJhODMzMmQ1ZTlhNjAzZGUxMjYyNjNkYWVhNzU3Li4wMThmNGFhMDk1NTRmMjc4NzFh
ZTQ5YjhhODljYTJmNDUwZDRkNGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC00NCw3ICs0NCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
OwogY2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkOworY2xhc3MgSlNSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lckNvbnN0cnVjdG9yOwogY2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lcjsKIGNsYXNzIFJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrOwogY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCkBAIC01NCw2ICs1Niw4IEBAIGNsYXNzIFdvcmtl
ckFuaW1hdGlvbkNvbnRyb2xsZXI7CiB1c2luZyBDYWxsYmFja0lkID0gaW50OwogI2VuZGlmCiAK
K3VzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXI+OworCiBjbGFz
cyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1YmxpYyBXb3JrZXJHbG9iYWxT
Y29wZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZSk7CiBwdWJsaWM6CkBAIC03MSw2ICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5j
ZWxBbmltYXRpb25GcmFtZShDYWxsYmFja0lkKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9S
VEMpCisgICAgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiBjcmVhdGVSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lcihTdHJpbmcmJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCk7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJiwg
UmVmPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvcj4mJik7CisgICAgUmVmUHRy
PE1lc3NhZ2VQb3J0PiB0YWtlUGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydCgpIHsgcmV0
dXJuIFdURk1vdmUobV9wZW5kaW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0KTsgfQorI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgdXNpbmcgQmFzZSA9IFdvcmtlckdsb2JhbFNjb3BlOwogCkBAIC04
NSw2ICs5NSwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQogICAg
IFJlZlB0cjxXb3JrZXJBbmltYXRpb25Db250cm9sbGVyPiBtX3dvcmtlckFuaW1hdGlvbkNvbnRy
b2xsZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvcj4+IG1fcnRjUnRwVHJh
bnNmb3JtZXJDb25zdHJ1Y3Rvck1hcDsKKyAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG1fcGVuZGlu
Z1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmlkbAppbmRleCAyZDBjZTgyOTUxZmJlOTk3YThiYjU4YTdkNmI4ZjgzZGY2
MTU2NzcxLi44Y2UzODQyYzI4MzVmMTc4MjMyODFjNTRjMzY3MDI1N2ZmNTEzNGZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmlkbApAQCAtNDgsMyArNDgsNSBAQAogfTsKIAogW0NvbmRpdGlvbmFsPU9GRlNDUkVFTl9DQU5W
QVMsIEVuYWJsZWRBdFJ1bnRpbWU9T2Zmc2NyZWVuQ2FudmFzXSBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZSBpbmNsdWRlcyBBbmltYXRpb25GcmFtZVByb3ZpZGVyOworLy8gRklYTUU6IEVuYWJs
ZSB0aGlzIGJhc2VkIG9uIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zIHNldHRpbmcuCitbQ29uZGl0
aW9uYWw9V0VCX1JUQ10gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgaW5jbHVkZXMgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXgg
ODA4MzM1ZDAyNzQxZmM5ODM5NWQ5Y2QyNzllYmU1OWMyMzMwMGUxNC4uNjJmOTE3YTM2NzgxOWRl
YzNjZDQxMGQ5NzY2OTVjZWU2MmY2ZDRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGVQcm94eS5oIgpAQCAtMjMwLDQgKzIzMSwyOCBAQCB2b2lkIFdvcmtlcjo6
ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKFdFQl9S
VEMpCit2b2lkIFdvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoU3RyaW5nJiYgbmFt
ZSkKK3sKKyAgICBtX3RyYW5zZm9ybWVycy5hZGQoV1RGTW92ZShuYW1lKSk7Cit9CisKK3ZvaWQg
V29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb25zdCBTdHJpbmcmIG5hbWUs
IFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgUlRDUnRwU2NyaXB0VHJhbnNmb3JtJiB0cmFu
c2Zvcm0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fY29udGV4dFByb3h5LnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShb
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBvcnQsIHRyYW5zZm9ybSA9IG1ha2VSZWYodHJh
bnNmb3JtKV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgIHRyYW5zZm9ybS0+c2V0
VHJhbnNmb3JtZXIoZG93bmNhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFdURk1vdmUobmFtZSksIHBvcnQpKTsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbdHJhbnNmb3JtID0gV1RGTW92ZSh0cmFuc2Zvcm0pXSB7
IH0pOworICAgIH0pOworCit9CisKK3ZvaWQgV29ya2VyOjpwb3N0VGFza1RvV29ya2VyR2xvYmFs
U2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgdGFzaykKK3sK
KyAgICBtX2NvbnRleHRQcm94eS5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoV1RGTW92ZSh0
YXNrKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmgKaW5kZXggNjdmNGIyYjU4YWI1YWRlZmY2ZmNkMWNkOTU5ZDRiNjNiOWZmNTk1ZC4u
NTNmNWU2ZmZmMjdjOWZhM2U1YzBlMDFmMGY2YzQyYzZjYjZmOWQwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEpTVmFsdWU7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOworY2xhc3MgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGVQcm94eTsKIGNsYXNzIFdvcmtlclNjcmlwdExvYWRlcjsKQEAgLTcwLDYg
KzcyLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpIGZpbmFs
OwogCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgdm9pZCBhZGRSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lcihTdHJpbmcmJik7CisgICAgYm9vbCBoYXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb25z
dCBTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIG1fdHJhbnNmb3JtZXJzLmNvbnRhaW5zKG5hbWUpOyB9
CisgICAgdm9pZCBjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb25zdCBTdHJpbmcmLCBU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LCBSVENSdHBTY3JpcHRUcmFuc2Zvcm0mKTsKKyAgICB2b2lk
IHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXb3JrZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6UnVudGltZUZsYWdzLCBjb25zdCBPcHRpb25z
Jik7CiAKQEAgLTEwMCw2ICsxMDksOSBAQCBwcml2YXRlOgogICAgIEpTQzo6UnVudGltZUZsYWdz
IG1fcnVudGltZUZsYWdzOwogICAgIERlcXVlPFJlZlB0cjxFdmVudD4+IG1fcGVuZGluZ0V2ZW50
czsKICAgICBib29sIG1fd2FzVGVybWluYXRlZCB7IGZhbHNlIH07CisjaWYgRU5BQkxFKFdFQl9S
VEMpCisgICAgSGFzaFNldDxTdHJpbmc+IG1fdHJhbnNmb3JtZXJzOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGVQcm94eS5oCmluZGV4IDU2ZGExMjA3Yjc3NzlmMmVhN2JhZTZhYjczNmY5ZDJj
OTU0ZjcyNDQuLjQwMDAzYzNlMDEwOTk5NjBmNjQ3ODYxZTcwMTY4N2QwZTM3MWQ3MmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCkBAIC0z
MywxMSArMzMsMTMgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+CisjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7Citj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2VyOwogZW51bSBjbGFzcyBS
ZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7CiAKQEAgLTQ5LDYgKzUxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJM
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25s
aW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVycmVyUG9saWN5LCBKU0M6
OlJ1bnRpbWVGbGFncykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9i
YWxTY29wZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2Jh
bFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09ubGlu
ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcAppbmRleCBhNjFiNDE0ODYzM2JkZjIwZDUyYmU1NzY0ZGE5YjU1NGUxNjEwZDdkLi4xMWZl
MDZmYzZhMzZkODRjZTdjMmVhZWVmMzllY2Y2MTQ5NDIzNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMTEwLDI0ICsxMTAsMzgg
QEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG0KICAgICB9KTsKIH0KIAotdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYgbWVzc2FnZSkKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
VG9Xb3JrZXJPYmplY3QoRnVuY3Rpb248dm9pZChXb3JrZXImKT4mJiBmdW5jdGlvbikKIHsKLSAg
ICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47CisgICAgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBhdXRvKiB3b3JrZXJPYmplY3QgPSB0aGlz
LT53b3JrZXJPYmplY3QoKTsKKyAgICAgICAgaWYgKCF3b3JrZXJPYmplY3QgfHwgYXNrZWRUb1Rl
cm1pbmF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmdW5jdGlvbigqd29ya2Vy
T2JqZWN0KTsKKyAgICB9KTsKK30KIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
dGFzayhbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBv
c3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1l
c3NhZ2UpCit7CisgICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKFttZXNzYWdlID0gV1RG
TW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQuaXNXb3JrZXJHbG9i
YWxTY29wZSgpKTsKICAgICAgICAgYXV0byYgY29udGV4dCA9IHN0YXRpY19jYXN0PERlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlJj4oc2NyaXB0Q29udGV4dCk7CiAgICAgICAgIGF1dG8gcG9ydHMg
PSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3Nh
Z2UudHJhbnNmZXJyZWRQb3J0cykpOwogICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNl
Tm9uTnVsbCgpKSk7CiAgICAgICAgIGNvbnRleHQudGhyZWFkKCkud29ya2VyT2JqZWN0UHJveHko
KS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29udGV4dC5oYXNQZW5kaW5nQWN0aXZp
dHkoKSk7CiAgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNr
VG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KT4mJiB0YXNrKQoreworICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCisgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX3dvcmtlclRocmVhZCkgewotICAgICAgICArK21fdW5jb25maXJtZWRN
ZXNzYWdlQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2so
V1RGTW92ZSh0YXNrKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKCFtX3dvcmtlclRocmVhZCkgewog
ICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlxdWU8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKKyAgICBtX3dvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIFdvcmtlck1lc3Nh
Z2luZ1Byb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggM2JiNGQ5ZDgxNWEyMDkxNGFk
OWYyNWIzNGE4N2NhOTFlMWM4NWJhZC4uYzViNTc1YjllNjE1YjNmM2Y1OTZiZmMzZGY2ODNjODc3
Y2M2MmJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1l
T3JpZ2luLCBSZWZlcnJlclBvbGljeSwgSlNDOjpSdW50aW1lRmxhZ3MpIGZpbmFsOwogICAgIHZv
aWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKICAgICB2b2lkIHBvc3RNZXNz
YWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsK
KyAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdvcmtlck9iamVjdERlc3Ryb3llZCgpIGZpbmFs
OwogICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUpIGZpbmFs
OwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIFdv
cmtlck9iamVjdFByb3h5LgogICAgIC8vIChPbmx5IHVzZSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhl
IHdvcmtlciBjb250ZXh0IHRocmVhZC4pCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2Jq
ZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOworICAgIHZvaWQgcG9zdFRhc2tU
b1dvcmtlck9iamVjdChGdW5jdGlvbjx2b2lkKFdvcmtlciYpPiYmKSBmaW5hbDsKICAgICB2b2lk
IHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KSBmaW5hbDsKICAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7CiAgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHko
Ym9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPYmplY3RQcm94eS5oCmluZGV4IDI4MDEzMTRlMzcyZDMwZWU5YWNiZTU0Yjk4Njk5ZGNl
ZGY3OGY5Y2EuLjhlOTFlYzc5NDRmMzI1OWI2N2Q1ZTRhNTU4NWQ4NTQ0Y2JjZjcyODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgKQEAgLTMyLDE0ICszMiwx
OSBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaCIKICNpbmNsdWRlICJX
b3JrZXJSZXBvcnRpbmdQcm94eS5oIgorCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdvcmtlcjsKKwog
Ly8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgb2JqZWN0LgogY2xhc3MgV29ya2VyT2Jq
ZWN0UHJveHkgOiBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJveHkgewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb1dvcmtlck9iamVjdChGdW5j
dGlvbjx2b2lkKFdvcmtlciYpPiYmKSB7IH07CiAKICAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1l
c3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSkgPSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGI5MjJjMmIwMTcwZjZlMTUzNzU5YzU0ZDZiN2U3NTdhZmZjODQyMTcu
LmU3NTdkOWU3Njk3MWIxMGJjMGZlZWFhNjgzMjM1YzFlOTMxMGM3ZDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNSBAQAorMjAyMC0xMS0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMv
cm91dGluZXMuanM6IEFkZGVkLgorICAgICAgICAoY3JlYXRlQ29ubmVjdGlvbnMpOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzOiBBZGRlZC4KKyAgICAgICAg
KE1vY2tSVENSdHBUcmFuc2Zvcm1lcik6CisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNmb3JtZXIu
cHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lci5wcm90b3R5
cGUucHJvY2Vzcyk6CisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRy
YW5zZm9ybS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvd2VicnRjLXRy
YW5zZm9ybS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy93ZWJydGMvd2Vi
cnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3dl
YnJ0Yy10cmFuc2Zvcm0uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3dlYnJ0Yy93ZWJy
dGMtdHJhbnNmb3JtLmh0bWwuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAqIHdlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzOiBBZGRlZC4KKyAgICAg
ICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lcik6CisgICAgICAgIChNb2NrUlRDUnRwVHJhbnNmb3Jt
ZXIucHJvdG90eXBlLnN0YXJ0KToKKwogMjAyMC0xMS0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyIHNob3VsZCBu
b3QgYmUgZXhwb3NlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Jv
dXRpbmVzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3JvdXRpbmVzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ4ZGI3MmY2NWQxNzY5NjFlYTc5N2M5ZGM0ODJiZDBiNTFlZjkzYjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvcm91dGluZXMuanMKQEAgLTAs
MCArMSwyOTkgQEAKKy8vIFRlc3QgaW5zcGlyZWQgZnJvbSBodHRwczovL3dlYnJ0Yy5naXRodWIu
aW8vc2FtcGxlcy8KK3ZhciBsb2NhbENvbm5lY3Rpb247Cit2YXIgcmVtb3RlQ29ubmVjdGlvbjsK
KworZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvbnMoc2V0dXBMb2NhbENvbm5lY3Rpb24sIHNldHVw
UmVtb3RlQ29ubmVjdGlvbiwgb3B0aW9ucyA9IHsgfSkgeworICAgIGxvY2FsQ29ubmVjdGlvbiA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHJlbW90ZUNvbm5lY3Rpb24gPSBuZXcgUlRD
UGVlckNvbm5lY3Rpb24oKTsKKyAgICByZW1vdGVDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0g
KGV2ZW50KSA9PiB7IGljZUNhbGxiYWNrMihldmVudCwgb3B0aW9ucy5maWx0ZXJPdXRJQ0VDYW5k
aWRhdGUpIH07CisKKyAgICBsb2NhbENvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQp
ID0+IHsgaWNlQ2FsbGJhY2sxKGV2ZW50LCBvcHRpb25zLmZpbHRlck91dElDRUNhbmRpZGF0ZSkg
fTsKKworICAgIFByb21pc2UucmVzb2x2ZShzZXR1cExvY2FsQ29ubmVjdGlvbihsb2NhbENvbm5l
Y3Rpb24pKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzZXR1
cFJlbW90ZUNvbm5lY3Rpb24ocmVtb3RlQ29ubmVjdGlvbikpOworICAgIH0pLnRoZW4oKCkgPT4g
eworICAgICAgICBsb2NhbENvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKS50aGVuKChkZXNjKSA9PiBn
b3REZXNjcmlwdGlvbjEoZGVzYywgb3B0aW9ucyksIG9uQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9u
RXJyb3IpOworICAgIH0pOworCisgICAgcmV0dXJuIFtsb2NhbENvbm5lY3Rpb24sIHJlbW90ZUNv
bm5lY3Rpb25dCit9CisKK2Z1bmN0aW9uIGNsb3NlQ29ubmVjdGlvbnMoKQoreworICAgIGxvY2Fs
Q29ubmVjdGlvbi5jbG9zZSgpOworICAgIHJlbW90ZUNvbm5lY3Rpb24uY2xvc2UoKTsKK30KKwor
ZnVuY3Rpb24gb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25FcnJvcihlcnJvcikKK3sKKyAgICBh
c3NlcnRfdW5yZWFjaGVkKCk7Cit9CisKK2Z1bmN0aW9uIGdvdERlc2NyaXB0aW9uMShkZXNjLCBv
cHRpb25zKQoreworICAgIGlmIChvcHRpb25zLm9ic2VydmVPZmZlcikgeworICAgICAgICBjb25z
dCByZXN1bHQgPSBvcHRpb25zLm9ic2VydmVPZmZlcihkZXNjKTsKKyAgICAgICAgaWYgKHJlc3Vs
dCkKKyAgICAgICAgICAgIGRlc2MgPSByZXN1bHQ7CisgICAgfQorCisgICAgbG9jYWxDb25uZWN0
aW9uLnNldExvY2FsRGVzY3JpcHRpb24oZGVzYyk7CisgICAgcmVtb3RlQ29ubmVjdGlvbi5zZXRS
ZW1vdGVEZXNjcmlwdGlvbihkZXNjKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmVtb3RlQ29ubmVj
dGlvbi5jcmVhdGVBbnN3ZXIoKS50aGVuKChkZXNjKSA9PiBnb3REZXNjcmlwdGlvbjIoZGVzYywg
b3B0aW9ucyksIG9uQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRXJyb3IpOworICAgIH0pOworfQor
CitmdW5jdGlvbiBnb3REZXNjcmlwdGlvbjIoZGVzYywgb3B0aW9ucykKK3sKKyAgICBpZiAob3B0
aW9ucy5vYnNlcnZlQW5zd2VyKQorICAgICAgICBvcHRpb25zLm9ic2VydmVBbnN3ZXIoZGVzYyk7
CisKKyAgICByZW1vdGVDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oZGVzYyk7CisgICAg
bG9jYWxDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2MpOworfQorCitmdW5jdGlv
biBpY2VDYWxsYmFjazEoZXZlbnQsIGZpbHRlck91dElDRUNhbmRpZGF0ZSkKK3sKKyAgICBpZiAo
ZmlsdGVyT3V0SUNFQ2FuZGlkYXRlICYmIGZpbHRlck91dElDRUNhbmRpZGF0ZShldmVudC5jYW5k
aWRhdGUpKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdGVDb25uZWN0aW9uLmFkZEljZUNh
bmRpZGF0ZShldmVudC5jYW5kaWRhdGUpLnRoZW4ob25BZGRJY2VDYW5kaWRhdGVTdWNjZXNzLCBv
bkFkZEljZUNhbmRpZGF0ZUVycm9yKTsKK30KKworZnVuY3Rpb24gaWNlQ2FsbGJhY2syKGV2ZW50
LCBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUpCit7CisgICAgaWYgKGZpbHRlck91dElDRUNhbmRpZGF0
ZSAmJiBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRlKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbG9jYWxDb25uZWN0aW9uLmFkZEljZUNhbmRpZGF0ZShldmVudC5jYW5kaWRh
dGUpLnRoZW4ob25BZGRJY2VDYW5kaWRhdGVTdWNjZXNzLCBvbkFkZEljZUNhbmRpZGF0ZUVycm9y
KTsKK30KKworZnVuY3Rpb24gb25BZGRJY2VDYW5kaWRhdGVTdWNjZXNzKCkKK3sKK30KKworZnVu
Y3Rpb24gb25BZGRJY2VDYW5kaWRhdGVFcnJvcihlcnJvcikKK3sKKyAgICBjb25zb2xlLmxvZygi
YWRkSWNlQ2FuZGlkYXRlIGVycm9yOiAiICsgZXJyb3IpCisgICAgYXNzZXJ0X3VucmVhY2hlZCgp
OworfQorCithc3luYyBmdW5jdGlvbiByZW5lZ290aWF0ZShwYzEsIHBjMikKK3sKKyAgICBsZXQg
ZCA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBjMS5zZXRMb2NhbERlc2Ny
aXB0aW9uKGQpOworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlwdGlvbihkKTsKKyAgICBk
ID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0IHBjMS5zZXRSZW1vdGVEZXNj
cmlwdGlvbihkKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlwdGlvbihkKTsKK30KKwor
ZnVuY3Rpb24gYW5hbHlzZUF1ZGlvKHN0cmVhbSwgZHVyYXRpb24sIGNvbnRleHQpCit7CisgICAg
cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdmFyIHNv
dXJjZU5vZGUgPSBjb250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHN0cmVhbSk7CisKKyAg
ICAgICAgdmFyIGFuYWx5c2VyID0gY29udGV4dC5jcmVhdGVBbmFseXNlcigpOworICAgICAgICB2
YXIgZ2FpbiA9IGNvbnRleHQuY3JlYXRlR2FpbigpOworCisgICAgICAgIHZhciByZXN1bHRzID0g
eyBoZWFyZEh1bTogZmFsc2UsIGhlYXJkQmlwOiBmYWxzZSwgaGVhcmRCb3A6IGZhbHNlLCBoZWFy
ZE5vaXNlOiBmYWxzZSB9OworCisgICAgICAgIGFuYWx5c2VyLmZmdFNpemUgPSAyMDQ4OworICAg
ICAgICBhbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwOworICAgICAgICBhbmFseXNl
ci5taW5EZWNpYmVscyA9IC0xMDA7CisgICAgICAgIGFuYWx5c2VyLm1heERlY2liZWxzID0gMDsK
KyAgICAgICAgZ2Fpbi5nYWluLnZhbHVlID0gMDsKKworICAgICAgICBzb3VyY2VOb2RlLmNvbm5l
Y3QoYW5hbHlzZXIpOworICAgICAgICBhbmFseXNlci5jb25uZWN0KGdhaW4pOworICAgICAgICBn
YWluLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisKKyAgICAgICBmdW5jdGlvbiBhbmFs
eXNlKCkgeworICAgICAgICAgICB2YXIgZnJlcURvbWFpbiA9IG5ldyBVaW50OEFycmF5KGFuYWx5
c2VyLmZyZXF1ZW5jeUJpbkNvdW50KTsKKyAgICAgICAgICAgYW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1
ZW5jeURhdGEoZnJlcURvbWFpbik7CisKKyAgICAgICAgICAgdmFyIGhhc0ZyZXF1ZW5jeSA9IGV4
cGVjdGVkRnJlcXVlbmN5ID0+IHsKKyAgICAgICAgICAgICAgICB2YXIgYmluID0gTWF0aC5mbG9v
cihleHBlY3RlZEZyZXF1ZW5jeSAqIGFuYWx5c2VyLmZmdFNpemUgLyBjb250ZXh0LnNhbXBsZVJh
dGUpOworICAgICAgICAgICAgICAgIHJldHVybiBiaW4gPCBmcmVxRG9tYWluLmxlbmd0aCAmJiBm
cmVxRG9tYWluW2Jpbl0gPj0gMTAwOworICAgICAgICAgICB9OworCisgICAgICAgICAgIGlmICgh
cmVzdWx0cy5oZWFyZEh1bSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmhlYXJkSHVtID0gaGFz
RnJlcXVlbmN5KDE1MCk7CisKKyAgICAgICAgICAgaWYgKCFyZXN1bHRzLmhlYXJkQmlwKQorICAg
ICAgICAgICAgICAgcmVzdWx0cy5oZWFyZEJpcCA9IGhhc0ZyZXF1ZW5jeSgxNTAwKTsKKworICAg
ICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmRCb3ApCisgICAgICAgICAgICAgICAgcmVzdWx0cy5o
ZWFyZEJvcCA9IGhhc0ZyZXF1ZW5jeSg1MDApOworCisgICAgICAgICAgIGlmICghcmVzdWx0cy5o
ZWFyZE5vaXNlKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuaGVhcmROb2lzZSA9IGhhc0ZyZXF1
ZW5jeSgzMDAwKTsKKworICAgICAgICAgICBpZiAocmVzdWx0cy5oZWFyZEh1bSAmJiByZXN1bHRz
LmhlYXJkQmlwICYmIHJlc3VsdHMuaGVhcmRCb3AgJiYgcmVzdWx0cy5oZWFyZE5vaXNlKQorICAg
ICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfTsKKworICAgICAgIGZ1bmN0aW9uIGRvbmUo
KSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7CisgICAgICAgICAgICBjbGVh
ckludGVydmFsKGludGVydmFsKTsKKyAgICAgICAgICAgIHJlc29sdmUocmVzdWx0cyk7CisgICAg
ICAgfQorCisgICAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChkb25lLCAzICogZHVyYXRp
b24pOworICAgICAgICB2YXIgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChhbmFseXNlLCBkdXJhdGlv
biAvIDMwKTsKKyAgICAgICAgYW5hbHlzZSgpOworICAgIH0pOworfQorCitmdW5jdGlvbiB3YWl0
Rm9yKGR1cmF0aW9uKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0
VGltZW91dChyZXNvbHZlLCBkdXJhdGlvbikpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yVmlkZW9T
aXplKHZpZGVvLCB3aWR0aCwgaGVpZ2h0LCBjb3VudCkKK3sKKyAgICBpZiAodmlkZW8udmlkZW9X
aWR0aCA9PT0gd2lkdGggJiYgdmlkZW8udmlkZW9IZWlnaHQgPT09IGhlaWdodCkKKyAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSgidmlkZW8gaGFzIGV4cGVjdGVkIHNpemUiKTsKKworICAg
IGlmIChjb3VudCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb3VudCA9IDA7CisgICAgaWYgKCsr
Y291bnQgPiAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJ3YWl0Rm9yVmlkZW9T
aXplIHRpbWVkIG91dCwgZXhwZWN0ZWQgIiArIHdpZHRoICsgIngiKyBoZWlnaHQgKyAiIGJ1dCBn
b3QgIiArIHZpZGVvLnZpZGVvV2lkdGggKyAieCIgKyB2aWRlby52aWRlb0hlaWdodCk7CisKKyAg
ICByZXR1cm4gd2FpdEZvcigxMDApLnRoZW4oKCkgPT4geworICAgICAgICByZXR1cm4gd2FpdEZv
clZpZGVvU2l6ZSh2aWRlbywgd2lkdGgsIGhlaWdodCwgY291bnQpOworICAgIH0pOworfQorCith
c3luYyBmdW5jdGlvbiBkb0h1bUFuYWx5c2lzKHN0cmVhbSwgZXhwZWN0ZWQpCit7CisgICAgdmFy
IGNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7CisgICAgZm9yICh2YXIgY3B0ciA9IDA7IGNw
dHIgPCAyMDsgY3B0cisrKSB7CisgICAgICAgIHZhciByZXN1bHRzID0gYXdhaXQgYW5hbHlzZUF1
ZGlvKHN0cmVhbSwgMjAwLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJlc3VsdHMuaGVhcmRIdW0g
PT09IGV4cGVjdGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGF3YWl0IHdh
aXRGb3IoNTApOworICAgIH0KKyAgICBhd2FpdCBjb250ZXh0LmNsb3NlKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitmdW5jdGlvbiBpc1ZpZGVvQmxhY2soY2FudmFzLCB2aWRlbywgc3RhcnRY
LCBzdGFydFksIGdyYWJiZWRXaWR0aCwgZ3JhYmJlZEhlaWdodCkKK3sKKyAgICBjYW52YXMud2lk
dGggPSB2aWRlby52aWRlb1dpZHRoOworICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRlb0hl
aWdodDsKKyAgICBpZiAoIWdyYWJiZWRIZWlnaHQpIHsKKyAgICAgICAgc3RhcnRYID0gMTA7Cisg
ICAgICAgIHN0YXJ0WSA9IDEwOworICAgICAgICBncmFiYmVkV2lkdGggPSBjYW52YXMud2lkdGgg
LSAyMDsKKyAgICAgICAgZ3JhYmJlZEhlaWdodCA9IGNhbnZhcy5oZWlnaHQgLSAyMDsKKyAgICB9
CisKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UodmlkZW8sIDAsIDAsIGNh
bnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICBpbWFnZURhdGEgPSBjYW52YXMuZ2V0
Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoc3RhcnRYLCBzdGFydFksIGdyYWJiZWRXaWR0aCwg
Z3JhYmJlZEhlaWdodCk7CisgICAgZGF0YSA9IGltYWdlRGF0YS5kYXRhOworICAgIGZvciAodmFy
IGNwdHIgPSAwOyBjcHRyIDwgZ3JhYmJlZFdpZHRoICogZ3JhYmJlZEhlaWdodDsgKytjcHRyKSB7
CisgICAgICAgIC8vIEFwcHJveGltYXRpdmVseSBibGFjayBwaXhlbHMuCisgICAgICAgIGlmIChk
YXRhWzQgKiBjcHRyXSA+IDMwIHx8IGRhdGFbNCAqIGNwdHIgKyAxXSA+IDMwIHx8IGRhdGFbNCAq
IGNwdHIgKyAyXSA+IDMwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYXN5bmMgZnVuY3Rpb24gY2hlY2tWaWRlb0JsYWNrKGV4cGVjdGVk
LCBjYW52YXMsIHZpZGVvLCBlcnJvck1lc3NhZ2UsIGNvdW50ZXIpCit7CisgICAgaWYgKGlzVmlk
ZW9CbGFjayhjYW52YXMsIHZpZGVvKSA9PT0gZXhwZWN0ZWQpCisgICAgICAgIHJldHVybiBQcm9t
aXNlLnJlc29sdmUoKTsKKworICAgIGlmIChjb3VudGVyID09PSB1bmRlZmluZWQpCisgICAgICAg
IGNvdW50ZXIgPSAwOworICAgIGlmIChjb3VudGVyID4gNDAwKSB7CisgICAgICAgIGlmICghZXJy
b3JNZXNzYWdlKQorICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gImNoZWNrVmlkZW9CbGFjayB0
aW1lZCBvdXQgZXhwZWN0aW5nICIgKyBleHBlY3RlZDsKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAgYXdhaXQgd2FpdEZvcig1MCk7Cisg
ICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFjayhleHBlY3RlZCwgY2FudmFzLCB2aWRlbywgZXJyb3JN
ZXNzYWdlLCArK2NvdW50ZXIpOworfQorCitmdW5jdGlvbiBzZXRDb2RlYyhzZHAsIGNvZGVjKQor
eworICAgIHJldHVybiBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGluZSA9PiB7CisgICAgICAg
IHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9
cnRjcC1mYicpID09PSAtMSAmJiAobGluZS5pbmRleE9mKCdhPXJ0cG1hcCcpID09PSAtMSB8fCBs
aW5lLmluZGV4T2YoY29kZWMpICE9PSAtMSk7CisgICAgfSkuam9pbignXHJcbicpOworfQorCith
c3luYyBmdW5jdGlvbiBnZXRUeXBlZFN0YXRzKGNvbm5lY3Rpb24sIHR5cGUpCit7CisgICAgY29u
c3QgcmVwb3J0ID0gYXdhaXQgY29ubmVjdGlvbi5nZXRTdGF0cygpOworICAgIHZhciBzdGF0czsK
KyAgICByZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAgICAgaWYgKHN0YXRJdGVt
LnR5cGUgPT09IHR5cGUpCisgICAgICAgICAgICBzdGF0cyA9IHN0YXRJdGVtOworICAgIH0pOwor
ICAgIHJldHVybiBzdGF0czsKK30KKworZnVuY3Rpb24gZ2V0UmVjZWl2ZWRUcmFja1N0YXRzKGNv
bm5lY3Rpb24pCit7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24uZ2V0U3RhdHMoKS50aGVuKChyZXBv
cnQpID0+IHsKKyAgICAgICAgdmFyIHN0YXRzOworICAgICAgICByZXBvcnQuZm9yRWFjaCgoc3Rh
dEl0ZW0pID0+IHsKKyAgICAgICAgICAgIGlmIChzdGF0SXRlbS50eXBlID09PSAidHJhY2siKSB7
CisgICAgICAgICAgICAgICAgc3RhdHMgPSBzdGF0SXRlbTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybiBzdGF0czsKKyAgICB9KTsKK30KKworYXN5bmMgZnVuY3Rp
b24gY29tcHV0ZUZyYW1lUmF0ZShzdHJlYW0sIHZpZGVvKQoreworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFTdHJlYW1UcmFjayhzdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7IAorICAgICAgICByZXR1cm4gaW50ZXJu
YWxzLnRyYWNrVmlkZW9TYW1wbGVDb3VudDsKKyAgICB9CisKKyAgICBsZXQgY29ubmVjdGlvbjsK
KyAgICB2aWRlby5zcmNPYmplY3QgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsK
KyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKVswXSwgc3RyZWFtKTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24gPSBzZWNvbmRDb25uZWN0aW9uOworICAgICAgICAgICAgc2Vj
b25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAgICAgICB9OworICAgICAg
ICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0Iiks
IDUwMDApOworICAgIH0pOworCisgICAgYXdhaXQgdmlkZW8ucGxheSgpOworCisgICAgY29uc3Qg
c3RhdHMxID0gYXdhaXQgZ2V0UmVjZWl2ZWRUcmFja1N0YXRzKGNvbm5lY3Rpb24pOworICAgIGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7IAor
ICAgIGNvbnN0IHN0YXRzMiA9IGF3YWl0IGdldFJlY2VpdmVkVHJhY2tTdGF0cyhjb25uZWN0aW9u
KTsKKyAgICByZXR1cm4gKHN0YXRzMi5mcmFtZXNSZWNlaXZlZCAtIHN0YXRzMS5mcmFtZXNSZWNl
aXZlZCkgKiAxMDAwIC8gKHN0YXRzMi50aW1lc3RhbXAgLSBzdGF0czEudGltZXN0YW1wKTsKK30K
KworZnVuY3Rpb24gc2V0SDI2NEJhc2VsaW5lQ29kZWMoc2RwKQoreworICAgIGNvbnN0IGxpbmVz
ID0gc2RwLnNwbGl0KCdcclxuJyk7CisgICAgY29uc3QgaDI2NExpbmVzID0gbGluZXMuZmlsdGVy
KGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0gMCAmJiBsaW5lLmluZGV4T2YoIjQy
ZTAxZiIpICE9PSAtMSk7CisgICAgY29uc3QgYmFzZWxpbmVOdW1iZXIgPSBoMjY0TGluZXNbMF0u
c3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07CisgICAgcmV0dXJuIGxpbmVzLmZpbHRlcihsaW5l
ID0+IHsKKyAgICAgICAgcmV0dXJuIChsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBs
aW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRwbWFw
JykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVOdW1iZXIpICE9PSAtMTsKKyAgICB9
KS5qb2luKCdcclxuJyk7Cit9CisKK2Z1bmN0aW9uIHNldEgyNjRIaWdoQ29kZWMoc2RwKQorewor
ICAgIGNvbnN0IGxpbmVzID0gc2RwLnNwbGl0KCdcclxuJyk7CisgICAgY29uc3QgaDI2NExpbmVz
ID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0gMCAmJiBs
aW5lLmluZGV4T2YoIjY0MGMxZiIpICE9PSAtMSk7CisgICAgY29uc3QgYmFzZWxpbmVOdW1iZXIg
PSBoMjY0TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07CisgICAgcmV0dXJuIGxp
bmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJuIChsaW5lLmluZGV4T2YoJ2E9Zm10
cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiBsaW5lLmlu
ZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVOdW1iZXIp
ICE9PSAtMTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYzg2NTBjOWViZmJj
M2JhMmVjZTU5MmZlMTY3NDRmOTQ0ZDFiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpAQCAtMCwwICsxLDI3IEBACitj
bGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIgZXh0ZW5kcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ciB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHRoaXMu
cG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHRoaXMucG9ydC5wb3N0TWVzc2FnZShldmVudC5k
YXRhKTsKKyAgICB9CisgICAgc3RhcnQocmVhZGFibGVTdHJlYW0sIHdyaXRhYmxlU3RyZWFtKQor
ICAgIHsKKyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIpOworICAgICAgICB0aGlz
LnJlYWRlciA9IHJlYWRhYmxlU3RyZWFtLmdldFJlYWRlcigpOworICAgICAgICB0aGlzLndyaXRl
ciA9IHdyaXRhYmxlU3RyZWFtLmdldFdyaXRlcigpOworICAgICAgICB0aGlzLnByb2Nlc3MoKTsK
KyAgICB9CisKKyAgICBwcm9jZXNzKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVhZGVyLnJlYWQo
KS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVuay5kb25lKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoImNodW5rIik7Cisg
ICAgICAgICAgICB0aGlzLndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7CisgICAgICAgICAgICB0
aGlzLnByb2Nlc3MoKTsKKyAgICAgICAgfSk7CisgICAgfQorfTsKKworcmVnaXN0ZXJSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcigiTW9ja1JUQ1J0cFRyYW5zZm9ybSIsIE1vY2tSVENSdHBUcmFuc2Zv
cm1lcik7CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTAwZTg2ZGRkZTI5MzVkMWYwZjVhYzAyZGQzYTg3YzZhMmY3OGRlZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNm
b3JtLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDYW5ub3QgcmV1c2UgYXR0
YWNoZWQgdHJhbnNmb3JtcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Nm
cmFtZS10cmFuc2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTA0ODgwZDE0NWFjZmI4MWQ3ZTk5YmYx
MTM4NGEwODUzNTEzM2M3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4KKwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVl
ckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtKCk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtKCk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVy
KCdhdWRpbycpLnNlbmRlcjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
J3ZpZGVvJykuc2VuZGVyOworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygp
WzBdOworICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAg
c2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5z
Zm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlk
U3RhdGVFcnJvciIsICgpID0+IHNlbmRlcjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtKTsK
KyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNlaXZl
cjIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFuc2Zv
cm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVy
VHJhbnNmb3JtOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2VpdmVy
MS50cmFuc2Zvcm0gPSBudWxsOworfSwgIkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1z
Iik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jZjlkNTZlZTg1ZTYwZTQ3MThkZjZkMDFjMzEzMWMxMTQ1NDRlNWU3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10
cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCisKK1BBU1MgdHJhbnNmb3Jt
IG1lc3NhZ2luZworUEFTUyBDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcworUEFTUyBh
dWRpbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybQorUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIHRy
YW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRj
LXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFu
c2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjg3NTMwOWEwMzFiZWNkMDFmNGNjZjhmNWQzNzIyNDlk
OWI3ZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dl
YnJ0Yy10cmFuc2Zvcm0uaHRtbApAQCAtMCwwICsxLDEzMiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8xIiBh
dXRvcGxheT48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMiIgYXV0b3BsYXk+PC92
aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRhdGEp
Cit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCBu
ZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29s
dmUoZXZlbnQuZGF0YSkpOworICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgfQorfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAgY29u
c3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9
IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRh
LCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcHJv
bWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdHJhbnNmb3JtLnBvcnQub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICB0cmFuc2Zvcm0ucG9ydC5wb3N0
TWVzc2FnZSgidGVzdCIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgcHJvbWlzZSwgInRlc3Qi
KTsKK30sICJ0cmFuc2Zvcm0gbWVzc2FnaW5nIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsK
KyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29u
bmVjdGlvbigpOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRU
cmFuc2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2Vp
dmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRD
UnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdh
dWRpbycpLnNlbmRlcjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3Zp
ZGVvJykuc2VuZGVyOworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBd
OworICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAgc2Vu
ZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9y
bSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3Rh
dGVFcnJvciIsICgpID0+IHNlbmRlcjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtKTsKKyAg
ICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNlaXZlcjIu
dHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0g
PSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJh
bnNmb3JtOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2VpdmVyMS50
cmFuc2Zvcm0gPSBudWxsOworfSwgIkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2
ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisgICAg
Y29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJN
ZWRpYSh7YXVkaW86IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNv
bnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCAn
TW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisK
KyAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2Vy
Lm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisKKyAgICBjb25z
dCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAg
ICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAg
IHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVj
dGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVh
bSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOworICAg
ICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMyID0gc2Vjb25k
Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFj
a0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2Vp
dmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNm
b3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVj
dCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgYXdhaXQgd2FpdEZvck1l
c3NhZ2Uod29ya2VyLCAiY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07
CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5z
Zm9ybSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBu
ZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0
IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVz
b2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIp
OworCisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2Vz
LmdldFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVy
OworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0o
d29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNm
b3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNm
b3JtJyk7CisKKyAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisK
KyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9
PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAg
ICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZp
cnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBs
b2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNm
b3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMy
ID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFj
ayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2
ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2Vp
dmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1z
WzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgp
ID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3Nl
cnRfZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgYXdhaXQg
d2FpdEZvck1lc3NhZ2Uod29ya2VyLCAiY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmplY3Qg
PSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJ2aWRlbyBleGNoYW5nZSB3
aXRoIHRyYW5zZm9ybSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNTMzNTdm
NGEwZmQyOTcyNzZlODc2MTU4NzZjYjFhYTdmZjM3YjU4Zi4uZGZmYzVjYjAzM2YyZTVmNGZjOWEy
MTY5YTc0OGU4MTE1NGM3ZDQxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xp
Yi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtODY3LDcgKzg2Nyw3IEBAIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRj
L3ZpZGVvLXN0YXRzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgZmFzdC9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwgWyBUaW1lb3V0
IF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL2NvbmN1cnJlbnRWaWRlb1BsYXliYWNrLmh0
bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL2ljZS1jYW5kaWRhdGUt
c2RwTUxpbmVJbmRleC5odG1sIFsgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMjE4Nzg3IHdlYnJ0
Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTg3ODcg
aHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbCBbIEZhaWx1cmUgXQogCiAjLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgV2ViUlRDLXJlbGF0ZWQgYnVn
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMgYi9M
YXlvdXRUZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTY4YzYy
MmJmYzExYWNlMWViMWYxZmNjOGQ4MmQyMmZjNDgyZDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKQEAgLTAsMCArMSw3IEBACitjbGFz
cyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIgZXh0ZW5kcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciB7
CisgICAgY29uc3RydWN0b3IoKSB7IH0KKyAgICBzdGFydChyZWFkYWJsZVN0cmVhbSwgd3JpdGFi
bGVTdHJlYW0pIHsgcmVhZGFibGVTdHJlYW0ucGlwZVRvKHdyaXRhYmxlU3RyZWFtKTsgfQorfTsK
KworcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigiTW9ja1JUQ1J0cFRyYW5zZm9ybSIs
IE1vY2tSVENSdHBUcmFuc2Zvcm1lcik7CitzZWxmLnBvc3RNZXNzYWdlKCJzdGFydGVkIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhOGY1MWIzYzgwMGM1ZDdhYzQ5M2Q3MDMzMDBh
Y2Q2ODI3OGY5ZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLQotUEFTUyBhdWRpbyBleGNoYW5nZSB3aXRoIHRy
YW5zZm9ybQotUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybQotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMv
d2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYTljNWE2ZGZhNTc3YmEzYmE5MGVlYWU1MjBjNjMyNTE1NGUxYWY1MC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvd2Vi
cnRjLXRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotPCFkb2N0
eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotICAgICAgICA8dGl0bGU+VGVzdGluZyBtZWRpYSBleGNoYW5nZSB3aXRoIHRyYW5zZm9y
bTwvdGl0bGU+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAg
IDx2aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8dmlkZW8gaWQ9
InZpZGVvMiIgYXV0b3BsYXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5l
cy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1wcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKLSAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwotICAgIGxldCBzZW5kZXJUcmFuc2Zvcm0gPSBpbnRl
cm5hbHMuY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotICAgIGxldCByZWNlaXZlclRyYW5z
Zm9ybSA9IGludGVybmFscy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0KLSAgICBjb25z
dCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHthdWRpbzogdHJ1ZX0pOwotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29u
bmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAg
ICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldEF1
ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zv
cm0gPSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7
Ci0gICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25k
Q29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICBy
ZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIu
dHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0
cmFja0V2ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAg
ICB9KTsKLQotICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlkZW8x
LnBsYXkoKTsKLQotICAgIGxldCBjb3VudGVyID0gMDsKLSAgICB3aGlsZSAoIXJlY2VpdmVyVHJh
bnNmb3JtLmlzUHJvY2Vzc2luZyAmJiBjb3VudGVyKysgPCAxMDApCi0gICAgICAgIGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOwotCi0gICAgYXNz
ZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZywgInNlbmRlciIpOwotfSwgImF1
ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7Ci0KLXByb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4gewotICAgIGlmICghd2luZG93LmludGVybmFscykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgbGV0IHNlbmRlclRyYW5zZm9ybSA9IGludGVy
bmFscy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0gICAgbGV0IHJlY2VpdmVyVHJhbnNm
b3JtID0gaW50ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLQotICAgIGNvbnN0
IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEo
e3ZpZGVvOiB0cnVlfSk7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENv
bm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKLSAgICAg
ICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAgICBzZW5kZXIudHJhbnNm
b3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4g
ewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKLSAgICAgICAgICAgIHNlY29u
ZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAg
cmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAgICAgICAgIHJlY2VpdmVy
LnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAgICAgICAgIHJlc29sdmUo
dHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAg
ICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7Ci0g
ICAgfSk7Ci0KLSAgICB2aWRlbzIuc3JjT2JqZWN0ID0gc3RyZWFtOwotICAgIGF3YWl0IHZpZGVv
Mi5wbGF5KCk7Ci0KLSAgIGxldCBjb3VudGVyID0gMDsKLSAgIHdoaWxlICghcmVjZWl2ZXJUcmFu
c2Zvcm0uaXNQcm9jZXNzaW5nICYmIGNvdW50ZXIrKyA8IDEwMCkKLSAgICAgICBhd2FpdCBuZXcg
UHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKTsKLQotICAgIGFzc2Vy
dF90cnVlKHNlbmRlclRyYW5zZm9ybS5pc1Byb2Nlc3NpbmcsICJzZW5kZXIiKTsKLX0sICJ2aWRl
byBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIpOwotICAgICAgICA8L3NjcmlwdD4KLSAgICA8L2Jv
ZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414564</attachid>
            <date>2020-11-19 04:00:40 -0800</date>
            <delta_ts>2020-11-20 00:50:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219148-20201119130037.patch</filename>
            <type>text/plain</type>
            <size>175702</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5ODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM4N2JjMDU3MTMzOWEy
YmU1ZTIzMjg0ODBhYjlmZTE0MDQ3YzZjZS4uMzQ1MzFlMDIzN2UwYmRhYTIwYjk2M2RkNGZmNWVj
ZTk1NTljMDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0xMS0xOSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2UgaW50cm9kdWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB3aGljaCBw
cm9jZXNzZXMgZW5jb2RlZCBmcmFtZXMgaW4gYSB3b3JrZXIgZm9yIGVpdGhlciBSVENSdHBTZW5k
ZXIgb3IgUlRDUnRwUmVjZWl2ZXIuCisgICAgICAgIFRoZSBtb2RlbCBmb2xsb3dzIEF1ZGlvV29y
a2xldE5vZGUgaW4gdGhlIHNlbnNlIHRoYXQgd2UgY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNm
b3JtIG9iamVjdCBpbiBtYWluIHRocmVhZCB0aGF0IGlzIHVzZWQgd2l0aCBSVENSdHAgb2JqZWN0
cy4KKyAgICAgICAgVGhlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSB0YWtlcyBhIG5hbWUgYW5kIGEg
d29ya2VyIGFzIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIg
Y291bnRlciBwYXJ0IGluIGEgd29ya2VyLgorICAgICAgICBCZWZvcmUgdGhhdCwgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIgY29uc3RydWN0b3JzIGFyZSByZWdpc3RlcmVkIGluIHRoZSB3b3JrZXIg
d2l0aCBhIHNwZWNpZmljIG5hbWUuCisgICAgICAgIEEgbWVzc2FnZSBwb3J0IGlzIHNoYXJlZCBi
ZXR3ZWVuIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBhbmQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
CisKKyAgICAgICAgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGtlZXBzIGEgd2VhayBwb2ludGVyIHRv
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHNvIHRoYXQgd2Uga2VlcCBhbGwgcmVmIGNvdW50aW5n
IG9mIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIGluIHRoZSB3b3JrZXIgdGhyZWFkLgorICAgICAg
ICBUbyBtYWtlIHN1cmUgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgc3RheXMgYWxpdmUgZm9yIGxv
bmcgZW5vdWdoLCB3ZSBzZXQgYSBwZW5kaW5nIGFjdGl2aXR5IHdoZW4gUlRDUnRwU2NyaXB0VHJh
bnNmb3JtIGlzIGxpbmtlZCB0byBpdHMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuCisgICAgICAg
IFRoZSBwZW5kaW5nIGFjdGl2aXR5IGlzIHRoZW4gcmVtb3ZlZCBlaXRoZXIgYXQgd29ya2VyIGNs
b3N1cmUgb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtIGJlaW5nIG5vIGxvbmdlciBkb2luZyBwcm9j
ZXNzaW5nLgorCisgICAgICAgIFdlIGV4cG9zZSBpbmRpdmlkdWFsIGNvbXByZXNzZWQgZnJhbWVz
IGFzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIGFuZCBSVENFbmNvZGVkVmlkZW9GcmFtZS4KKyAgICAg
ICAgQWNjZXNzb3IgaXMgbGltaXRlZCB0byB0aGUgcmF3IGRhdGEgYnV0IGFkZGl0aW9uYWwgZ2V0
dGVycyBzaG91bGQgYmUgYWRkZWQgbGF0ZXIgb24uCisKKyAgICAgICAgVG8gaW1wbGVtZW50IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLCB3ZSBoYXZlIHRvIGJlIGFibGUgdG8gY3JlYXRlIFdyaXRh
YmxlU3RyZWFtIHdpdGggbmF0aXZlIHNpbmtzLgorICAgICAgICBUaGlzIGlzIHdoeSB3ZSBpbnRy
b2R1Y2UgV3JpdGFibGVTdHJlYW1TaW5rIGFuZCBXcml0YWJsZVN0cmVhbSBDKysgY2xhc3Nlcy4K
KyAgICAgICAgQmluZGluZyBiZXR3ZWVuIG5hdGl2ZSBmcmFtZXMgYW5kIHN0cmVhbXMgaXMgZG9u
ZSB0aHJvdWdoIFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlIGFuZCBSVENSdHBXcml0YWJsZVN0
cmVhbVNpbmsuCisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zv
cm0uaHRtbCBhbmQgaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbC4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
VENFbmNvZGVkQXVkaW9GcmFtZTo6UlRDRW5jb2RlZEF1ZGlvRnJhbWUpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpSVENFbmNvZGVkQXVkaW9GcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVv
RnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENFbmNvZGVkVmlkZW9GcmFtZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
citUcmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVUcmFu
c2Zvcm1lcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aXNBdHRh
Y2hlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFu
c2Zvcm06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRU
cmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtOjpzZXRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZv
clNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm06OndpbGxD
bGVhckJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpp
bml0aWFsaXplVHJhbnNmb3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjplbnF1ZXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luazo6UlRDUnRwV3JpdGFi
bGVTdHJlYW1TaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
azo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXI6On5SVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI6OmNsZWFyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI6OnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyOjpwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydFBlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6c3RvcFBlbmRpbmdBY3Rpdml0
eSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyV2l0aFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybTo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcldpdGhU
cmFuc2Zvcm06OnNldFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpm
cm9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6UlRDUnRwVHJhbnNmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjphdHRhY2hUb1JlY2VpdmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjpjbGVhckJhY2tlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tU2VuZGVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwVHJhbnNmb3JtOjppbnRlcm5hbFRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6
VHJhbnNmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5r
Lmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9S
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dyaXRhYmxlU3Ry
ZWFtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXcml0YWJsZVN0cmVhbTo6Y3JlYXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyOjp0b1dyYXBwZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OldyaXRhYmxlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU05ld2x5Q3JlYXRl
ZCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9Nb2NrUlRDUnRw
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSVENSdHBUcmFuc2Zvcm1lcjo6
dHJhbnNmb3JtKToKKyAgICAgICAgKiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdp
c3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAg
ICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAqIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OnBvc3RUYXNrVG9Xb3JrZXJH
bG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3Nh
Z2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9iamVj
dFByb3h5Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KToKKwogMjAyMC0xMS0xNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFNGcmFtZSB0cmFuc2Zv
cm1hdGlvbiBpbXBsZW1lbnRhdGlvbiBhY2NvcmRpbmcgcG9zdC1jb21taXQgcmV2aWV3CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDk0ZDA2MmJmOTkzZDFiNGM3YzQ0NDI0ZmE0ZTkxNjU3ZjQwMDdl
YWEuLjc4OWY4ZjFlNDgzMjZhNGZmZmJmOGMyOTQyNTM0NGRiNGQxODMwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0zNzMsNiArMzczLDggQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklM
RVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEdHhTdGF0dXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlk
YXRlLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC00MDMs
MTMgKzQwNSwxNiBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSdHhQYXJhbWV0ZXJzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
UHJvdmlkZXIuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1lci5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Q29uc3RydWN0b3IuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1l
dGVycy5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0u
aWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwVHJhbnNmb3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2RwVHlw
ZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsCkBA
IC00ODEsNiArNDg2LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKKyAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVT
dHJlYW1TaW5rLmlkbAogCiAgICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCiAg
ICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCkBAIC0xNzUzLDcgKzE3NTks
NiBAQCBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0lETF9GSUxFUwogICAgIHRlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuaWRsCiAgICAgdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmlkbAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5pZGwKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCiAgICAg
dGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaWRsCiApCkBAIC0xNzc3LDcgKzE3ODIsNiBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRfU09VUkNFUwogICAgIHRlc3RpbmcvTW9ja0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uLmNwcAogICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmNwcAog
ICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcAotICAgIHRlc3RpbmcvTW9ja1JU
Q1J0cFRyYW5zZm9ybS5jcHAKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
CiAgICAgdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCiApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBiMTZkODhlODQ1Y2Q2
NmNlYzhjZWNkMGU3Y2I0MGY4NDJjY2Q5NjA0Li43OGIzZDRmYTA4OTQ5NDM4ZDBiZTk3NDk0ZDQ2
OWZlZTkyMzk0NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKQEAgLTIwNSw2ICsyMDUsOCBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0R0eFN0YXR1cy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCiskKFBST0pFQ1RfRElSKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbAogJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRsCiAkKFBST0pFQ1RfRElS
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQuaWRsCiAkKFBST0pFQ1Rf
RElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC0yMzcs
NiArMjM5LDEwIEBAICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIrVHJhbnNmb3JtLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUnR4UGFyYW1ldGVycy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAorJChQUk9KRUNUX0RJ
UikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKKyQoUFJP
SkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZFBhcmFtZXRlcnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlcitUcmFuc2Zvcm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNlbmRlci5pZGwKQEAgLTMzOCw2ICszNDQsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcwogJChQUk9KRUNU
X0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIu
anMKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFs
cy5qcworJChQUk9KRUNUX0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAogJChQ
Uk9KRUNUX0RJUikvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCiAkKFBST0pF
Q1RfRElSKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAyNmQzYzE0YTJhNjhi
ODkxNjY5ZWIwZDU2MDI3Y2U0ZjVjZTczYzhmLi5hMTZiODMyNzY5ZDY3YzgyMGQzYmUyNjU1ZmQz
MjZiYTNlN2FkMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdApAQCAtMTY0Nyw2ICsxNjQ3LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEZWdyYWRh
dGlvblByZWZlcmVuY2UuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSVENEdHhTdGF0dXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ0R0eFN0YXR1cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNSVENFbmNvZGVkVmlkZW9GcmFtZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlk
YXRlSW5pdC5jcHAKQEAgLTE3MDcsNiArMTcxMSwxNCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRl
cnMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVy
LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5k
UGFyYW1ldGVycy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uY3BwCkBAIC0yNTY5LDYgKzI1ODEsOCBAQCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIuYwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1EZWZhdWx0
V3JpdGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtU2luay5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTERvY3Vt
ZW50LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNY
TUxEb2N1bWVudC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
MjdhYzdkODBlZWIxMDM1NjRkMWFlNjUzMjFlZjAwNzU3MGJlY2NiMS4uOWJhOWFkYzJhNDU3NzJh
N2IxMzIyOGM0OWExNjk5NTc0OGY0Y2NlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC0yMzEsNiArMjMxLDggQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbCBcCisg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlk
bCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0Zy
YW1lLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRp
ZGF0ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGVJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZVR5cGUuaWRsIFwKQEAgLTI2NCwxMCArMjY2LDEzIEBAIEpTX0JJTkRJTkdfSURM
UyA6PSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJh
bnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNG
cmFtZVRyYW5zZm9ybS5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIFwKKyAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3Rvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
eW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsIFwKLSAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1NkcFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsIFwK
QEAgLTM0Miw2ICszNDcsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkv
TW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwg
XAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwg
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsIFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJPcHRpb25zLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCkBAIC0xMjMwLDcg
KzEyMzYsNiBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9N
b2NrUGF5bWVudENvbnRhY3RGaWVsZHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5
bWVudEVycm9yLmlkbCBcCi0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zv
cm0uaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50
ZXJuYWxzLmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRBdWRpb0ZyYW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODUyNzcyNjM3OWZiZmI2ZGE3ODQ4
MzcxZWNmYjEzMThkYjhlZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkQXVkaW9GcmFtZS5oIgorCisjaWYgRU5B
QkxFKFdFQl9SVEMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZEF1ZGlvRnJh
bWU6OlJUQ0VuY29kZWRBdWRpb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJh
bWU+JiYgZnJhbWUpCisgICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9
CisKK1JUQ0VuY29kZWRBdWRpb0ZyYW1lOjp+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKSA9IGRlZmF1
bHQ7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENF
bmNvZGVkQXVkaW9GcmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgyYjZmMDgyNzVlNjkzNTliNDdjMGYwNTE2
YzMyY2VlZDYwNDAxNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkQXVkaW9GcmFtZSA6IHB1Ymxp
YyBSVENFbmNvZGVkRnJhbWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZEF1
ZGlvRnJhbWU+IGNyZWF0ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZy
YW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFdURk1vdmUo
ZnJhbWUpKSk7IH0KKyAgICB+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBSVENFbmNvZGVkQXVkaW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDBkNTZj
MWQzMDg4MmFjYTk2MzY0YWE3NTZjNDlkOWRjMGVmM2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwK
QEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRD
LAorICAgIEV4cG9zZWQ9RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCitdIGludGVyZmFjZSBSVENFbmNvZGVkQXVkaW9GcmFtZSB7CisgICAgLy8gcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRl
IEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRDQXVkaW9GcmFtZU1ldGFkYXRhIGdldE1ldGFk
YXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3NmE5Mzk1NmFiYmJlODQ2MDQ3Y2Nl
MDFhZjEyYzVjMWNiMmQ1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
VENFbmNvZGVkRnJhbWU6OlJUQ0VuY29kZWRGcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lPiYmIGZyYW1lKQorICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30K
KworUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IFJUQ0VuY29kZWRGcmFtZTo6ZGF0YSgpIGNvbnN0
Cit7CisgICAgYXV0byBkYXRhID0gbV9mcmFtZS0+ZGF0YSgpOworICAgIHJldHVybiBKU0M6OkFy
cmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhLCBkYXRhLnNpemUpOworfQorCit2b2lkIFJUQ0Vu
Y29kZWRGcmFtZTo6c2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJiBidWZmZXIpCit7CisgICAgbV9m
cmFtZS0+c2V0RGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgp
KSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGI0NzRkYjkx
MzE1MDhkZTM1ZGQwYTdlMGQwMWQ3NGViYTZhZjliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApAQCAtMCwwICsx
LDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBS
VENFbmNvZGVkRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENFbmNvZGVkRnJhbWU+IHsKK3B1
YmxpYzoKKyAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0OworICAgIHZv
aWQgc2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lPiB0YWtlUlRDRnJhbWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fZnJhbWUp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBSVENFbmNvZGVkRnJhbWUoVW5pcXVlUmVm
PFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lPiBtX2ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNhZjYzYTA5YzJkOGE2OTVkNDM3NjJlZjdkMzkwY2ZmOTdlNjYxNDUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRl
b0ZyYW1lLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ0VuY29k
ZWRWaWRlb0ZyYW1lLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitSVENFbmNvZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWUoVW5pcXVl
UmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZT4mJiBmcmFtZSkKKyAgICA6IFJUQ0VuY29kZWRG
cmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30KKworUlRDRW5jb2RlZFZpZGVvRnJhbWU6On5SVENF
bmNvZGVkVmlkZW9GcmFtZSgpID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzc3MDVhYzg1NmEwMjYyOTdmODE5MDczZWFmNGM4MzBlMzYxOWE1NQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1
ZGUgIlJUQ0VuY29kZWRGcmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJU
Q0VuY29kZWRWaWRlb0ZyYW1lIDogcHVibGljIFJUQ0VuY29kZWRGcmFtZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxSVENFbmNvZGVkVmlkZW9GcmFtZT4gY3JlYXRlKFVuaXF1ZVJlZjxSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRD
RW5jb2RlZFZpZGVvRnJhbWUoV1RGTW92ZShmcmFtZSkpKTsgfQorICAgIH5SVENFbmNvZGVkVmlk
ZW9GcmFtZSgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ0VuY29kZWRWaWRlb0ZyYW1l
KFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJh
bWUuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVkZGQ2YTgxN2ZlMWRlZmEwMGRiMTNiNzljNmZjYWJlY2VkNjI5
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
WworICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRXhwb3NlZD1EZWRpY2F0ZWRXb3JrZXIs
CisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKK10gaW50ZXJmYWNlIFJUQ0VuY29kZWRW
aWRlb0ZyYW1lIHsKKyAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgUlRDRW5jb2RlZFZpZGVvRnJh
bWVUeXBlIHR5cGU7CisgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRlIEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRD
VmlkZW9GcmFtZU1ldGFkYXRhIGdldE1ldGFkYXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRs
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFu
c2Zvcm0uaWRsCmluZGV4IGYwYjJlMTFkNDdmZmJiM2E4NDNiZjQxMzk3ZTBjMDhjOTFlMjYyNzgu
LjQ2OTM0ZTQ4ZDAyYWZmNGJiZTY0YmJhNTlhYzdmZTA3MDlhMGEyY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3Jt
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyK1RyYW5zZm9ybS5pZGwKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCit0eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3Ig
UlRDUnRwU2NyaXB0VHJhbnNmb3JtKSBSVENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRp
b25hbD1XRUJfUlRDLAogICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVh
bXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuY3BwCmluZGV4IDBiZmNjOTY2M2MyZjA2ZDRlOTBjMDk0ODhkZjI1MmUxZmQyYjNj
MDAuLmVmN2EyOTgwMDA2MmUyMzhjNmNiM2M2MGM2NTIyNWNlZDViMzgxYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3Bw
CkBAIC04MSw4ICs4MSwxMCBAQCBPcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJl
Y2VpdmVyOjpnZXRDYXBhYmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJldHVybiBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnRleHQsIGtpbmQp
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBSZWNlaXZlcjo6c2V0VHJhbnNmb3JtKFJl
ZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKQorRXhjZXB0aW9uT3I8dm9pZD4gUlRD
UnRwUmVjZWl2ZXI6OnNldFRyYW5zZm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYgdHJh
bnNmb3JtKQogeworICAgIGlmICh0cmFuc2Zvcm0gJiYgbV90cmFuc2Zvcm0gJiYgKnRyYW5zZm9y
bSA9PSAqbV90cmFuc2Zvcm0pCisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKHRyYW5zZm9y
bSAmJiB0cmFuc2Zvcm0tPmlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAidHJhbnNmb3JtIGlzIGFscmVhZHkgaW4gdXNlIl9zIH07CiAK
QEAgLTk1LDYgKzk3LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJlY2VpdmVyOjpzZXRU
cmFuc2Zvcm0oUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2ZvCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gUlRDUnRwUmVjZWl2
ZXI6OnRyYW5zZm9ybSgpCit7CisgICAgaWYgKCFtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm0tPmludGVybmFsVHJhbnNmb3JtKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5o
CmluZGV4IDhjYjFhNDNkMmJkMDQ0NjI0YzI4N2NhNmFmNzFjN2RmODc4ZDIyYjUuLjNhMTYxNzIw
NTQzYzFkNGJiZmM1MWExNDAxMzdkOWNjNzcwMGQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKQEAgLTY3LDggKzY3LDgg
QEAgcHVibGljOgogICAgIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJu
IG1fYmFja2VuZC5nZXQoKTsgfQogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CiAKLSAgICBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJh
bnNmb3JtLmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJlZlB0
cjxSVENSdHBUcmFuc2Zvcm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+IHRyYW5zZm9ybSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShP
cHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFJlY2Vp
dmVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBzdGQ6
OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKQEAgLTc2LDcgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IG1fY29ubmVjdGlvbjsKLSAgICBSZWZQdHI8UlRDUnRwVHJh
bnNmb3JtPiBtX3RyYW5zZm9ybTsKKyAgICBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+IG1fdHJh
bnNmb3JtOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRo
VHJhbnNmb3JtLmgKaW5kZXggNGViOWI4NDc5MTEzZGEyMTc5NWM4NzA3ZWJkZGU0Y2E2ZWEyYjRj
Zi4uODE2Y2E3OWM5ZDNiNzBiMjc5NGViOTZiODI3Y2ZhNTI5MzM2OTM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFu
c2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyV2l0aFRyYW5zZm9ybS5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5z
Zm9ybTsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2Vp
dmVyKSB7IHJldHVybiByZWNlaXZlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0YXRpYyBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyLCBSZWZQdHI8
UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gcmVjZWl2ZXIuc2V0VHJhbnNm
b3JtKFdURk1vdmUodHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwVHJh
bnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyBy
ZXR1cm4gcmVjZWl2ZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0VHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlciwgT3B0aW9uYWw8UlRDUnRw
VHJhbnNmb3JtOjpJbnRlcm5hbD4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHJlY2VpdmVyLnNldFRy
YW5zZm9ybShSVENSdHBUcmFuc2Zvcm06OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCAy
OTc0YzY0MGM5OGExYWVmZDFlMWI2ZmEyMWQxN2E2ZDY1MGE2NjM2Li41Yzg3Y2Y1NjRhNTE1MzAx
NDc5M2M0OGYyZjJkZTkyNzVjNzk3MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgiCisjaW5jbHVkZSAiUlRD
UnRwVHJhbnNmb3JtQmFja2VuZC5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFt
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCwxMSArNjksMTIgQEAgdWludDY0X3Qg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygpIGNvbnN0CiAKIHZvaWQg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYgYmFja2VuZCwgU2lkZSBzaWRlKQogeworICAgIG1faXNBdHRhY2hlZCA9IHRy
dWU7CiAgICAgbV90cmFuc2Zvcm1lci0+c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVy
KTsKICAgICBtX3RyYW5zZm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlh
VHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOwogCiAg
ICAgYmFja2VuZC5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBt
X3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7
Ci0gICAgICAgIGF1dG8gY2h1bmsgPSBmcmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gY2h1bmsg
PSBmcmFtZS0+ZGF0YSgpOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFu
c2Zvcm0oY2h1bmsuZGF0YSwgY2h1bmsuc2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgewpAQCAtODAsOSArODIsOSBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bTo6aW5pdGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZnJhbWUuc2V0RGF0YSh7
IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgp
IH0pOworICAgICAgICBmcmFtZS0+c2V0RGF0YSh7IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmRhdGEo
KSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgpIH0pOwogCi0gICAgICAgIGJhY2tlbmQtPnBy
b2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1vdmUoZnJhbWUpKTsKKyAgICAgICAgYmFja2VuZC0+
cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUoV1RGTW92ZShmcmFtZS5nZXQoKSkpOwogICAgIH0pOwog
fQogCkBAIC0xMDAsNiArMTAyLDcgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRp
YWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGIKIHZvaWQgUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmIGJhY2tlbmQpCiB7CiAgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxi
YWNrKCk7CisgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU0ZyYW1lVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5oCmluZGV4IDE1ODE5MGE5MDk2NjBjZjA0MGQwNjdlMzZh
YTU3ZmZiY2E2MTRiYWMuLmQ0N2RiOWIyOWM4YTZiZDU3OGNlMjMxYWEzMWI1NjlhMDlhZTg1Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTRnJhbWVUcmFuc2Zvcm0uaApAQCAtMjgsMzIgKzI4LDM0IEBACiAjaWYgRU5BQkxFKFdF
Ql9SVEMpCiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIlJU
Q1J0cFRyYW5zZm9ybS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0tl
eTsKIGNsYXNzIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyOworY2xhc3MgUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZDsKIAotY2xhc3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGZpbmFsIDogcHVibGljIFJU
Q1J0cFRyYW5zZm9ybSB7CitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gOiBwdWJsaWMgUmVm
Q291bnRlZDxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBTRnJhbWVUcmFuc2Zvcm0pOyB9CiAgICAgflJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOwog
CiAgICAgdm9pZCBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9wdGlvbmFsPHVpbnQ2NF90
PiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwogCisgICAgYm9vbCBpc0F0dGFjaGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0F0dGFjaGVkOyB9CisgICAgdm9pZCBpbml0aWFsaXplQmFja2Vu
ZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIGluaXRpYWxp
emVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIHdp
bGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworCiAgICAgV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgY291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBSVENSdHBTRnJhbWVUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRG
b3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCBpbml0
aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0g
ICAgdm9pZCB3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsK
LQogICAgIGVudW0gY2xhc3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKICAgICB2b2lkIGlu
aXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7CiAKKyAg
ICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CiAgICAgUmVmPFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyPiBtX3RyYW5zZm9ybWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCmluZGV4
IDk3Yjc2OThiZDhjNmQ0YjIyY2VjNjA5YTg3Y2E3MWFiMGFlNGI5NDEuLjI2NDI4ZGQ5MmY1MTU5
ZDNlOTIyYjUxMGU0ZGUwNzU2NjdhOTEyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKQEAg
LTI4LDggKzI4LDkgQEAKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJl
YW1zLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEV4cG9zZWQ9V2luZG93
LAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZl
T2JqZWN0LAotXSBpbnRlcmZhY2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogUlRDUnRwVHJhbnNm
b3JtIHsKK10gaW50ZXJmYWNlIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB7CiAgICAgY29uc3RydWN0
b3IoKTsKIAogICAgIFByb21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tl
eSBrZXksIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5z
Zm9ybS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjc3MzYwNzVkZWQ3NzZiMmY3NjljZDVlOTg0YjU3ZjM1OWQy
MTVhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNp
bmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgorI2luY2x1ZGUgIldv
cmtlci5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSk7CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrZXImIHdvcmtlciwgU3RyaW5nJiYgbmFtZSkKK3sKKyAgICBpZiAoIXdvcmtlci5oYXNSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcihuYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yLCAiTm8gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgd2FzIHJlZ2lzdGVy
ZWQgd2l0aCB0aGlzIG5hbWUiX3MgfTsKKworICAgIGlmICghd29ya2VyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiV29ya2VyIGZyYW1lIGlzIGRldGFjaGVkIl9zIH07CisKKyAgICBhdXRvIG1lc3NhZ2VDaGFu
bmVsID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSk7CisgICAgYXV0byB0cmFuc2Zvcm1NZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVsLT5w
b3J0MSgpOworICAgIGF1dG8gdHJhbnNmb3JtZXJNZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVs
LT5wb3J0MigpOworCisgICAgYXV0byB0cmFuc2Zvcm0gPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybShjb250ZXh0LCBtYWtlUmVmKHdvcmtlciksIG1ha2VSZWYoKnRyYW5zZm9y
bU1lc3NhZ2VQb3J0KSkpOworICAgIHRyYW5zZm9ybS0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAg
ICB3b3JrZXIuY3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIobmFtZSwgdHJhbnNmb3JtZXJN
ZXNzYWdlUG9ydC0+ZGlzZW50YW5nbGUoKSwgdHJhbnNmb3JtKTsKKworICAgIHJldHVybiB0cmFu
c2Zvcm07Cit9CisKK1JUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxXb3JrZXI+JiYgd29ya2VyLCBS
ZWY8TWVzc2FnZVBvcnQ+JiYgcG9ydCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkK
KyAgICAsIG1fd29ya2VyKFdURk1vdmUod29ya2VyKSkKKyAgICAsIG1fcG9ydChXVEZNb3ZlKHBv
cnQpKQoreworfQorCitSVENSdHBTY3JpcHRUcmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zv
cm0oKQoreworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpz
ZXRUcmFuc2Zvcm1lcihSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+JiYgdHJhbnNmb3Jt
ZXIpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCF0cmFuc2Zvcm1l
cikgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQoKnRoaXMsIFRhc2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgRXJyb3JFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCAiQW4gZXJyb3Igd2FzIHRocm93biBmcm9tIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyIGNvbnN0cnVjdG9yIl9zLCB7IH0sIDAsIDAsIHsgfSkpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9p
c1RyYW5zZm9ybWVySW5pdGlhbGl6ZWQpOworICAgICAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFs
aXplZCA9IHRydWU7CisgICAgICAgIG1fdHJhbnNmb3JtZXIgPSBtYWtlV2Vha1B0cih0cmFuc2Zv
cm1lci5nZXQoKSk7CisgICAgfQorICAgIHRyYW5zZm9ybWVyLT5zdGFydFBlbmRpbmdBY3Rpdml0
eSgpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgICAg
IHNldHVwVHJhbnNmb3JtZXIobV9iYWNrZW5kLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0pOwor
fQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNl
aXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxpemVU
cmFuc2Zvcm1lcihiYWNrZW5kKTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06Omlu
aXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQp
Cit7CisgICAgaW5pdGlhbGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQpOworfQorCit2b2lkIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
JikKK3sKKyAgICBjbGVhcigpOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5p
dGlhbGl6ZVRyYW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7Cisg
ICAgbV9pc0F0dGFjaGVkID0gdHJ1ZTsKKyAgICBpZiAoIXNldHVwVHJhbnNmb3JtZXIobWFrZVJl
ZihiYWNrZW5kKSkpCisgICAgICAgIG1fYmFja2VuZCA9IG1ha2VSZWYoYmFja2VuZCk7Cit9CisK
K2Jvb2wgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpzZXR1cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBU
cmFuc2Zvcm1CYWNrZW5kPiYmIGJhY2tlbmQpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgaWYgKCFtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXpl
ZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV93b3JrZXItPnBvc3RUYXNrVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gV1RG
TW92ZShiYWNrZW5kKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAodHJhbnNmb3JtZXIp
CisgICAgICAgICAgICB0cmFuc2Zvcm1lci0+c3RhcnQoV1RGTW92ZShiYWNrZW5kKSk7CisgICAg
fSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpj
bGVhcigpCit7CisgICAgbV9pc0F0dGFjaGVkID0gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fdHJhbnNmb3JtZXJMb2NrKTsKKyAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFs
aXplZCA9IGZhbHNlOworICAgIG1fd29ya2VyLT5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUo
W3RyYW5zZm9ybWVyID0gV1RGTW92ZShtX3RyYW5zZm9ybWVyKV0oYXV0byYpIG11dGFibGUgewor
ICAgICAgICBpZiAodHJhbnNmb3JtZXIpCisgICAgICAgICAgICB0cmFuc2Zvcm1lci0+Y2xlYXIo
KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGRjZWI1ZjQwZmY1
N2ZkNWZhM2NjMDc5M2E2MTA4ZTg1NTZlNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcjsKK2NsYXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ7CitjbGFzcyBXb3JrZXI7
CisKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBmaW5hbAorICAgIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4KKyAgICAsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QKKyAgICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKKyAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk7CitwdWJsaWM6
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtlciYsIFN0cmluZyYmIG5hbWUpOworICAg
IH5SVENSdHBTY3JpcHRUcmFuc2Zvcm0oKTsKKworICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgeyBy
ZXR1cm4gbV9wb3J0LmdldCgpOyB9CisKKyAgICB2b2lkIHNldFRyYW5zZm9ybWVyKFJlZlB0cjxS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4mJik7CisKKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzQXR0YWNoZWQ7IH0KKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9y
UmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgaW5pdGlhbGl6ZUJh
Y2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgd2lsbENs
ZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisKKyAgICB1c2luZyBUaHJlYWRT
YWZlUmVmQ291bnRlZDo6cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJl
ZjsKKworcHJpdmF0ZToKKyAgICBSVENSdHBTY3JpcHRUcmFuc2Zvcm0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZjxXb3JrZXI+JiYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CisKKyAgICB2b2lk
IGluaXRpYWxpemVUcmFuc2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisgICAgYm9v
bCBzZXR1cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmKTsKKyAgICB2
b2lkIGNsZWFyKCk7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgeyByZXR1cm4gIlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bSI7IH0KKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZl
RE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQorCisgICAgUmVmPFdvcmtlcj4gbV93b3JrZXI7CisgICAgUmVmPE1l
c3NhZ2VQb3J0PiBtX3BvcnQ7CisKKyAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07Cisg
ICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFja2VuZDsKKworICAgIExvY2sg
bV90cmFuc2Zvcm1lckxvY2s7CisgICAgYm9vbCBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCB7
IGZhbHNlIH07CisgICAgV2Vha1B0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4gbV90cmFuc2Zv
cm1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShX
RUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NmE5Yjk1MzFjMTc4
MjFjNjg5OWI2ZjYwMGZkNTczMGQ5ZmU5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVT
dHJlYW1zLAorICAgIEV4cG9zZWQ9V2luZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVj
dCwKK10gaW50ZXJmYWNlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSA6IEV2ZW50VGFyZ2V0IHsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoV29ya2VyIHdv
cmtlciwgRE9NU3RyaW5nIG5hbWUpOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQ
b3J0IHBvcnQ7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNjNiZThhZGMzMDI3ZTU3OGY2NmNmNGM1OWMxYjU3NGQ2ZmUyNjM1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2lu
dGVyZmFjZSBtaXhpbiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlciB7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bmRlZmluZWQgcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihE
T01TdHJpbmcgbmFtZSwgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3RvciBwcm9jZXNz
b3JDb25zdHJ1Y3Rvcik7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzM3NGQ3MjNlMDQ3NTc5ZDBmOGIzNTdmZGJjNTQ1ZTY0NWNhMzcwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm1lci5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAi
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5o
IgorI2luY2x1ZGUgIkpTUlRDRW5jb2RlZEF1ZGlvRnJhbWUuaCIKKyNpbmNsdWRlICJKU1JUQ0Vu
Y29kZWRWaWRlb0ZyYW1lLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgi
CisjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNv
dXJjZS5oIgorI2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCisjaW5jbHVkZSAiV3JpdGFibGVT
dHJlYW1TaW5rLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwUmVhZGFi
bGVTdHJlYW1Tb3VyY2UKKyAgICA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNvdXJjZQorICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZT4gY3JlYXRlKCkg
eyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSk7IH0KKwor
ICAgIHZvaWQgY2xvc2UoKSB7IGNvbnRyb2xsZXIoKS5jbG9zZSgpOyB9CisgICAgdm9pZCBlbnF1
ZXVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgeyBjb250cm9sbGVyKCkuZW5xdWV1ZSh2YWx1ZSk7IH0K
KworcHJpdmF0ZToKKyAgICBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSgpID0gZGVmYXVsdDsK
KworICAgIC8vIFJlYWRhYmxlU3RyZWFtU291cmNlCisgICAgdm9pZCBzZXRBY3RpdmUoKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHNldEluYWN0aXZlKCkgZmluYWwgeyB9CisgICAgdm9pZCBkb1N0YXJ0
KCkgZmluYWwgeyB9CisgICAgdm9pZCBkb1B1bGwoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRvQ2Fu
Y2VsKCkgZmluYWwgeyB9Cit9OworCitjbGFzcyBSVENSdHBXcml0YWJsZVN0cmVhbVNpbmsgOiBw
dWJsaWMgV3JpdGFibGVTdHJlYW1TaW5rIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ1J0
cFdyaXRhYmxlU3RyZWFtU2luaz4gY3JlYXRlKEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVmPFJUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZT4mJik+JiYgZW5xdWV1ZUZ1bmN0aW9uKSB7IHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luayhXVEZNb3ZlKGVucXVldWVGdW5jdGlv
bikpKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2lu
ayhGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPiYm
IGVucXVldWVGdW5jdGlvbikKKyAgICAgICAgOiBtX2VucXVldWVGdW5jdGlvbihXVEZNb3ZlKGVu
cXVldWVGdW5jdGlvbikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgd3JpdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBET01Qcm9taXNlRGVm
ZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQorICAgIHsKKyAgICAgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKmNvbnRleHQuZ2xvYmFsT2JqZWN0KCk7CisKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUoZ2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBhdXRvIGZyYW1lID0g
Y29udmVydDxJRExVbmlvbjxJRExJbnRlcmZhY2U8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBJRExJ
bnRlcmZhY2U8UlRDRW5jb2RlZFZpZGVvRnJhbWU+Pj4oZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisK
KyAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJl
amVjdChFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0sIFJlamVjdEFzSGFuZGxl
ZDo6WWVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6
c3dpdGNoT24oZnJhbWUsIFsmXShSZWZQdHI8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+JiB2YWx1ZSkg
eworICAgICAgICAgICAgbV9lbnF1ZXVlRnVuY3Rpb24odmFsdWUtPnRha2VSVENGcmFtZSgpKTsK
KyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENFbmNvZGVkVmlkZW9GcmFtZT4mIHZhbHVlKSB7Cisg
ICAgICAgICAgICBtX2VucXVldWVGdW5jdGlvbih2YWx1ZS0+dGFrZVJUQ0ZyYW1lKCkpOworICAg
ICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgfQorCisgICAgLy8gRklY
TUU6IERlY2lkZSB3aGV0aGVyIGNsZWFyaW5nIGFsbCBwZW5kaW5nIGZyYW1lcy4KKyAgICB2b2lk
IGNsb3NlKCkgZmluYWwgeyB9CisgICAgdm9pZCBlcnJvcihTdHJpbmcmJikgZmluYWwgeyB9CisK
KyAgICBGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYp
PiBtX2VucXVldWVGdW5jdGlvbjsKK307CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcj4+IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBhdXRvIHBvcnQgPSBkb3duY2FzdDxEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGFrZVBlbmRpbmdSVENUcmFuc2ZvbWVyTWVz
c2FnZVBvcnQoKTsKKyAgICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJObyBwZW5kaW5nIGNvbnN0cnVjdGlvbiBkYXRhIGZvciB0aGlzIFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyIl9zIH07CisKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gYWRvcHRSZWYo
Km5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb250ZXh0LCBwb3J0LnJlbGVhc2VOb25OdWxs
KCkpKTsKKyAgICB0cmFuc2Zvcm1lci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRy
YW5zZm9ybWVyOworfQorCitSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1lc3NhZ2VQb3J0
PiYmIHBvcnQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3BvcnQo
V1RGTW92ZShwb3J0KSkKK3sKK30KKworUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6On5SVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcigpCit7Cit9CisKK1JlZlB0cjxSVENSdHBSZWFkYWJsZVN0cmVhbVNv
dXJjZT4gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OnN0YXJ0U3RyZWFtcyhSVENSdHBUcmFuc2Zv
cm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2Fs
bGJhY2spOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKKworICAgIGF1dG8m
IHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CisKKyAgICBhdXRvIHJlYWRhYmxlU3RyZWFtU291cmNlID0gUlRDUnRwUmVhZGFibGVTdHJlYW1T
b3VyY2U6OmNyZWF0ZSgpOworICAgIGF1dG8gcmVhZGFibGVTdHJlYW0gPSBSZWFkYWJsZVN0cmVh
bTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgcmVhZGFibGVTdHJlYW1Tb3VyY2UuY29weVJlZigpKTsK
KyAgICBpZiAocmVhZGFibGVTdHJlYW0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byB3cml0YWJsZVN0cmVhbSA9IFdyaXRhYmxlU3RyZWFtOjpjcmVh
dGUoZ2xvYmFsT2JqZWN0LCBSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShbYmFja2Vu
ZCA9IG1ha2VSZWYoYmFja2VuZCldKGF1dG8mJiBmcmFtZSkgeworICAgICAgICBiYWNrZW5kLT5w
cm9jZXNzVHJhbnNmb3JtZWRGcmFtZShXVEZNb3ZlKGZyYW1lLmdldCgpKSk7CisgICAgfSkpOwor
ICAgIGlmICh3cml0YWJsZVN0cmVhbS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICAvLyBDYWxsIHN0YXJ0IGNhbGxiYWNrLgorICAgIEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTTmV3bHlDcmVhdGVkKCZnbG9i
YWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHJlYWRhYmxlU3RyZWFtLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKSk7CisgICAgYXJncy5hcHBlbmQodG9KU05ld2x5Q3JlYXRlZCgmZ2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCB3cml0YWJsZVN0cmVhbS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworCisg
ICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIGNhbGxi
YWNrLT5pbnZva2VDYWxsYmFjayhKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAic3RhcnQiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhp
bmcgaW4gY2FzZSBvZiBleGNlcHRpb24/IFdlIHNob3VsZCBhdCBsZWFzdCBsb2cgZXJyb3JzLgor
CisgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtU291cmNlOworfQorCit2b2lkIFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpzdGFydChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5k
KQoreworICAgIGF1dG8gcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBzdGFydFN0cmVhbXMoYmFja2Vu
ZC5nZXQoKSk7CisgICAgaWYgKCFyZWFkYWJsZVN0cmVhbVNvdXJjZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9iYWNrZW5kID0gV1RGTW92ZShiYWNrZW5kKTsKKworICAgIGF1dG8mIGNvbnRl
eHQgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisgICAgbV9iYWNrZW5kLT5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbcmVhZGFi
bGVTdHJlYW1Tb3VyY2UgPSBtYWtlV2Vha1B0cihyZWFkYWJsZVN0cmVhbVNvdXJjZS5nZXQoKSks
IGlzQXVkaW8gPSBtX2JhY2tlbmQtPm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQ6Ok1lZGlhVHlwZTo6QXVkaW8sIHRocmVhZCA9IG1ha2VSZWYoY29udGV4dC50aHJlYWQoKSld
KGF1dG8mJiBmcmFtZSkgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RU
YXNrRm9yTW9kZShbcmVhZGFibGVTdHJlYW1Tb3VyY2UsIGlzQXVkaW8sIGZyYW1lID0gV1RGTW92
ZShmcmFtZSldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFyZWFk
YWJsZVN0cmVhbVNvdXJjZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IGF1dG8mIGdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKKyAgICAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAg
ICAgICAgICBhdXRvIHZhbHVlID0gaXNBdWRpbyA/IHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2Jh
bE9iamVjdCwgUlRDRW5jb2RlZEF1ZGlvRnJhbWU6OmNyZWF0ZShXVEZNb3ZlKGZyYW1lKSkpIDog
dG9KUygmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBSVENFbmNvZGVkQXVkaW9GcmFtZTo6
Y3JlYXRlKFdURk1vdmUoZnJhbWUpKSk7CisgICAgICAgICAgICByZWFkYWJsZVN0cmVhbVNvdXJj
ZS0+ZW5xdWV1ZSh2YWx1ZSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2Rl
KCkpOworICAgIH0pOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjbGVhcigp
Cit7CisgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgbV9iYWNrZW5kLT5jbGVhclRyYW5zZm9y
bWFibGVGcmFtZUNhbGxiYWNrKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKKyAgICBzdG9w
UGVuZGluZ0FjdGl2aXR5KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMx
NWQ0MGNmYzBlZDg1MDA3NDhjMGJlZmQ3MjQyN2RhYmNmYzYwZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBKU0NhbGxiYWNrRGF0YVN0cm9uZzsKK2NsYXNzIE1lc3Nh
Z2VQb3J0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFJUQ1J0cFRyYW5z
Zm9ybUJhY2tlbmQ7CitjbGFzcyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTsKKworY2xhc3Mg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyPgorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgflJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
KCk7CisKKyAgICB2b2lkIHNldENhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0
YVN0cm9uZz4mJiBjYWxsYmFjaykgeyBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0K
KyAgICBNZXNzYWdlUG9ydCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisgICAg
dm9pZCBzdGFydChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJik7CisgICAgdm9pZCBjbGVh
cigpOworCisgICAgdm9pZCBzdGFydFBlbmRpbmdBY3Rpdml0eSgpIHsgbV9wZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsgfQorCitwcml2YXRlOgorICAgIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8TWVzc2FnZVBv
cnQ+JiYpOworCisgICAgUmVmUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiBzdGFydFN0
cmVhbXMoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0
CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lciI7IH0KKyAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IHN0b3BQ
ZW5kaW5nQWN0aXZpdHkoKTsgfQorICAgIHZvaWQgc3RvcFBlbmRpbmdBY3Rpdml0eSgpIHsgYXV0
byBwZW5kaW5nQWN0aXZpdHkgPSBXVEZNb3ZlKG1fcGVuZGluZ0FjdGl2aXR5KTsgfQorCisgICAg
UmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tE
YXRhU3Ryb25nPiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
PiBtX2JhY2tlbmQ7CisgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcj4+IG1fcGVuZGluZ0FjdGl2aXR5OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODc3NDU1N2QwNWRjNWEwNTAzZTllMTcyYmI5MmQ2NDdlNDkwMDk2ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisv
LyBGSVhNRTogQWRkIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCitb
CisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRXhw
b3NlZD1EZWRpY2F0ZWRXb3JrZXIsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorXSBp
bnRlcmZhY2UgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgeworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0XSBjb25zdHJ1Y3RvcigvKiBvcHRpb25hbCBvYmplY3QgdHJhbnNmb3Jt
T3B0aW9ucyAqLyk7CisKKyAgICAvLyBGSVhNRTogYWRkIGNvbnRyb2xsZXIgYXR0cmlidXRlLgor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXJDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTlkOWJkYjhiZTEz
NzNiZjdmZmMwZjdmMWFkOTBiODJkZjQ4NDQzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2lu
Y2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tSZXN1bHQuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lckNvbnN0cnVjdG9yIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXJDb25zdHJ1Y3Rvcj4sIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6CisgICAg
dXNpbmcgQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOworCisgICAgdmlydHVh
bCBDYWxsYmFja1Jlc3VsdDxSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBoYW5kbGVF
dmVudCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rv
ci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTcyMWU1M2Y2YjY1NWI0ZjhhYTliMTcyZTIzYjI3MDMxNGM1N2Jm
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwKQEAgLTAsMCArMSwzMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29u
ZGl0aW9uYWw9V0VCX1JUQywKK10gY2FsbGJhY2sgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25z
dHJ1Y3RvciA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3Jt
LmlkbAppbmRleCAzMzhhN2UzMDdkNjI0YzEzNGY3ODBjY2I3MTBjOGM2ODI0ZGMwZGRhLi5iOTEy
ZDAxYTZkOTk1NWEzMDRiYmIxYTVjZmQ4YTlmNTAwYzkwMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5z
Zm9ybS5pZGwKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCit0eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3IgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtKSBSVENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRpb25hbD1XRUJf
UlRDLAogICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAK
aW5kZXggYzdhYzNjNDliZDlkNzk2YjI0ODc1ZjlkOTIzMDZkM2U5M2E3NTQzYi4uM2UwMzJiNjU5
M2E3NjQzYjQ2MmQzZGZhOGUyMmZiMmIwOTQ0NmUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtMTkzLDggKzE5Mywx
MCBAQCBPcHRpb25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwU2VuZGVyOjpj
dXJyZW50VHJhbnNjZWl2ZXJEaXJlY3Rpb24oKQogICAgIHJldHVybiBzZW5kZXJUcmFuc2NlaXZl
ci0+Y3VycmVudERpcmVjdGlvbigpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5k
ZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKK0V4
Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKE9wdGlvbmFsPFJUQ1J0
cFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0pCiB7CisgICAgaWYgKHRyYW5zZm9ybSAmJiBtX3RyYW5z
Zm9ybSAmJiAqdHJhbnNmb3JtID09ICptX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBpZiAodHJhbnNmb3JtICYmIHRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJ0cmFuc2Zvcm0gaXMgYWxyZWFk
eSBpbiB1c2UiX3MgfTsKIApAQCAtMjA3LDYgKzIwOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBS
VENSdHBTZW5kZXI6OnNldFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5z
Zm9ybQogICAgIHJldHVybiB7IH07CiB9CiAKK09wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50
ZXJuYWw+IFJUQ1J0cFNlbmRlcjo6dHJhbnNmb3JtKCkKK3sKKyAgICBpZiAoIW1fdHJhbnNmb3Jt
KQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3RyYW5zZm9ybS0+aW50ZXJuYWxU
cmFuc2Zvcm0oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuaAppbmRleCA3MGFkOTU5MjcwYmIyYTI5YWUzNDkzYjFkMWViODA5NGE5YjUw
NWI1Li5lZGU0ZDlkYTBiODUwYThjYTlmODlhYTI0YzFjYWE1Nzg3YjlmNDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKQEAgLTgy
LDggKzgyLDggQEAgcHVibGljOgogICAgIFJUQ0RUTUZTZW5kZXIqIGR0bWYoKTsKICAgICBPcHRp
b25hbDxSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gY3VycmVudFRyYW5zY2VpdmVyRGlyZWN0
aW9uKCkgY29uc3Q7CiAKLSAgICBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0dXJu
IG1fdHJhbnNmb3JtLmdldCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3Jt
KFJlZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9y
bTo6SW50ZXJuYWw+IHRyYW5zZm9ybSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5z
Zm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0
cFNlbmRlcihSVENQZWVyQ29ubmVjdGlvbiYsIFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0
cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tl
bmQ+JiYpOwpAQCAtOTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
VENSdHBTZW5kZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxSVENQZWVyQ29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwogICAgIFJlZlB0cjxSVENEVE1GU2VuZGVyPiBtX2R0bWZTZW5k
ZXI7Ci0gICAgUmVmUHRyPFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgT3B0aW9u
YWw8UlRDUnRwVHJhbnNmb3JtPiBtX3RyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKaW5kZXggODcxNDM4ZWU2NjViMjZmODBl
MTUxYzE5NWVjODc2Y2NlYWFhOTMwZS4uNDZkMzdhNzczNmYxNmRjMDc5NWI5NWQ0MDU4ZWFhOTQz
ZmRhNmI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKQEAgLTM2LDggKzM2LDggQEAg
Y2xhc3MgUlRDUnRwVHJhbnNmb3JtOwogCiBjbGFzcyBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3Jt
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRDUnRw
U2VuZGVyJiBzZW5kZXIpIHsgcmV0dXJuIHNlbmRlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0YXRp
YyBFeGNlcHRpb25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJl
ZlB0cjxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0VHJh
bnNmb3JtKFdURk1vdmUodHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRw
VHJhbnNmb3JtOjpJbnRlcm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSB7IHJl
dHVybiBzZW5kZXIudHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyLCBPcHRpb25hbDxSVENSdHBUcmFuc2Zv
cm06OkludGVybmFsPiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gc2VuZGVyLnNldFRyYW5zZm9ybShS
VENSdHBUcmFuc2Zvcm06OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAppbmRleCAzYmY1ZTVlNWMyZGY3MGY5NjMwM2Rm
OTQ5NGZjNWIzMTVjNjkzYjFkLi4zYzdmY2Y0YmQyNDI3NTZlMzFjNWRiMzhhYzk2YmI4YTFmNzQw
ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uY3BwCkBAIC0zMywxMCArMzMsMzAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+IFJUQ1J0cFRyYW5zZm9ybTo6ZnJvbShP
cHRpb25hbDxJbnRlcm5hbD4mJiBpbnRlcm5hbCkKK3sKKyAgICBpZiAoIWludGVybmFsKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBSVENSdHBUcmFuc2Zvcm0oV1RGTW92ZSgqaW50
ZXJuYWwpKTsKK30KKworUlRDUnRwVHJhbnNmb3JtOjpSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwm
JiB0cmFuc2Zvcm0pCisgICAgOiBtX3RyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCit7Cit9
CisKIFJUQ1J0cFRyYW5zZm9ybTo6flJUQ1J0cFRyYW5zZm9ybSgpCiB7Ci0gICAgaWYgKG1fYmFj
a2VuZCkKLSAgICAgICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICBjbGVhckJh
Y2tlbmQoKTsKK30KKworYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQoKSBjb25zdAor
eworICAgIHJldHVybiBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENS
dHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgcmV0dXJuIHNm
cmFtZVRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpOworICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRD
UnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgIHJldHVybiBz
Y3JpcHRUcmFuc2Zvcm0tPmlzQXR0YWNoZWQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSVENSdHBU
cmFuc2Zvcm06OmF0dGFjaFRvUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyKQpAQCAt
NDQsOCArNjQsMTMgQEAgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvUmVjZWl2ZXIoUlRD
UnRwUmVjZWl2ZXImIHJlY2VpdmVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IHJlY2VpdmVyLmJhY2tlbmQoKSkKICAgICAgICAgbV9iYWNrZW5k
ID0gYmFja2VuZC0+Y3JlYXRlUlRDUnRwVHJhbnNmb3JtQmFja2VuZCgpOwotICAgIGlmIChtX2Jh
Y2tlbmQpCi0gICAgICAgIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoKm1fYmFja2VuZCk7
CisgICAgaWYgKG1fYmFja2VuZCkgeworICAgICAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZd
KFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAg
ICAgICAgIHNmcmFtZVRyYW5zZm9ybS0+aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9i
YWNrZW5kKTsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBz
Y3JpcHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlhbGl6
ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9iYWNrZW5kKTsKKyAgICAgICAgfSk7CisgICAgfQogfQog
CiB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIoUlRDUnRwU2VuZGVyJiBzZW5k
ZXIpCkBAIC01MywyNiArNzgsNTQgQEAgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvU2Vu
ZGVyKFJUQ1J0cFNlbmRlciYgc2VuZGVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IHNlbmRlci5iYWNrZW5kKCkpCiAgICAgICAgIG1fYmFja2Vu
ZCA9IGJhY2tlbmQtPmNyZWF0ZVJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQoKTsKLSAgICBpZiAobV9i
YWNrZW5kKQotICAgICAgICBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9iYWNrZW5kKTsK
KyAgICBpZiAobV9iYWNrZW5kKSB7CisgICAgICAgIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0o
UmVmUHRyPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAgICAg
ICAgICAgc2ZyYW1lVHJhbnNmb3JtLT5pbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9iYWNr
ZW5kKTsKKyAgICAgICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3Jp
cHRUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlhbGl6ZUJh
Y2tlbmRGb3JTZW5kZXIoKm1fYmFja2VuZCk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAotdm9p
ZCBSVENSdHBUcmFuc2Zvcm06OmRldGFjaEZyb21SZWNlaXZlcihSVENSdHBSZWNlaXZlciYpCit2
b2lkIFJUQ1J0cFRyYW5zZm9ybTo6Y2xlYXJCYWNrZW5kKCkKIHsKICAgICBpZiAoIW1fYmFja2Vu
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsK
KyAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zv
cm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgc2ZyYW1lVHJhbnNmb3JtLT53aWxsQ2xl
YXJCYWNrZW5kKCptX2JhY2tlbmQpOworICAgIH0sIFsmXShSZWZQdHI8UlRDUnRwU2NyaXB0VHJh
bnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+d2ls
bENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICB9KTsKKwogICAgIG1fYmFja2VuZCA9IG51
bGxwdHI7CiB9CiAKK3ZvaWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIoUlRD
UnRwUmVjZWl2ZXImKQoreworICAgIGNsZWFyQmFja2VuZCgpOworfQorCiB2b2lkIFJUQ1J0cFRy
YW5zZm9ybTo6ZGV0YWNoRnJvbVNlbmRlcihSVENSdHBTZW5kZXImKQogewotICAgIGlmICghbV9i
YWNrZW5kKQotICAgICAgICByZXR1cm47CisgICAgY2xlYXJCYWNrZW5kKCk7Cit9CiAKLSAgICB3
aWxsQ2xlYXJCYWNrZW5kKCptX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZCA9IG51bGxwdHI7Citi
b29sIG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBhLCBjb25zdCBSVENSdHBUcmFu
c2Zvcm0mIGIpCit7CisgICAgcmV0dXJuIHN3aXRjaE9uKGEubV90cmFuc2Zvcm0sIFsmXShjb25z
dCBSZWZQdHI8UlRDUnRwU0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtQSkgeworICAg
ICAgICByZXR1cm4gc3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENS
dHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm1CKSB7CisgICAgICAgICAgICByZXR1
cm4gc2ZyYW1lVHJhbnNmb3JtQS5nZXQoKSA9PSBzZnJhbWVUcmFuc2Zvcm1CLmdldCgpOworICAg
ICAgICB9LCBbJl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mKSB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0pOworICAgIH0sIFsmXShjb25zdCBSZWZQ
dHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQSkgeworICAgICAgICBy
ZXR1cm4gc3dpdGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJh
bWVUcmFuc2Zvcm0+JikgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LCBb
Jl0oY29uc3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlwdFRyYW5zZm9ybUIp
IHsKKyAgICAgICAgICAgIHJldHVybiBzY3JpcHRUcmFuc2Zvcm1BLmdldCgpID09IHNjcmlwdFRy
YW5zZm9ybUIuZ2V0KCk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2Zvcm0uaAppbmRleCBkYjdmZDg0MjdmNTgwYzg2OGFhZWM0M2UwNjdhMzhmOTA3
M2NmZTBiLi42MWI5MWVhY2U4NjhjZDdhYzc0Y2M0NGMzOTJiOTVmYzBhMjliZWJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3Jt
LmgKQEAgLTI3LDE4ICsyNywyMiBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKKyNpbmNsdWRl
ICJSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CiAKLWNs
YXNzIFdFQkNPUkVfRVhQT1JUIFJUQ1J0cFRyYW5zZm9ybSA6IHB1YmxpYyBSZWZDb3VudGVkPFJU
Q1J0cFRyYW5zZm9ybT4geworY2xhc3MgUlRDUnRwVHJhbnNmb3JtICB7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtKCk7CisgICAgdXNpbmcgSW50ZXJuYWwgPSBWYXJpYW50
PFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+LCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNm
b3JtPj47CisgICAgc3RhdGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gZnJvbShPcHRpb25h
bDxJbnRlcm5hbD4mJik7CisKKyAgICBleHBsaWNpdCBSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwm
Jik7CisgICAgflJUQ1J0cFRyYW5zZm9ybSgpOwogCiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29u
c3Q7CiAgICAgdm9pZCBhdHRhY2hUb1JlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJik7CkBAIC00Niwz
MCArNTAsMjEgQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoRnJvbVJlY2VpdmVyKFJUQ1J0cFJl
Y2VpdmVyJik7CiAgICAgdm9pZCBkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpOwogCisg
ICAgSW50ZXJuYWwgaW50ZXJuYWxUcmFuc2Zvcm0oKSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQor
CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mLCBjb25z
dCBSVENSdHBUcmFuc2Zvcm0mKTsKKwogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwotICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kJik7CisgICAgdm9pZCBjbGVhckJhY2tlbmQoKTsKIAotcHJvdGVjdGVkOgogICAgIFJl
ZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX2JhY2tlbmQ7CisgICAgSW50ZXJuYWwgbV90
cmFuc2Zvcm07CiB9OwogCi1pbmxpbmUgYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQo
KSBjb25zdAotewotICAgIHJldHVybiAhIW1fYmFja2VuZDsKLX0KLQotaW5saW5lIHZvaWQgUlRD
UnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kJikKLXsKLX0KLQotaW5saW5lIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXpl
QmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQotewotfQotCi1pbmxp
bmUgdm9pZCBSVENSdHBUcmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3Jt
QmFja2VuZCYpCitib29sIG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiwgY29uc3Qg
UlRDUnRwVHJhbnNmb3JtJik7CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJUQ1J0cFRy
YW5zZm9ybSYgYSwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBiKQogeworICAgIHJldHVybiAhKGEg
PT0gYik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2U2ZTMyODEyYmM0M2ZmMWUzZjVmYWIxMDUxNjY2ZTRlYzQz
MzVhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5pZGwKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCi0gICAgRW5hYmxlZEJ5
U2V0dGluZz1XZWJSVENJbnNlcnRhYmxlU3RyZWFtcywKLSAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X0VYUE9SVCwKLSAgICBFeHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgUlRDUnRwVHJhbnNmb3Jt
IHsKLSAgICAvLyBGSVhNRTogQWRkIHJlYWRhYmxlL3dyaXRhYmxlIGdldHRlcnMKLSAgICAvLyBy
ZWFkb25seSBhdHRyaWJ1dGUgUmVhZGFibGVTdHJlYW0gcmVhZGFibGU7Ci0gICAgLy8gcmVhZG9u
bHkgYXR0cmlidXRlIFdyaXRhYmxlU3RyZWFtIHdyaXRhYmxlOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmgKaW5kZXggNDEyMTQ5MjIwMWFlNjQ2MzViODgyOTM1NDU1ZTViOGYzNzNiYmNhOS4uYWE5
MjJkMzI3OTM3NDRhYTljZTg5OTMyNjEyZjg2ZGNiNTRjNTljYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNr
ZW5kLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUlRDUnRwVHJhbnNmb3JtQmFja2VuZCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSVENSdHBUcmFuc2Zvcm1CYWNrZW4KIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SVENSdHBUcmFuc2Zvcm1CYWNrZW5kKCkgPSBkZWZhdWx0OwogCi0gICAg
dXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSYm
KT47CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBU
cmFuc2Zvcm1hYmxlRnJhbWU+JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtYWJs
ZUZyYW1lQ2FsbGJhY2soQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRy
YW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
VHJhbnNmb3JtZWRGcmFtZShSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUmJikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJh
bnNmb3JtYWJsZUZyYW1lLmgKaW5kZXggNTcyNjM2MDA3ZWZjMjc2YzM5NThjMmU3MmMzOWEyMTNj
OWFmOTk5MC4uZGI1YjFmMTFjZjEzOGJiMDM2OGJmMTc3NDhhMzEzYzgyODNiMzE3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFRyYW5zZm9ybWFibGVGcmFtZS5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtYWJsZUZy
YW1lKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQuY3BwCmluZGV4IDAxNjJkMzBkMWZkZDMwMmEzYjVjM2VkYjM4ZGNjYjll
ZWUxMzMxMDQuLjFlNTU5NTU1NDE4ZjgxN2RjYjhkNDBmZjlkM2RmN2I1MmJjNzNmZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwCkBA
IC0yOCwxMiArMjgsMTIgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykK
IAogI2luY2x1ZGUgIkxpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIExpYldlYlJU
Q1J0cFRyYW5zZm9ybUJhY2tlbmQ6OnNldElucHV0Q2FsbGJhY2soQ2FsbGJhY2smJiBjYWxsYmFj
aykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9pbnB1dENhbGxiYWNrTG9jayk7CiAgICAgbV9pbnB1dENhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CiB9CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgTGliV2ViUlRDUnRwVHJhbnNm
b3JtQmFja2VuZDo6VHJhbnNmb3JtKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlRyYW5zZm9ybWFi
CiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5wdXRDYWxsYmFja0xv
Y2spOwogICAgICAgICBpZiAobV9pbnB1dENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX2lucHV0
Q2FsbGJhY2soTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lKFdURk1vdmUocnRjRnJhbWUp
KSk7CisgICAgICAgICAgICBtX2lucHV0Q2FsbGJhY2sobWFrZVVuaXF1ZVJlZjxMaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+KFdURk1vdmUocnRjRnJhbWUpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFmYTU1ZDk0NWM1ZTcz
OTYwN2UwNTBiNDdhMWVlOWFlYjUyZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdyaXRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdyaXRhYmxlU3RyZWFtU2luaz4geworcHVibGljOgorICAgIHZpcnR1YWwgfldy
aXRhYmxlU3RyZWFtU2luaygpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCB3cml0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlLCBET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZXJyb3IoU3RyaW5nJiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVh
bVNpbmsuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFt
U2luay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNmMDYwMDk0YjhlY2VkN2M5Njg5ZTE1ZGJjYjQ3ZGYzYTY4
M2YwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbVNpbmsuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK1sK
KyAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgor
XSBpbnRlcmZhY2UgV3JpdGFibGVTdHJlYW1TaW5rIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gUHJvbWlzZTx1bmRlZmluZWQ+IHdyaXRlKGFueSB2YWx1ZSk7CisgICAg
dW5kZWZpbmVkIGNsb3NlKCk7CisgICAgdW5kZWZpbmVkIGVycm9yKERPTVN0cmluZyBtZXNzYWdl
KTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVkZjhkNWFiNGEwMGI3YjEyYWM0ZjBlNDQ0ODVjZTQ2
ZDI3NDkwMDkuLmIwZjg5MDg5NzMyNTRmNTQxMTM5ZjI0OWU5ODFkMmE4MjU4OGVkOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0xNTgsNiArMTU4LDkgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNw
cAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5j
b2RlZEF1ZGlvRnJhbWUuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5j
cHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
SWNlVHJhbnNwb3J0LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKQEAgLTE2NSw2ICsxNjgsOCBAQCBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uSWNlRXZlbnQuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcAog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmNwcAorTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3Bw
CiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCkBAIC02MjIsNiArNjI3LDcgQEAgYmluZGluZ3Mv
anMvV2ViQ29yZUpJVE9wZXJhdGlvbnMuY3BwCiBiaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnRE
YXRhLmNwcAogYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogYmlu
ZGluZ3MvanMvV2luZG93UHJveHkuY3BwCitiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAK
IGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcAogYnJpZGdlL05QX2pzb2JqZWN0LmNwcAogYnJpZGdl
L2MvQ1J1bnRpbWVPYmplY3QuY3BwCkBAIC0zMjk1LDYgKzMzMDEsOCBAQCBKU1JUQ0RhdGFDaGFu
bmVsLmNwcAogSlNSVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAogSlNSVENEZWdyYWRhdGlvblByZWZl
cmVuY2UuY3BwCiBKU1JUQ0R0eFN0YXR1cy5jcHAKK0pTUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3Bw
CitKU1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcAogSlNSVENJY2VDYW5kaWRhdGUuY3BwCiBKU1JU
Q0ljZUNhbmRpZGF0ZUluaXQuY3BwCiBKU1JUQ0ljZUNhbmRpZGF0ZVR5cGUuY3BwCkBAIC0zMzIz
LDEyICszMzMxLDE0IEBAIEpTUlRDUnRwUGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwUmVjZWl2ZXIu
Y3BwCiBKU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5j
cHAKK0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcAorSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
ci5jcHAKK0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5jcHAKIEpTUlRDUnRw
U2VuZFBhcmFtZXRlcnMuY3BwCiBKU1JUQ1J0cFNlbmRlci5jcHAKIEpTUlRDUnRwU3luY2hyb25p
emF0aW9uU291cmNlLmNwcAogSlNSVENSdHBUcmFuc2NlaXZlci5jcHAKIEpTUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24uY3BwCi1KU1JUQ1J0cFRyYW5zZm9ybS5jcHAKIEpTUlRDU2RwVHlwZS5j
cHAKIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAogSlNSVENTZXNzaW9uRGVzY3JpcHRpb25J
bml0LmNwcApAQCAtMzcyMSw2ICszNzMxLDcgQEAgSlNXb3JrbGV0T3B0aW9ucy5jcHAKIEpTV3Jp
dGFibGVTdHJlYW0uY3BwCiBKU1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCiBK
U1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5jcHAKK0pTV3JpdGFibGVTdHJlYW1TaW5rLmNw
cAogSlNYTUxEb2N1bWVudC5jcHAKIEpTWE1MSHR0cFJlcXVlc3QuY3BwCiBKU1hNTEh0dHBSZXF1
ZXN0RXZlbnRUYXJnZXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTA0MTQ4Y2E4ZjI4ZjFkMjljMGMyNmIyZTVlZDE2NDIw
M2JjMzZiMi4uMzRjMjEyNzY0MzBkYWYzMDhiN2U0NDQwMjVlMmQyNjE2MWZmOThiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTEwNSw5ICsxMTA1LDYgQEAKIAkJNDE4MUM1Q0IyNTU1ODJFNDAwQUVCMEZGIC8qIFJUQ1J0cFRy
YW5zZm9ybWFibGVGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4MUM1Q0EyNTU1ODJFMzAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybWFibGVG
cmFtZS5oICovOyB9OwogCQk0MTgxQzVDRDI1NTU4MzY5MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtYWJsZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTgxQzVDQzI1NTU4MzY4MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNm
b3JtYWJsZUZyYW1lLmggKi87IH07CiAJCTQxODFDNUQxMjU1NTg5NTYwMEFFQjBGRiAvKiBMaWJX
ZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVDRjI1NTU4OTU2MDBBRUIwRkYgLyogTGliV2ViUlRDUnRw
VHJhbnNmb3JtQmFja2VuZC5oICovOyB9OwotCQk0MTgxQzVENjI1NTVDMUI5MDBBRUIwRkYgLyog
TW9ja1JUQ1J0cFRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE4MUM1RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zv
cm0uaCAqLzsgfTsKLQkJNDE4MUM1RDcyNTU1QzQ5QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDE4MUM1RDMyNTU1QzFCMTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9
OwotCQk0MTgxQzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkYzRTky
MUMxRjg1NTUwMDYxREJFNCAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwICovOyB9OwogCQk0
MTgxQzY0ODI1NUI0QzI4MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQyMjU1QjRD
MjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQxODFDNjRBMjU1QjRDMjgwMEFFQjBG
RiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxODFDNjQ0MjU1QjRDMjcwMEFFQjBGRiAvKiBSVENSdHBTRnJh
bWVUcmFuc2Zvcm0uaCAqLzsgfTsKIAkJNDE4MjA1NDcxRTUzRTk4QzAwRDYyMjA3IC8qIFJUQ0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODIwNTQ1MUU1M0M4Q0QwMEQ2MjIwNyAvKiBSVENDb250cm9sbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1NzMsNyArNzU3MCw2IEBA
CiAJCTQxM0MyQzMzMUJDMjlBN0IwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMjQyNTUyRUVBOTAwRTY1MDU1IC8qIFJUQ1J0cFJl
Y2VpdmVyK1RyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gIlJUQ1J0cFJlY2Vp
dmVyK1RyYW5zZm9ybS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIy
NjI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gIlJUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNDEzQzhCMjkyNTUyRjAxMzAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5z
Zm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwVHJhbnNmb3JtLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzQzhCMkUyNTUyRjI3QjAwRTY1MDU1IC8qIFJU
Q1J0cFNlbmRlcldpdGhUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUlRDUnRwU2VuZGVyV2l0aFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0MTNDOEIyRjI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MTNDOEIzMDI1NTJGMjdDMDBFNjUwNTUgLyogUlRDUnRwUmVj
ZWl2ZXJXaXRoVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJU
Q1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzU4Miw2ICs3NTc4LDI3IEBACiAJCTQxM0UwMDc4MURCMEU0REUwMDIzNDFEMiAvKiBNZW1v
cnlSZWxlYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeVJlbGVh
c2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzRTAwN0IxREIwRTcwNzAwMjM0
MUQyIC8qIE1lbW9yeVJlbGVhc2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE1lbW9yeVJlbGVhc2VDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzRkM0Q0QxRkQxREQ4QzAwNTQxQzRCIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRR
dWVyeU9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdv
cmtlckNsaWVudFF1ZXJ5T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTQxODlFRjI1NjJERjBDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjAyNTYyREY1NTAwMzYz
NDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE0MTg5RjEyNTYyREY1NjAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUYyMjU2MkUzMkIwMDM2MzQxNyAvKiBSVENS
dHBTY3JpcHRUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4
OUYzMjU2MkUzMkMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY0MjU2MkUzMkMwMDM2MzQx
NyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0MTg5RjUyNTYyRTMyRDAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY2MjU2MkU2
N0EwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjcyNTYyRTY3QTAw
MzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGOTI1NjQxNjUwMDAzNjM0MTcgLyog
UlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFJUQ0VuY29k
ZWRBdWRpb0ZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RkEy
NTY0MTY1MTAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSVENFbmNvZGVkVmlkZW9GcmFtZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxNDE4OUZCMjU2NDE3NTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkQXVkaW9GcmFt
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGRDI1NjQxNzY2MDAzNjM0
MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDE0MTg5RkUyNTY0MThFMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRBdWRpb0ZyYW1l
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RkYyNTY0MThFNzAwMzYz
NDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0MThBMDAyNTY0MzU5NzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtU2lu
ay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW1TaW5rLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDIyNTY0MzU5ODAwMzYzNDE3IC8qIFdy
aXRhYmxlU3RyZWFtU2luay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0
YWJsZVN0cmVhbVNpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDMy
NTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDE0MThBMDQyNTY0M0UxMzAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4QTA1MjU2NjYwQUYwMDM2MzQxNyAvKiBSVENF
bmNvZGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRD
RW5jb2RlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDYy
NTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSVENFbmNvZGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE0NDYwQTAyNDEyOTk0MTAwODE0QkU3IC8qIE1lZGlhU2Vzc2lvbklkZW50aWZpZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZXNzaW9uSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ1OThCRTIzQzhBQUI4MDAyQjlD
QzggLyogU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTQ1OThDMDIzQzhBRDc4MDAyQjlDQzggLyogTG9jYWxTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2
OTcsOSArNzcxNCw2IEBACiAJCTQxODFDNUNDMjU1NTgzNjgwMEFFQjBGRiAvKiBMaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2Vi
UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxODFDNUNFMjU1NTg5NTUwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExpYldlYlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQuY3BwOyBwYXRoID0gbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzVDRjI1NTU4
OTU2MDBBRUIwRkYgLyogTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg7IHBh
dGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk0MTgxQzVEMzI1NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0
cFRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
UlRDUnRwVHJhbnNmb3JtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE4MUM1
RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk0MTgxQzYzNjI1NUFFMjYxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRy
YW5zZm9ybS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODFDNjNGMjU1QjRDMjUwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVU
cmFuc2Zvcm1lckNvY29hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTgxQzY0MTI1NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1l
VHJhbnNmb3JtZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTgxQzY0MjI1
NUI0QzI2MDBBRUIwRkYgLyogUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDMwLDYgKzE3MDQ0LDE0IEBACiAJCQkJMDcyMjFCNkUx
N0NFQzMyNzAwODQ4RTUxIC8qIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsICovLAogCQkJCTQx
RkNCNzVFMjE0ODY2RkYwMDM4QURDNiAvKiBSVENEdHhTdGF0dXMuaCAqLywKIAkJCQk0MUZDQjc1
NzIxNDg2NUQxMDAzOEFEQzYgLyogUlRDRHR4U3RhdHVzLmlkbCAqLywKKwkJCQk0MTQxODlGRTI1
NjQxOEUwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwICovLAorCQkJCTQxNDE4
OUZCMjU2NDE3NTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5oICovLAorCQkJCTQx
NDE4OUY5MjU2NDE2NTAwMDM2MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwgKi8sCisJ
CQkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5jcHAgKi8sCisJ
CQkJNDE0MThBMDYyNTY2NjBCMDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFtZS5oICovLAorCQkJ
CTQxNDE4OUZGMjU2NDE4RTcwMDM2MzQxNyAvKiBSVENFbmNvZGVkVmlkZW9GcmFtZS5jcHAgKi8s
CisJCQkJNDE0MTg5RkQyNTY0MTc2NjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmgg
Ki8sCisJCQkJNDE0MTg5RkEyNTY0MTY1MTAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbCAqLywKIAkJCQkwNzIyMUI3MTE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRl
LmNwcCAqLywKIAkJCQkwNzIyMUI3MjE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRl
LmggKi8sCiAJCQkJMDcyMjFCNzMxN0NFQzMyNzAwODQ4RTUxIC8qIFJUQ0ljZUNhbmRpZGF0ZS5p
ZGwgKi8sCkBAIC0xNzA5MCw2ICsxNzExMiwxNSBAQAogCQkJCTQxM0M4QjMwMjU1MkYyN0MwMEU2
NTA1NSAvKiBSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaCAqLywKIAkJCQk0MUZDQjc2MDIx
NDg2NzAwMDAzOEFEQzYgLyogUlRDUnRwUnR4UGFyYW1ldGVycy5oICovLAogCQkJCTQxRkNCNzU4
MjE0ODY1RDIwMDM4QURDNiAvKiBSVENSdHBSdHhQYXJhbWV0ZXJzLmlkbCAqLywKKwkJCQk0MTQx
ODlGNDI1NjJFMzJDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmNwcCAqLywKKwkJ
CQk0MTQxODlGMjI1NjJFMzJCMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmggKi8s
CisJCQkJNDE0MTg5RjAyNTYyREY1NTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5p
ZGwgKi8sCisJCQkJNDE0MTg5RjMyNTYyRTMyQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyLmNwcCAqLywKKwkJCQk0MTQxODlGNTI1NjJFMzJEMDAzNjM0MTcgLyogUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIuaCAqLywKKwkJCQk0MTQxODlGMTI1NjJERjU2MDAzNjM0MTcgLyogUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsICovLAorCQkJCTQxNDE4OUY2MjU2MkU2N0EwMDM2MzQx
NyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmggKi8sCisJCQkJNDE0MTg5
RjcyNTYyRTY3QTAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3Iu
aWRsICovLAorCQkJCTQxNDE4OUVGMjU2MkRGMEMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFu
c2Zvcm1Qcm92aWRlci5pZGwgKi8sCiAJCQkJNDEzQzhCMjYyNTUyRUVBOTAwRTY1MDU1IC8qIFJU
Q1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsICovLAogCQkJCTVFMkM0MzU5MUJDRUUzMEQwMDAxRTJC
QyAvKiBSVENSdHBTZW5kZXIuY3BwICovLAogCQkJCTVFMkM0MzVBMUJDRUUzMEQwMDAxRTJCQyAv
KiBSVENSdHBTZW5kZXIuaCAqLywKQEAgLTE3MTEzLDcgKzE3MTQ0LDYgQEAKIAkJCQkzMTZEQ0Ix
NzFFNzhDMzMwMDAxQjVGODcgLyogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsICovLAog
CQkJCTQxODFDNUM2MjU1NTczNTEwMEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm0uY3BwICovLAog
CQkJCTQxM0M4QjJGMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaCAqLywKLQkJ
CQk0MTNDOEIyOTI1NTJGMDEzMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmlkbCAqLywKIAkJ
CQk0MTgxQzVDQTI1NTU4MkUzMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgg
Ki8sCiAJCQkJNDE4MUM1QzgyNTU1NzNERjAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybUJhY2tl
bmQuaCAqLywKIAkJCQk0MTBGNTY1ODI0RkNGODU0MDBBMkU1MEMgLyogUlRDU2RwVHlwZS5pZGwg
Ki8sCkBAIC0xOTI2OCw5ICsxOTI5OCw2IEBACiAJCQkJQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdD
IC8qIE1vY2tQYXltZW50TWV0aG9kLmggKi8sCiAJCQkJQTE0MDYxODkxRTJFQ0EwQTAwMzJCMzRF
IC8qIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQlBMTQwNjE4QTFFMkVDQTBB
MDAzMkIzNEUgLyogTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQuaCAqLywKLQkJCQk0MTgxQzVEMzI1
NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi8sCi0JCQkJNDE4MUM1
RDUyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uaCAqLywKLQkJCQk0MTgx
QzYzNjI1NUFFMjYxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwgKi8sCiAJCQkJ
NTcxNTYxMDgyMzRDMUIzMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24uaCAqLywKIAkJCQk1NzE1NjEwRDIzNEM3NDgxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgKi8sCiAJCQkJNDE3RjBEODAxRkZFRTE0RjAwOEVG
MzAzIC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwICovLApAQCAtMTkzODcsNiArMTk0MTQs
OCBAQAogCQkJCTQxNzY2NzMwMjREQzA4RUEwMDhCRkUyOCAvKiBXcml0YWJsZVN0cmVhbURlZmF1
bHRXcml0ZXIuaWRsICovLAogCQkJCTQxNzY2NzMyMjREQzA4RUIwMDhCRkUyOCAvKiBXcml0YWJs
ZVN0cmVhbURlZmF1bHRXcml0ZXIuanMgKi8sCiAJCQkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjc1
IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzICovLAorCQkJCTQxNDE4QTAyMjU2NDM1OTgw
MDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbVNpbmsuaCAqLywKKwkJCQk0MTQxOEEwMDI1NjQzNTk3
MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1TaW5rLmlkbCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
c3RyZWFtczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNjgxOSw2ICsyNjg0OCw4
IEBACiAJCQkJMEYwOTlEMDcxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlci5oICovLAogCQkJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQcm94
eS5jcHAgKi8sCiAJCQkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Lmgg
Ki8sCisJCQkJNDE0MThBMDMyNTY0M0UxMjAwMzYzNDE3IC8qIFdyaXRhYmxlU3RyZWFtLmNwcCAq
LywKKwkJCQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzM0
ODEsNyArMzM1MTIsNiBAQAogCQkJCTRBMEZGQTlFMUFBRjVFN0UwMDYyODAzQiAvKiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFRTc2RUMxQkU5
NkRCMDAwRjg5MTMzIC8qIE1vY2tSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0VFNzZFRjFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VN
YWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxODFDNUQ2MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2Nr
UlRDUnRwVHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREYyQjAxNzE4MjA1NDA3MDBG
MkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTU3MSw3ICszNTYwMSw2IEBACiAJCQkJQTEw
NEVDNUQyMjBBM0U0QjAwQ0JGNjdBIC8qIEpTTW9ja1BheW1lbnRDb250YWN0RmllbGRzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExNDZEMzFBMUY5OUJDRjgwMEQyOTE5NiAvKiBKU01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFCQjg1QjgyMTU5QjNBNDAw
NjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTgx
QzYzOTI1NUFFOTBGMDBBRUIwRkYgLyogSlNNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTU3MTU2MTE0MjM0QzdGRDYwMDhGQzdBQiAvKiBKU01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDI3REE3MUQxMzcz
NURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdvcmtlckludGVybmFscy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFQkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zNTU4Nyw3ICszNTYxNiw2IEBACiAJCQkJMkQ5N0YwNDcxOURE
NDEzQzAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBMUFGRURFNzFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQwNjE4QjFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1By
ZXZpZXdMb2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDE4MUM1RDcyNTU1QzQ5
QTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUE1RjNCOEYxNkNDNEIzOTAwNDU1RUIwIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxN0YwRDgyMUZGRUU5NzkwMDhFRjMwMyAvKiBTZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRDQxQzY3MjI1Njg3
NEYwMDY5Nzk0MiAvKiBTZXJ2aWNlV29ya2VySW50ZXJuYWxzLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCmluZGV4IDFlMTY4YjdkZGFiZjQwZTg5MWY2ZGQ1N2Jj
MDMzMDBhOWYwZWM4M2UuLjA4OWIyYjAzZDY1ZDdmZDRjMzdmNTViY2QxYTM0Y2UxM2Q0OWI4YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVm
YXVsdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwCkBAIC04OSw2ICs4OSwyMiBAQCB2b2lkIFJl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVycm9yKGNvbnN0IEV4Y2VwdGlvbiYgZXhj
ZXB0aW9uKQogICAgIGludm9rZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJGdW5jdGlv
bihnbG9iYWxPYmplY3QoKSwgcHJpdmF0ZU5hbWUsIGFyZ3VtZW50cyk7CiB9CiAKK2Jvb2wgUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZShKU0M6OkpTVmFsdWUgdmFsdWUp
Cit7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IHRoaXMt
Pmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
OworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZCgmanNDb250cm9sbGVy
KCkpOworICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOworCisgICAgYXV0byogY2xpZW50RGF0
YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2JhbE9iamVjdC52bSgp
LmNsaWVudERhdGEpOworICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0YS0+YnVpbHRp
bkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5yZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZVByaXZhdGVOYW1lKCk7CisKKyAgICByZXR1cm4g
aW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGdsb2JhbE9iamVj
dCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKK30KKwogYm9vbCBSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmIGJ1ZmZl
cikKIHsKICAgICBpZiAoIWJ1ZmZlcikgewpAQCAtMTA5LDE0ICsxMjUsNyBAQCBib29sIFJlYWRh
YmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXI6OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCgmanND
b250cm9sbGVyKCkpOwotICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwotCi0gICAgYXV0byog
Y2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4obGV4aWNhbEdsb2JhbE9i
amVjdC52bSgpLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHByaXZhdGVOYW1lID0gY2xpZW50RGF0
YS0+YnVpbHRpbkZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMoKS5y
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRW5xdWV1ZVByaXZhdGVOYW1lKCk7Ci0KLSAg
ICByZXR1cm4gaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGds
b2JhbE9iamVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKKyAgICByZXR1cm4gZW5xdWV1
ZSh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuaAppbmRleCA2ZDEyMzQzNDI0NWM0YWY3NjA4YjBkOGMwZmYxOWJlYTM5OTE2OWRkLi44ODRj
MGE5YWM3NzNjOTM1M2EzNGQwZDc2ZDgwMjgzMGJjYmExMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyKEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciog
Y29udHJvbGxlcikgOiBtX2pzQ29udHJvbGxlcihjb250cm9sbGVyKSB7IH0KIAogICAgIGJvb2wg
ZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJik7CisgICAgYm9vbCBlbnF1ZXVlKEpT
Qzo6SlNWYWx1ZSk7CiAgICAgdm9pZCBlcnJvcihjb25zdCBFeGNlcHRpb24mKTsKICAgICB2b2lk
IGNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaAppbmRleCAxNGQ2ZGY0NzIxODIxY2U1OTEyZjE1OGVjNDEwMDMyOWYzNmJlMDMw
Li4wZjc0N2NkZjFlYmRkZDY5ZDQzZDgxYWM5MmM0NzQ1NmI3YTM0N2Q4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC0yMjAsNiAr
MjIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKFJUQ1BlZXJDb25uZWN0aW9u
SWNlRXZlbnQpIFwKICAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAogICAgIG1hY3JvKFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybSkgXAorICAgIG1hY3JvKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSkgXAog
ICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAogICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBc
CiAgICAgbWFjcm8oUlRDUnRwVHJhbnNmb3JtKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjI5NjliZGUxNWYzOTc2OGFkMzQ2
ZTc3ZThjY2Q1MzYwYjRmNDc1YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9OIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBDQU5PTiBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldyaXRhYmxlU3RyZWFtLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U2VxdWVuY2Vz
LmgiCisjaW5jbHVkZSAiSlNXcml0YWJsZVN0cmVhbVNpbmsuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
SlNDbGllbnREYXRhLmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworRXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gV3JpdGFibGVTdHJlYW06
OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWZQdHI8
V3JpdGFibGVTdHJlYW1TaW5rPiYmIHNpbmspCit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisKKyAgICBhdXRvKiBjb25z
dHJ1Y3RvciA9IEpTQzo6YXNPYmplY3QoZ2xvYmFsT2JqZWN0LmdldCgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5Xcml0YWJsZVN0cmVhbVByaXZhdGVOYW1l
KCkpKTsKKworICAgIGF1dG8gY29uc3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGNv
bnN0cnVjdG9yKTsKKyAgICBBU1NFUlQoY29uc3RydWN0RGF0YS50eXBlICE9IENhbGxEYXRhOjpU
eXBlOjpOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5h
cHBlbmQoc2luayA/IHRvSlNOZXdseUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9i
YWxPYmplY3QsIHNpbmsucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzVW5kZWZpbmVkKCkpOwor
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOworCisgICAgSlNPYmplY3QqIG9iamVj
dCA9IEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29u
c3RydWN0RGF0YSwgYXJncyk7CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3Rp
bmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0LCAq
anNDYXN0PEpTV3JpdGFibGVTdHJlYW0qPihvYmplY3QpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVkYjgwNTg5YzAy
ZjA2ZjFkODQ0NDUxOWIzNjNjMGRhZWVmYjRiOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmgKQEAgLTAsMCArMSw4NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlICJKU0RPTUd1YXJkZWRPYmplY3QuaCIK
KyNpbmNsdWRlICJKU1dyaXRhYmxlU3RyZWFtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgV3JpdGFibGVTdHJlYW1TaW5rOworCitjbGFzcyBXcml0YWJsZVN0cmVhbSBmaW5hbCA6
IHB1YmxpYyBET01HdWFyZGVkPEpTV3JpdGFibGVTdHJlYW0+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFdyaXRhYmxlU3RyZWFtPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNXcml0YWJsZVN0cmVhbSYganNTdHJlYW0pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V3JpdGFibGVTdHJlYW0oZ2xvYmFsT2JqZWN0LCBqc1N0cmVhbSkpOyB9CisKKyAgICBzdGF0aWMg
RXhjZXB0aW9uT3I8UmVmPFdyaXRhYmxlU3RyZWFtPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBSZWZQdHI8V3JpdGFibGVTdHJlYW1TaW5rPiYmKTsKKyAgICBKU1dyaXRhYmxlU3RyZWFt
KiB3cml0YWJsZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQorCitwcml2YXRl
OgorICAgIFdyaXRhYmxlU3RyZWFtKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNXcml0YWJsZVN0cmVh
bSYpOworfTsKKworc3RydWN0IEpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyIHsKKyAg
ICBzdGF0aWMgUmVmUHRyPFdyaXRhYmxlU3RyZWFtPiB0b1dyYXBwZWQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gSlNDOjpqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4odm0sICZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgaWYgKCFnbG9iYWxP
YmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvKiBXcml0
YWJsZVN0cmVhbSA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU1dyaXRhYmxlU3RyZWFtKj4odm0sIHZh
bHVlKTsKKyAgICAgICAgaWYgKCFXcml0YWJsZVN0cmVhbSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgICAgIHJldHVybiBXcml0YWJsZVN0cmVhbTo6Y3JlYXRlKCpnbG9iYWxP
YmplY3QsICpXcml0YWJsZVN0cmVhbSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3Qg
SlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFdyaXRhYmxlU3RyZWFtPiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gSlNXcml0YWJsZVN0cmVhbVdyYXBwZXJDb252ZXJ0ZXI7CisgICAgdXNp
bmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFJlZlB0cjxXcml0YWJsZVN0cmVhbT47CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzU3RhdGUgPSB0cnVlOworfTsKKworaW5saW5lIFdyaXRh
YmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBKU1dyaXRhYmxlU3RyZWFtJiBXcml0YWJsZVN0cmVhbSkKKyAgICA6IERPTUd1YXJkZWQ8SlNX
cml0YWJsZVN0cmVhbT4oZ2xvYmFsT2JqZWN0LCBXcml0YWJsZVN0cmVhbSkKK3sKK30KKworaW5s
aW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgV3JpdGFibGVTdHJlYW0qIHN0cmVhbSkKK3sKKyAgICByZXR1cm4gc3RyZWFtID8g
c3RyZWFtLT53cml0YWJsZVN0cmVhbSgpIDogSlNDOjpqc1VuZGVmaW5lZCgpOworfQorCitpbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgUmVmPFdyaXRhYmxlU3RyZWFtPiYmIHN0cmVhbSkKK3sKKyAgICBy
ZXR1cm4gc3RyZWFtLT53cml0YWJsZVN0cmVhbSgpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBhOWRhOTQ1MjhmMWI0MGZjYmRlODlmYTBjNTRl
MmVkZjE5ODk4OGIyLi4xYzkyOWQ4MGRlNWViZmVlMDQwZmI1ODA3OGNkYzcxZTc2YzE4ZTU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTM4LDYgKzM4LDcg
QEAgUmVtb3RlUGxheWJhY2sgY29uZGl0aW9uYWw9V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUCiBS
VENEYXRhQ2hhbm5lbCBjb25kaXRpb25hbD1XRUJfUlRDCiBSVENEVE1GU2VuZGVyIGNvbmRpdGlv
bmFsPVdFQl9SVEMKIFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPVdFQl9SVEMKK1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybSBjb25kaXRpb25hbD1XRUJfUlRDCiBTZXJ2aWNlV29ya2VyIGNvbmRp
dGlvbmFsPVNFUlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGNvbmRpdGlvbmFs
PVNFUlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgY29uZGl0aW9uYWw9U0VS
VklDRV9XT1JLRVIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlM2RmZTc5
NTE2YzM1OWFkODQwNzdiZjVmZTg1MmZiOTFmN2UzZWQwLi5hZDYzN2ZmNDRmOTZmMGI1NGUxZjE2
ZDgzZDE5OGQ2YTM0MzBhNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC0xMzgsNyArMTM4LDYgQEAKICNpbmNsdWRlICJNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJNb2NrUGFnZU92ZXJsYXkuaCIKICNpbmNsdWRlICJNb2NrUGFnZU92ZXJs
YXlDbGllbnQuaCIKLSNpbmNsdWRlICJNb2NrUlRDUnRwVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAi
TmF2aWdhdG9yQmVhY29uLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oIgpAQCAtMTU3NywxMSArMTU3Niw2IEBA
IHZvaWQgSW50ZXJuYWxzOjpzZXRXZWJSVENWUDlWVEJTdXBwb3J0KGJvb2wgdmFsdWUpCiAjZW5k
aWYKIH0KIAotUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IEludGVybmFsczo6Y3JlYXRlTW9ja1JU
Q1J0cFRyYW5zZm9ybSgpCi17Ci0gICAgcmV0dXJuIE1vY2tSVENSdHBUcmFuc2Zvcm06OmNyZWF0
ZSgpOwotfQotCiB1aW50NjRfdCBJbnRlcm5hbHM6OnNmcmFtZUNvdW50ZXIoY29uc3QgUlRDUnRw
U0ZyYW1lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiB7CiAgICAgcmV0dXJuIHRyYW5zZm9ybS5jb3Vu
dGVyRm9yVGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjgzN2Mz
YjNhMDRkMzYwMzA1N2RlMjc1NDAyM2FlNzI3ZmVlYTkyZi4uMThjNDVlYmMzNjMwZTk0YTk3YjAy
ZDYzNDQ3ZGFmNGQwZWQyN2QzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJIRVZDVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKLSNpbmNsdWRlICJNb2NrUlRDUnRwVHJh
bnNmb3JtLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgogI2luY2x1ZGUgIlBh
Z2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgpAQCAt
NjEwLDcgKzYwOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYlJUQ0gyNjVTdXBwb3J0KGJv
b2wpOwogICAgIHZvaWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sKTsKICAgICB2b2lkIHNldFdl
YlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbCk7Ci0gICAgUmVmPE1vY2tSVENSdHBUcmFuc2Zvcm0+IGNy
ZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKICAgICB1aW50NjRfdCBzZnJhbWVDb3VudGVyKGNv
bnN0IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSYpOwogICAgIHZvaWQgc2V0RW5hYmxlV2ViUlRDRW5j
cnlwdGlvbihib29sKTsKICAgICB2b2lkIHNldFVzZURUTFMxMChib29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhZTNhNjFmY2EwM2RjNGI2Njc0NzNkMDA1ZjgyOGUx
NWUwYjk5ODNhLi41NDNhOTU0MGVjNGM2MzRhY2JhM2VlYzY2MThmMDM2NjE2NjFjYzRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC04MDIsNyArODAyLDYgQEAgZW51bSBU
cmVlVHlwZSB7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuZGVmaW5lZCBzZXRXZWJSVENI
MjY1U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1
bmRlZmluZWQgc2V0V2ViUlRDVlA5U3VwcG9ydChib29sZWFuIGFsbG93ZWQpOwogICAgIFtDb25k
aXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29sZWFu
IGFsbG93ZWQpOwotICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSBNb2NrUlRDUnRwVHJhbnNmb3Jt
IGNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10g
dW5zaWduZWQgbG9uZyBsb25nIHNmcmFtZUNvdW50ZXIoUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIHRy
YW5zZm9ybSk7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNXSB1bmRlZmluZWQgc2V0
TW9ja0F1ZGlvVHJhY2tDaGFubmVsTnVtYmVyKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIHVuc2ln
bmVkIHNob3J0IGNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1JUQ1J0cFRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBU
cmFuc2Zvcm0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDNhMTZhODRlOGVk
OWEyN2Q4MGMxNGFiOGZjZjg1YjMwMmZiZDY0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5z
Zm9ybS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJNb2NrUlRDUnRwVHJhbnNmb3JtLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1JUQykKLQotI2lu
Y2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TW9ja1JUQ1J0cFRyYW5zZm9ybWVyLCBXVEY6
OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNb2Nr
UlRDUnRwVHJhbnNmb3JtZXI+IGNyZWF0ZShSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBi
YWNrZW5kKQotICAgIHsKLSAgICAgICAgYXV0byB0cmFuc2Zvcm1lciA9IGFkb3B0UmVmKCpuZXcg
TW9ja1JUQ1J0cFRyYW5zZm9ybWVyKFdURk1vdmUoYmFja2VuZCkpKTsKLSAgICAgICAgdHJhbnNm
b3JtZXItPm1fYmFja2VuZC0+c2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2soW3RyYW5zZm9y
bWVyXShhdXRvJiYgZnJhbWUpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0o
V1RGTW92ZShmcmFtZSkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVy
OwotICAgIH0KLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9iYWNrZW5kLT5j
bGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7Ci0gICAgICAgIG1fYmFja2VuZCA9IG51
bGxwdHI7Ci0gICAgfQotCi0gICAgdm9pZCB0cmFuc2Zvcm0oUlRDUnRwVHJhbnNmb3JtYWJsZUZy
YW1lJiYgZnJhbWUpCi0gICAgewotICAgICAgICBtX2lzUHJvY2Vzc2luZyA9IHRydWU7Ci0KLSAg
ICAgICAgYXV0byBkYXRhID0gZnJhbWUuZGF0YSgpOwotICAgICAgICBWZWN0b3I8dWludDhfdD4g
dHJhbnNmb3JtZWREYXRhOwotICAgICAgICBzaXplX3Qgc3RhcnQgPSBtX2lzQXVkaW8gPyAwIDog
MTAwOwotICAgICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IHN0YXJ0OyArK2NwdHIp
Ci0gICAgICAgICAgICB0cmFuc2Zvcm1lZERhdGEuYXBwZW5kKGRhdGEuZGF0YVtjcHRyXSk7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGNwdHIgPSBzdGFydDsgY3B0ciA8IGRhdGEuc2l6ZTsgKytjcHRy
KQotICAgICAgICAgICAgdHJhbnNmb3JtZWREYXRhLmFwcGVuZCgyNTYgLSBkYXRhLmRhdGFbY3B0
cl0pOwotICAgICAgICBmcmFtZS5zZXREYXRhKHsgdHJhbnNmb3JtZWREYXRhLmRhdGEoKSwgZGF0
YS5zaXplIH0pOwotCi0gICAgICAgIG1fYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9ybWVkRnJhbWUo
V1RGTW92ZShmcmFtZSkpOwotICAgIH0KLQotICAgIGJvb2wgaXNQcm9jZXNzaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9pc1Byb2Nlc3Npbmc7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBNb2Nr
UlRDUnRwVHJhbnNmb3JtZXIoUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2VuZCkK
LSAgICAgICAgOiBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKLSAgICAgICAgLCBtX2lzU2Vu
ZGVyKG1fYmFja2VuZC0+c2lkZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OlNpZGU6OlNl
bmRlcikKLSAgICAgICAgLCBtX2lzQXVkaW8obV9iYWNrZW5kLT5tZWRpYVR5cGUoKSA9PSBSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kOjpNZWRpYVR5cGU6OkF1ZGlvKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4gbV9iYWNrZW5kOwotICAgIGJvb2wgbV9p
c1NlbmRlcjsKLSAgICBib29sIG1faXNBdWRpbzsKLSAgICBib29sIG1faXNQcm9jZXNzaW5nIHsg
ZmFsc2UgfTsKLX07Ci0KLU1vY2tSVENSdHBUcmFuc2Zvcm06Ok1vY2tSVENSdHBUcmFuc2Zvcm0o
KQotewotfQotCi1Nb2NrUlRDUnRwVHJhbnNmb3JtOjp+TW9ja1JUQ1J0cFRyYW5zZm9ybSgpCi17
Ci19Ci0KLWJvb2wgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6aXNQcm9jZXNzaW5nKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV90cmFuc2Zvcm1lciA/IG1fdHJhbnNmb3JtZXItPmlzUHJvY2Vzc2luZygp
IDogZmFsc2U7Ci19Ci0KLXZvaWQgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tl
bmRGb3JSZWNlaXZlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQotewotICAgIG1f
dHJhbnNmb3JtZXIgPSBNb2NrUlRDUnRwVHJhbnNmb3JtZXI6OmNyZWF0ZShiYWNrZW5kKTsKLX0K
LQotdm9pZCBNb2NrUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclNlbmRlcihS
VENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQotewotICAgIG1fdHJhbnNmb3JtZXIgPSBN
b2NrUlRDUnRwVHJhbnNmb3JtZXI6OmNyZWF0ZShiYWNrZW5kKTsKLX0KLQotdm9pZCBNb2NrUlRD
UnRwVHJhbnNmb3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQot
ewotICAgIG1fdHJhbnNmb3JtZXItPmNsZWFyKCk7Ci0gICAgbV90cmFuc2Zvcm1lciA9IG51bGxw
dHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNm
b3JtLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5OTRkZmY3MTc0MzIzNTM1MWY4ZjBhMzM5NmZj
NTlhMWNhZDI5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShXRUJfUlRDKQotCi0jaW5jbHVk
ZSAiUlRDUnRwVHJhbnNmb3JtLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTW9j
a1JUQ1J0cFRyYW5zZm9ybWVyOwotCi1jbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtIGZpbmFsIDog
cHVibGljIFJUQ1J0cFRyYW5zZm9ybSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNb2NrUlRD
UnRwVHJhbnNmb3JtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tSVENSdHBU
cmFuc2Zvcm0oKSk7IH0KLSAgICB+TW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgYm9vbCBp
c1Byb2Nlc3NpbmcoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBNb2NrUlRDUnRwVHJhbnNmb3Jt
KCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRwVHJhbnNm
b3JtQmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIo
UlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOwotICAgIHZvaWQgd2lsbENsZWFyQmFja2Vu
ZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0KLSAgICBSZWZQdHI8TW9ja1JUQ1J0
cFRyYW5zZm9ybWVyPiBtX3RyYW5zZm9ybWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGU2MzE4NzYwNTk0YjY5ZjI3YTAxZDY1ZTA4ODk4MDVmMzM3NDFjMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tSVENSdHBUcmFuc2Zvcm0uaWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDb25kaXRp
b25hbD1XRUJfUlRDLAotICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAotICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKLSAgICBMZWdhY3lOb0ludGVyZmFjZU9iamVjdCwKLV0gaW50ZXJmYWNl
IE1vY2tSVENSdHBUcmFuc2Zvcm0gOiBSVENSdHBUcmFuc2Zvcm0gewotICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIGlzUHJvY2Vzc2luZzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGVmMWQ4YmNh
ZGEyNWJjMjVmMTUxN2U3ODg5ZTI0MWMzZTQ5ZTNkYWUuLjE1OTljY2M5M2U0NjJkMjBlNjliM2Q5
MTRhNjkwNTA3M2E3YWI3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0zNSw3ICszNSwxMCBAQAogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgogI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUg
IkpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaCIKKyNpbmNsdWRlICJKU1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNs
dWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oIgogI2luY2x1ZGUgIlJlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpZiBFTkFC
TEUoT0ZGU0NSRUVOX0NBTlZBUykKQEAgLTExMiw0ICsxMTUsNzIgQEAgdm9pZCBEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZTo6Y2FuY2VsQW5pbWF0aW9uRnJhbWUoQ2FsbGJhY2tJZCBjYWxsYmFj
a0lkKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JUQykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpyZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyKFN0cmluZyYmIG5hbWUsIFJlZjxKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0
b3I+JiYgdHJhbnNmb3JtZXJDb25zdHJ1Y3RvcikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yLCAiTmFtZSBjYW5ub3QgYmUgdGhlIGVtcHR5IHN0cmluZyJf
cyB9OworCisgICAgaWYgKG1fcnRjUnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcC5jb250YWlu
cyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAi
QSB0cmFuc2Zvcm1lciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07
CisKKyAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gdHJhbnNmb3JtZXJDb25zdHJ1
Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0ganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgaWYgKCFqc0NvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKHZtKSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNsYXNzIGRlZmluaXRpdGlvbiBwYXNzZWQgdG8g
cmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigpIGlzIG5vdCBhIGNvbnN0cnVjdG9yIl9z
IH07CisKKyAgICBhdXRvIHByb3RvdHlwZSA9IGpzQ29uc3RydWN0b3ItPmdldFByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRp
b24geyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0pOworCisgICAgaWYgKCFwcm90b3R5cGUuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNsYXNzIGRl
ZmluaXRpdGlvbiBwYXNzZWQgdG8gcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigpIGhh
cyBpbnZhbGlkIHByb3RvdHlwZSJfcyB9OworCisgICAgbV9ydGNSdHBUcmFuc2Zvcm1lckNvbnN0
cnVjdG9yTWFwLmFkZChuYW1lLCBXVEZNb3ZlKHRyYW5zZm9ybWVyQ29uc3RydWN0b3IpKTsKKwor
ICAgIHRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkucG9zdFRhc2tUb1dvcmtlck9iamVjdChb
bmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCldKGF1dG8mIHdvcmtlcikgbXV0YWJsZSB7CisgICAg
ICAgIHdvcmtlci5hZGRSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihXVEZNb3ZlKG5hbWUpKTsKKyAg
ICB9KTsKKworICAgIHJldHVybiB7IH07Cit9CisKK1JlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lcj4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKFN0cmluZyYmIG5hbWUsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCkKK3sKKyAg
ICBhdXRvIGNvbnN0cnVjdG9yID0gbV9ydGNSdHBUcmFuc2Zvcm1lckNvbnN0cnVjdG9yTWFwLmdl
dChuYW1lKTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3IpOworICAgIGlmICghY29uc3RydWN0b3Ip
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byoganNDb25zdHJ1Y3RvciA9IGNv
bnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKKyAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmdsb2JhbE9iamVjdCgpOworICAg
IGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrIHsgZ2xvYmFsT2Jq
ZWN0IH07CisKKyAgICBtX3BlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQgPSBNZXNzYWdl
UG9ydDo6ZW50YW5nbGUoKnRoaXMsIFdURk1vdmUocG9ydCkpOworCisgICAgSlNDOjpNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0KGds
b2JhbE9iamVjdCwganNDb25zdHJ1Y3RvciwgYXJncywgIkZhaWxlZCB0byBjb25zdHJ1Y3QgUlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXIiKTsKKyAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9
PSAhb2JqZWN0KTsKKworICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkgeworICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisKKyAgICBhdXRvJiBqc1RyYW5z
Zm9ybWVyID0gKkpTQzo6anNDYXN0PEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIqPihvYmplY3Qp
OworICAgIGF1dG8mIHRyYW5zZm9ybWVyID0ganNUcmFuc2Zvcm1lci53cmFwcGVkKCk7CisgICAg
dHJhbnNmb3JtZXIuc2V0Q2FsbGJhY2sobWFrZVVuaXF1ZTxKU0NhbGxiYWNrRGF0YVN0cm9uZz4o
JmpzVHJhbnNmb3JtZXIsIGdsb2JhbE9iamVjdCkpOworCisgICAgcmV0dXJuICZ0cmFuc2Zvcm1l
cjsKK30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBjYWFk
NGNlYmE1OGJhODMzMmQ1ZTlhNjAzZGUxMjYyNjNkYWVhNzU3Li40OTgxMzc3YTAwM2Y0YWI5ZTAz
MGU0MTY0NDNiYzRmNDhiNmU1MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMSw2ICszMSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJQb3N0TWVzc2Fn
ZU9wdGlvbnMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogCkBAIC00NCw3ICs0
NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzOwogY2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkOwotY2xhc3MgTWVz
c2FnZVBvcnQ7CitjbGFzcyBKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3I7Citj
bGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjsKIGNsYXNzIFJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCkBAIC01NCw2ICs1Niw4
IEBAIGNsYXNzIFdvcmtlckFuaW1hdGlvbkNvbnRyb2xsZXI7CiB1c2luZyBDYWxsYmFja0lkID0g
aW50OwogI2VuZGlmCiAKK3VzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXI+OworCiBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBmaW5hbCA6IHB1Ymxp
YyBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSk7CiBwdWJsaWM6CkBAIC03MSw2ICs3NSwxMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjYW5jZWxBbmltYXRpb25GcmFtZShDYWxsYmFja0lkKTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQl9SVEMpCisgICAgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiBj
cmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJiwgVHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lcihTdHJpbmcmJiwgUmVmPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvcj4m
Jik7CisgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiB0YWtlUGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNz
YWdlUG9ydCgpIHsgcmV0dXJuIFdURk1vdmUobV9wZW5kaW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQ
b3J0KTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdXNpbmcgQmFzZSA9IFdvcmtlckdsb2Jh
bFNjb3BlOwogCkBAIC04NSw2ICs5NSwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShPRkZTQ1JF
RU5fQ0FOVkFTKQogICAgIFJlZlB0cjxXb3JrZXJBbmltYXRpb25Db250cm9sbGVyPiBtX3dvcmtl
ckFuaW1hdGlvbkNvbnRyb2xsZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBI
YXNoTWFwPFN0cmluZywgUmVmUHRyPEpTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rv
cj4+IG1fcnRjUnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcDsKKyAgICBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+IG1fcGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydDsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbAppbmRleCAyZDBjZTgyOTUxZmJlOTk3YThi
YjU4YTdkNmI4ZjgzZGY2MTU2NzcxLi44Y2UzODQyYzI4MzVmMTc4MjMyODFjNTRjMzY3MDI1N2Zm
NTEzNGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlLmlkbApAQCAtNDgsMyArNDgsNSBAQAogfTsKIAogW0NvbmRpdGlvbmFs
PU9GRlNDUkVFTl9DQU5WQVMsIEVuYWJsZWRBdFJ1bnRpbWU9T2Zmc2NyZWVuQ2FudmFzXSBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZSBpbmNsdWRlcyBBbmltYXRpb25GcmFtZVByb3ZpZGVyOwor
Ly8gRklYTUU6IEVuYWJsZSB0aGlzIGJhc2VkIG9uIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zIHNl
dHRpbmcuCitbQ29uZGl0aW9uYWw9V0VCX1JUQ10gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUg
aW5jbHVkZXMgUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAKaW5kZXggODA4MzM1ZDAyNzQxZmM5ODM5NWQ5Y2QyNzllYmU1OWMyMzMwMGUxNC4u
NjJmOTE3YTM2NzgxOWRlYzNjZDQxMGQ5NzY2OTVjZWU2MmY2ZDRiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgpAQCAtMjMwLDQgKzIzMSwyOCBA
QCB2b2lkIFdvcmtlcjo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAgICAgfQogfQogCisj
aWYgRU5BQkxFKFdFQl9SVEMpCit2b2lkIFdvcmtlcjo6YWRkUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIoU3RyaW5nJiYgbmFtZSkKK3sKKyAgICBtX3RyYW5zZm9ybWVycy5hZGQoV1RGTW92ZShuYW1l
KSk7Cit9CisKK3ZvaWQgV29ya2VyOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihjb25z
dCBTdHJpbmcmIG5hbWUsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgcG9ydCwgUlRDUnRwU2NyaXB0
VHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dFByb3h5LnBvc3RUYXNrVG9Xb3Jr
ZXJHbG9iYWxTY29wZShbbmFtZSA9IG5hbWUuaXNvbGF0ZWRDb3B5KCksIHBvcnQsIHRyYW5zZm9y
bSA9IG1ha2VSZWYodHJhbnNmb3JtKV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAg
IHRyYW5zZm9ybS0+c2V0VHJhbnNmb3JtZXIoZG93bmNhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLmNyZWF0ZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFdURk1vdmUobmFt
ZSksIHBvcnQpKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdHJhbnNmb3JtID0gV1RGTW92
ZSh0cmFuc2Zvcm0pXSB7IH0pOworICAgIH0pOworCit9CisKK3ZvaWQgV29ya2VyOjpwb3N0VGFz
a1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik+JiYgdGFzaykKK3sKKyAgICBtX2NvbnRleHRQcm94eS5wb3N0VGFza1RvV29ya2VyR2xvYmFs
U2NvcGUoV1RGTW92ZSh0YXNrKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNjdmNGIyYjU4YWI1YWRlZmY2ZmNkMWNkOTU5
ZDRiNjNiOWZmNTk1ZC4uNTNmNWU2ZmZmMjdjOWZhM2U1YzBlMDFmMGY2YzQyYzZjYjZmOWQwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIEpTVmFsdWU7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOwor
Y2xhc3MgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGVQcm94eTsKIGNsYXNzIFdvcmtlclNjcmlwdExv
YWRlcjsKQEAgLTcwLDYgKzcyLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2hFdmVu
dChFdmVudCYpIGZpbmFsOwogCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgdm9pZCBhZGRSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lcihTdHJpbmcmJik7CisgICAgYm9vbCBoYXNSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcihjb25zdCBTdHJpbmcmIG5hbWUpIHsgcmV0dXJuIG1fdHJhbnNmb3JtZXJzLmNv
bnRhaW5zKG5hbWUpOyB9CisgICAgdm9pZCBjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihj
b25zdCBTdHJpbmcmLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0LCBSVENSdHBTY3JpcHRUcmFuc2Zv
cm0mKTsKKyAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6UnVudGltZUZsYWdz
LCBjb25zdCBPcHRpb25zJik7CiAKQEAgLTEwMCw2ICsxMDksOSBAQCBwcml2YXRlOgogICAgIEpT
Qzo6UnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwogICAgIERlcXVlPFJlZlB0cjxFdmVudD4+
IG1fcGVuZGluZ0V2ZW50czsKICAgICBib29sIG1fd2FzVGVybWluYXRlZCB7IGZhbHNlIH07Cisj
aWYgRU5BQkxFKFdFQl9SVEMpCisgICAgSGFzaFNldDxTdHJpbmc+IG1fdHJhbnNmb3JtZXJzOwor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oCmluZGV4IDU2ZGExMjA3Yjc3NzlmMmVh
N2JhZTZhYjczNmY5ZDJjOTU0ZjcyNDQuLjQwMDAzYzNlMDEwOTk5NjBmNjQ3ODYxZTcwMTY4N2Qw
ZTM3MWQ3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oCkBAIC0zMywxMSArMzMsMTMgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUnVudGltZUZsYWdzLmg+Cisj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnM7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgV29ya2Vy
OwogZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSA6IHVpbnQ4X3Q7CiAKQEAgLTQ5LDYgKzUxLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBib29sIGlzT25saW5lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFJlZmVy
cmVyUG9saWN5LCBKU0M6OlJ1bnRpbWVGbGFncykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJt
aW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0
RGVzdHJveWVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFu
Z2UoYm9vbCBpc09ubGluZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBhNjFiNDE0ODYzM2JkZjIwZDUyYmU1NzY0ZGE5YjU1
NGUxNjEwZDdkLi4xMWZlMDZmYzZhMzZkODRjZTdjMmVhZWVmMzllY2Y2MTQ5NDIzNTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAt
MTEwLDI0ICsxMTAsMzggQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG0KICAgICB9KTsKIH0KIAot
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3Bl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSkKK3ZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoRnVuY3Rpb248dm9pZChXb3JrZXImKT4mJiBm
dW5jdGlvbikKIHsKLSAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQotICAgICAgICByZXR1cm47
CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgZnVuY3Rpb24g
PSBXVEZNb3ZlKGZ1bmN0aW9uKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBhdXRvKiB3b3Jr
ZXJPYmplY3QgPSB0aGlzLT53b3JrZXJPYmplY3QoKTsKKyAgICAgICAgaWYgKCF3b3JrZXJPYmpl
Y3QgfHwgYXNrZWRUb1Rlcm1pbmF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBm
dW5jdGlvbigqd29ya2VyT2JqZWN0KTsKKyAgICB9KTsKK30KIAotICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2sgdGFzayhbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldIChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzY3JpcHRDb250ZXh0KSBtdXRhYmxlIHsKK3ZvaWQgV29ya2VyTWVz
c2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCit7CisgICAgcG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3Bl
KFttZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0oYXV0byYgc2NyaXB0Q29udGV4dCkgbXV0YWJs
ZSB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgYXV0byYgY29udGV4dCA9IHN0YXRp
Y19jYXN0PERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJj4oc2NyaXB0Q29udGV4dCk7CiAgICAg
ICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0
LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwogICAgICAgICBjb250ZXh0LmRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2Uu
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAgICAgICAgIGNvbnRleHQudGhyZWFkKCkud29y
a2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29udGV4dC5o
YXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnaW5n
UHJveHk6OnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4mJiB0YXNrKQoreworICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUp
CisgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3dvcmtlclRocmVhZCkgewotICAgICAgICAr
K21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5M
b29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKCFtX3dv
cmtlclRocmVhZCkgewogICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKG1ha2VVbmlx
dWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgICsrbV91bmNvbmZpcm1lZE1lc3NhZ2VDb3VudDsKKyAgICBt
X3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwogfQogCiB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdXNwZW5kRm9yQmFja0ZvcndhcmRDYWNoZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggM2Ji
NGQ5ZDgxNWEyMDkxNGFkOWYyNWIzNGE4N2NhOTFlMWM4NWJhZC4uYzViNTc1YjllNjE1YjNmM2Y1
OTZiZmMzZGY2ODNjODc3Y2M2MmJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgTW9u
b3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBvbGljeSwgSlNDOjpSdW50aW1lRmxhZ3Mp
IGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBmaW5hbDsKICAg
ICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5j
dGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgZmluYWw7CiAgICAgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHdvcmtlck9iamVjdERl
c3Ryb3llZCgpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wg
aXNPbmxpbmUpIGZpbmFsOwpAQCAtNjIsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIC8vIEltcGxl
bWVudGF0aW9uIG9mIFdvcmtlck9iamVjdFByb3h5LgogICAgIC8vIChPbmx5IHVzZSB0aGVzZSBm
dW5jdGlvbnMgaW4gdGhlIHdvcmtlciBjb250ZXh0IHRocmVhZC4pCiAgICAgdm9pZCBwb3N0TWVz
c2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYpIGZpbmFsOworICAg
IHZvaWQgcG9zdFRhc2tUb1dvcmtlck9iamVjdChGdW5jdGlvbjx2b2lkKFdvcmtlciYpPiYmKSBm
aW5hbDsKICAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKSBmaW5hbDsKICAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtl
ck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkgZmluYWw7CiAgICAgdm9pZCByZXBvcnRQ
ZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCmluZGV4IDI4MDEzMTRlMzcyZDMwZWU5
YWNiZTU0Yjk4Njk5ZGNlZGY3OGY5Y2EuLjhlOTFlYzc5NDRmMzI1OWI2N2Q1ZTRhNTU4NWQ4NTQ0
Y2JjZjcyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgK
QEAgLTMyLDE0ICszMiwxOSBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMu
aCIKICNpbmNsdWRlICJXb3JrZXJSZXBvcnRpbmdQcm94eS5oIgorCiAjaW5jbHVkZSA8bWVtb3J5
PgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFdvcmtlcjsKKwogLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgb2JqZWN0Lgog
Y2xhc3MgV29ya2VyT2JqZWN0UHJveHkgOiBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJveHkgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb1dv
cmtlck9iamVjdChGdW5jdGlvbjx2b2lkKFdvcmtlciYpPiYmKSB7IH07CiAKICAgICB2aXJ0dWFs
IHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhh
c1BlbmRpbmdBY3Rpdml0eSkgPSAwOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI5MjJjMmIwMTcwZjZlMTUzNzU5YzU0ZDZi
N2U3NTdhZmZjODQyMTcuLmU3NTdkOWU3Njk3MWIxMGJjMGZlZWFhNjgzMjM1YzFlOTMxMGM3ZDcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0xMS0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5
MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJydGMvcm91dGluZXMuanM6IEFkZGVkLgorICAgICAgICAoY3JlYXRlQ29ubmVj
dGlvbnMpOgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzOiBB
ZGRlZC4KKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lcik6CisgICAgICAgIChNb2NrUlRD
UnRwVHJhbnNmb3JtZXIucHJvdG90eXBlLnN0YXJ0KToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFu
c2Zvcm1lci5wcm90b3R5cGUucHJvY2Vzcyk6CisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3Nm
cmFtZS10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0
cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwuCisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHdlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpz
OiBBZGRlZC4KKyAgICAgICAgKE1vY2tSVENSdHBUcmFuc2Zvcm1lcik6CisgICAgICAgIChNb2Nr
UlRDUnRwVHJhbnNmb3JtZXIucHJvdG90eXBlLnN0YXJ0KToKKwogMjAyMC0xMS0xNSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dEVuY29kZXJTdHJlYW1F
bmNvZGVyIHNob3VsZCBub3QgYmUgZXhwb3NlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL3JvdXRpbmVzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3Jv
dXRpbmVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZGI3MmY2NWQxNzY5NjFlYTc5N2M5ZGM0ODJiZDBiNTFl
ZjkzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvcm91
dGluZXMuanMKQEAgLTAsMCArMSwyOTkgQEAKKy8vIFRlc3QgaW5zcGlyZWQgZnJvbSBodHRwczov
L3dlYnJ0Yy5naXRodWIuaW8vc2FtcGxlcy8KK3ZhciBsb2NhbENvbm5lY3Rpb247Cit2YXIgcmVt
b3RlQ29ubmVjdGlvbjsKKworZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvbnMoc2V0dXBMb2NhbENv
bm5lY3Rpb24sIHNldHVwUmVtb3RlQ29ubmVjdGlvbiwgb3B0aW9ucyA9IHsgfSkgeworICAgIGxv
Y2FsQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHJlbW90ZUNvbm5l
Y3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICByZW1vdGVDb25uZWN0aW9uLm9u
aWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7IGljZUNhbGxiYWNrMihldmVudCwgb3B0aW9ucy5m
aWx0ZXJPdXRJQ0VDYW5kaWRhdGUpIH07CisKKyAgICBsb2NhbENvbm5lY3Rpb24ub25pY2VjYW5k
aWRhdGUgPSAoZXZlbnQpID0+IHsgaWNlQ2FsbGJhY2sxKGV2ZW50LCBvcHRpb25zLmZpbHRlck91
dElDRUNhbmRpZGF0ZSkgfTsKKworICAgIFByb21pc2UucmVzb2x2ZShzZXR1cExvY2FsQ29ubmVj
dGlvbihsb2NhbENvbm5lY3Rpb24pKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZShzZXR1cFJlbW90ZUNvbm5lY3Rpb24ocmVtb3RlQ29ubmVjdGlvbikpOworICAg
IH0pLnRoZW4oKCkgPT4geworICAgICAgICBsb2NhbENvbm5lY3Rpb24uY3JlYXRlT2ZmZXIoKS50
aGVuKChkZXNjKSA9PiBnb3REZXNjcmlwdGlvbjEoZGVzYywgb3B0aW9ucyksIG9uQ3JlYXRlU2Vz
c2lvbkRlc2NyaXB0aW9uRXJyb3IpOworICAgIH0pOworCisgICAgcmV0dXJuIFtsb2NhbENvbm5l
Y3Rpb24sIHJlbW90ZUNvbm5lY3Rpb25dCit9CisKK2Z1bmN0aW9uIGNsb3NlQ29ubmVjdGlvbnMo
KQoreworICAgIGxvY2FsQ29ubmVjdGlvbi5jbG9zZSgpOworICAgIHJlbW90ZUNvbm5lY3Rpb24u
Y2xvc2UoKTsKK30KKworZnVuY3Rpb24gb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25FcnJvcihl
cnJvcikKK3sKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Cit9CisKK2Z1bmN0aW9uIGdvdERlc2Ny
aXB0aW9uMShkZXNjLCBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLm9ic2VydmVPZmZlcikg
eworICAgICAgICBjb25zdCByZXN1bHQgPSBvcHRpb25zLm9ic2VydmVPZmZlcihkZXNjKTsKKyAg
ICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIGRlc2MgPSByZXN1bHQ7CisgICAgfQorCisg
ICAgbG9jYWxDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oZGVzYyk7CisgICAgcmVtb3Rl
Q29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjKS50aGVuKCgpID0+IHsKKyAgICAg
ICAgcmVtb3RlQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoKS50aGVuKChkZXNjKSA9PiBnb3REZXNj
cmlwdGlvbjIoZGVzYywgb3B0aW9ucyksIG9uQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRXJyb3Ip
OworICAgIH0pOworfQorCitmdW5jdGlvbiBnb3REZXNjcmlwdGlvbjIoZGVzYywgb3B0aW9ucykK
K3sKKyAgICBpZiAob3B0aW9ucy5vYnNlcnZlQW5zd2VyKQorICAgICAgICBvcHRpb25zLm9ic2Vy
dmVBbnN3ZXIoZGVzYyk7CisKKyAgICByZW1vdGVDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRp
b24oZGVzYyk7CisgICAgbG9jYWxDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGRlc2Mp
OworfQorCitmdW5jdGlvbiBpY2VDYWxsYmFjazEoZXZlbnQsIGZpbHRlck91dElDRUNhbmRpZGF0
ZSkKK3sKKyAgICBpZiAoZmlsdGVyT3V0SUNFQ2FuZGlkYXRlICYmIGZpbHRlck91dElDRUNhbmRp
ZGF0ZShldmVudC5jYW5kaWRhdGUpKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1vdGVDb25u
ZWN0aW9uLmFkZEljZUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpLnRoZW4ob25BZGRJY2VDYW5k
aWRhdGVTdWNjZXNzLCBvbkFkZEljZUNhbmRpZGF0ZUVycm9yKTsKK30KKworZnVuY3Rpb24gaWNl
Q2FsbGJhY2syKGV2ZW50LCBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUpCit7CisgICAgaWYgKGZpbHRl
ck91dElDRUNhbmRpZGF0ZSAmJiBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUoZXZlbnQuY2FuZGlkYXRl
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9jYWxDb25uZWN0aW9uLmFkZEljZUNhbmRpZGF0
ZShldmVudC5jYW5kaWRhdGUpLnRoZW4ob25BZGRJY2VDYW5kaWRhdGVTdWNjZXNzLCBvbkFkZElj
ZUNhbmRpZGF0ZUVycm9yKTsKK30KKworZnVuY3Rpb24gb25BZGRJY2VDYW5kaWRhdGVTdWNjZXNz
KCkKK3sKK30KKworZnVuY3Rpb24gb25BZGRJY2VDYW5kaWRhdGVFcnJvcihlcnJvcikKK3sKKyAg
ICBjb25zb2xlLmxvZygiYWRkSWNlQ2FuZGlkYXRlIGVycm9yOiAiICsgZXJyb3IpCisgICAgYXNz
ZXJ0X3VucmVhY2hlZCgpOworfQorCithc3luYyBmdW5jdGlvbiByZW5lZ290aWF0ZShwYzEsIHBj
MikKK3sKKyAgICBsZXQgZCA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOworICAgIGF3YWl0IHBj
MS5zZXRMb2NhbERlc2NyaXB0aW9uKGQpOworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVEZXNjcmlw
dGlvbihkKTsKKyAgICBkID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGF3YWl0IHBj
MS5zZXRSZW1vdGVEZXNjcmlwdGlvbihkKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxEZXNjcmlw
dGlvbihkKTsKK30KKworZnVuY3Rpb24gYW5hbHlzZUF1ZGlvKHN0cmVhbSwgZHVyYXRpb24sIGNv
bnRleHQpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsK
KyAgICAgICAgdmFyIHNvdXJjZU5vZGUgPSBjb250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNl
KHN0cmVhbSk7CisKKyAgICAgICAgdmFyIGFuYWx5c2VyID0gY29udGV4dC5jcmVhdGVBbmFseXNl
cigpOworICAgICAgICB2YXIgZ2FpbiA9IGNvbnRleHQuY3JlYXRlR2FpbigpOworCisgICAgICAg
IHZhciByZXN1bHRzID0geyBoZWFyZEh1bTogZmFsc2UsIGhlYXJkQmlwOiBmYWxzZSwgaGVhcmRC
b3A6IGZhbHNlLCBoZWFyZE5vaXNlOiBmYWxzZSB9OworCisgICAgICAgIGFuYWx5c2VyLmZmdFNp
emUgPSAyMDQ4OworICAgICAgICBhbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwOwor
ICAgICAgICBhbmFseXNlci5taW5EZWNpYmVscyA9IC0xMDA7CisgICAgICAgIGFuYWx5c2VyLm1h
eERlY2liZWxzID0gMDsKKyAgICAgICAgZ2Fpbi5nYWluLnZhbHVlID0gMDsKKworICAgICAgICBz
b3VyY2VOb2RlLmNvbm5lY3QoYW5hbHlzZXIpOworICAgICAgICBhbmFseXNlci5jb25uZWN0KGdh
aW4pOworICAgICAgICBnYWluLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisKKyAgICAg
ICBmdW5jdGlvbiBhbmFseXNlKCkgeworICAgICAgICAgICB2YXIgZnJlcURvbWFpbiA9IG5ldyBV
aW50OEFycmF5KGFuYWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50KTsKKyAgICAgICAgICAgYW5hbHlz
ZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoZnJlcURvbWFpbik7CisKKyAgICAgICAgICAgdmFyIGhh
c0ZyZXF1ZW5jeSA9IGV4cGVjdGVkRnJlcXVlbmN5ID0+IHsKKyAgICAgICAgICAgICAgICB2YXIg
YmluID0gTWF0aC5mbG9vcihleHBlY3RlZEZyZXF1ZW5jeSAqIGFuYWx5c2VyLmZmdFNpemUgLyBj
b250ZXh0LnNhbXBsZVJhdGUpOworICAgICAgICAgICAgICAgIHJldHVybiBiaW4gPCBmcmVxRG9t
YWluLmxlbmd0aCAmJiBmcmVxRG9tYWluW2Jpbl0gPj0gMTAwOworICAgICAgICAgICB9OworCisg
ICAgICAgICAgIGlmICghcmVzdWx0cy5oZWFyZEh1bSkKKyAgICAgICAgICAgICAgICByZXN1bHRz
LmhlYXJkSHVtID0gaGFzRnJlcXVlbmN5KDE1MCk7CisKKyAgICAgICAgICAgaWYgKCFyZXN1bHRz
LmhlYXJkQmlwKQorICAgICAgICAgICAgICAgcmVzdWx0cy5oZWFyZEJpcCA9IGhhc0ZyZXF1ZW5j
eSgxNTAwKTsKKworICAgICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmRCb3ApCisgICAgICAgICAg
ICAgICAgcmVzdWx0cy5oZWFyZEJvcCA9IGhhc0ZyZXF1ZW5jeSg1MDApOworCisgICAgICAgICAg
IGlmICghcmVzdWx0cy5oZWFyZE5vaXNlKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuaGVhcmRO
b2lzZSA9IGhhc0ZyZXF1ZW5jeSgzMDAwKTsKKworICAgICAgICAgICBpZiAocmVzdWx0cy5oZWFy
ZEh1bSAmJiByZXN1bHRzLmhlYXJkQmlwICYmIHJlc3VsdHMuaGVhcmRCb3AgJiYgcmVzdWx0cy5o
ZWFyZE5vaXNlKQorICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfTsKKworICAgICAg
IGZ1bmN0aW9uIGRvbmUoKSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7Cisg
ICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKKyAgICAgICAgICAgIHJlc29sdmUo
cmVzdWx0cyk7CisgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChk
b25lLCAzICogZHVyYXRpb24pOworICAgICAgICB2YXIgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChh
bmFseXNlLCBkdXJhdGlvbiAvIDMwKTsKKyAgICAgICAgYW5hbHlzZSgpOworICAgIH0pOworfQor
CitmdW5jdGlvbiB3YWl0Rm9yKGR1cmF0aW9uKQoreworICAgIHJldHVybiBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkdXJhdGlvbikpOworfQorCitmdW5jdGlv
biB3YWl0Rm9yVmlkZW9TaXplKHZpZGVvLCB3aWR0aCwgaGVpZ2h0LCBjb3VudCkKK3sKKyAgICBp
ZiAodmlkZW8udmlkZW9XaWR0aCA9PT0gd2lkdGggJiYgdmlkZW8udmlkZW9IZWlnaHQgPT09IGhl
aWdodCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgidmlkZW8gaGFzIGV4cGVjdGVk
IHNpemUiKTsKKworICAgIGlmIChjb3VudCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb3VudCA9
IDA7CisgICAgaWYgKCsrY291bnQgPiAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0
KCJ3YWl0Rm9yVmlkZW9TaXplIHRpbWVkIG91dCwgZXhwZWN0ZWQgIiArIHdpZHRoICsgIngiKyBo
ZWlnaHQgKyAiIGJ1dCBnb3QgIiArIHZpZGVvLnZpZGVvV2lkdGggKyAieCIgKyB2aWRlby52aWRl
b0hlaWdodCk7CisKKyAgICByZXR1cm4gd2FpdEZvcigxMDApLnRoZW4oKCkgPT4geworICAgICAg
ICByZXR1cm4gd2FpdEZvclZpZGVvU2l6ZSh2aWRlbywgd2lkdGgsIGhlaWdodCwgY291bnQpOwor
ICAgIH0pOworfQorCithc3luYyBmdW5jdGlvbiBkb0h1bUFuYWx5c2lzKHN0cmVhbSwgZXhwZWN0
ZWQpCit7CisgICAgdmFyIGNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7CisgICAgZm9yICh2
YXIgY3B0ciA9IDA7IGNwdHIgPCAyMDsgY3B0cisrKSB7CisgICAgICAgIHZhciByZXN1bHRzID0g
YXdhaXQgYW5hbHlzZUF1ZGlvKHN0cmVhbSwgMjAwLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJl
c3VsdHMuaGVhcmRIdW0gPT09IGV4cGVjdGVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGF3YWl0IHdhaXRGb3IoNTApOworICAgIH0KKyAgICBhd2FpdCBjb250ZXh0LmNsb3Nl
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBpc1ZpZGVvQmxhY2soY2FudmFz
LCB2aWRlbywgc3RhcnRYLCBzdGFydFksIGdyYWJiZWRXaWR0aCwgZ3JhYmJlZEhlaWdodCkKK3sK
KyAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoOworICAgIGNhbnZhcy5oZWlnaHQg
PSB2aWRlby52aWRlb0hlaWdodDsKKyAgICBpZiAoIWdyYWJiZWRIZWlnaHQpIHsKKyAgICAgICAg
c3RhcnRYID0gMTA7CisgICAgICAgIHN0YXJ0WSA9IDEwOworICAgICAgICBncmFiYmVkV2lkdGgg
PSBjYW52YXMud2lkdGggLSAyMDsKKyAgICAgICAgZ3JhYmJlZEhlaWdodCA9IGNhbnZhcy5oZWln
aHQgLSAyMDsKKyAgICB9CisKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2Uo
dmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICBpbWFnZURh
dGEgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoc3RhcnRYLCBzdGFydFks
IGdyYWJiZWRXaWR0aCwgZ3JhYmJlZEhlaWdodCk7CisgICAgZGF0YSA9IGltYWdlRGF0YS5kYXRh
OworICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgZ3JhYmJlZFdpZHRoICogZ3JhYmJlZEhl
aWdodDsgKytjcHRyKSB7CisgICAgICAgIC8vIEFwcHJveGltYXRpdmVseSBibGFjayBwaXhlbHMu
CisgICAgICAgIGlmIChkYXRhWzQgKiBjcHRyXSA+IDMwIHx8IGRhdGFbNCAqIGNwdHIgKyAxXSA+
IDMwIHx8IGRhdGFbNCAqIGNwdHIgKyAyXSA+IDMwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYXN5bmMgZnVuY3Rpb24gY2hlY2tWaWRl
b0JsYWNrKGV4cGVjdGVkLCBjYW52YXMsIHZpZGVvLCBlcnJvck1lc3NhZ2UsIGNvdW50ZXIpCit7
CisgICAgaWYgKGlzVmlkZW9CbGFjayhjYW52YXMsIHZpZGVvKSA9PT0gZXhwZWN0ZWQpCisgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKworICAgIGlmIChjb3VudGVyID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGNvdW50ZXIgPSAwOworICAgIGlmIChjb3VudGVyID4gNDAwKSB7Cisg
ICAgICAgIGlmICghZXJyb3JNZXNzYWdlKQorICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gImNo
ZWNrVmlkZW9CbGFjayB0aW1lZCBvdXQgZXhwZWN0aW5nICIgKyBleHBlY3RlZDsKKyAgICAgICAg
cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAgYXdhaXQg
d2FpdEZvcig1MCk7CisgICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFjayhleHBlY3RlZCwgY2FudmFz
LCB2aWRlbywgZXJyb3JNZXNzYWdlLCArK2NvdW50ZXIpOworfQorCitmdW5jdGlvbiBzZXRDb2Rl
YyhzZHAsIGNvZGVjKQoreworICAgIHJldHVybiBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0ZXIobGlu
ZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBs
aW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiAobGluZS5pbmRleE9mKCdhPXJ0cG1h
cCcpID09PSAtMSB8fCBsaW5lLmluZGV4T2YoY29kZWMpICE9PSAtMSk7CisgICAgfSkuam9pbign
XHJcbicpOworfQorCithc3luYyBmdW5jdGlvbiBnZXRUeXBlZFN0YXRzKGNvbm5lY3Rpb24sIHR5
cGUpCit7CisgICAgY29uc3QgcmVwb3J0ID0gYXdhaXQgY29ubmVjdGlvbi5nZXRTdGF0cygpOwor
ICAgIHZhciBzdGF0czsKKyAgICByZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAg
ICAgaWYgKHN0YXRJdGVtLnR5cGUgPT09IHR5cGUpCisgICAgICAgICAgICBzdGF0cyA9IHN0YXRJ
dGVtOworICAgIH0pOworICAgIHJldHVybiBzdGF0czsKK30KKworZnVuY3Rpb24gZ2V0UmVjZWl2
ZWRUcmFja1N0YXRzKGNvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24uZ2V0U3Rh
dHMoKS50aGVuKChyZXBvcnQpID0+IHsKKyAgICAgICAgdmFyIHN0YXRzOworICAgICAgICByZXBv
cnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAgICAgICAgIGlmIChzdGF0SXRlbS50eXBl
ID09PSAidHJhY2siKSB7CisgICAgICAgICAgICAgICAgc3RhdHMgPSBzdGF0SXRlbTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBzdGF0czsKKyAgICB9KTsKK30K
KworYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUZyYW1lUmF0ZShzdHJlYW0sIHZpZGVvKQoreworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5vYnNlcnZlTWVkaWFT
dHJlYW1UcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgIGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7IAorICAgICAg
ICByZXR1cm4gaW50ZXJuYWxzLnRyYWNrVmlkZW9TYW1wbGVDb3VudDsKKyAgICB9CisKKyAgICBs
ZXQgY29ubmVjdGlvbjsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBhd2FpdCBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENv
bm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhzdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgc3RyZWFtKTsKKyAgICAgICAgfSwgKHNlY29uZENvbm5l
Y3Rpb24pID0+IHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBzZWNvbmRDb25uZWN0aW9uOwor
ICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7CisgICAgICAg
ICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRl
c3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0pOworCisgICAgYXdhaXQgdmlkZW8ucGxheSgp
OworCisgICAgY29uc3Qgc3RhdHMxID0gYXdhaXQgZ2V0UmVjZWl2ZWRUcmFja1N0YXRzKGNvbm5l
Y3Rpb24pOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNv
bHZlLCAxMDAwKSk7IAorICAgIGNvbnN0IHN0YXRzMiA9IGF3YWl0IGdldFJlY2VpdmVkVHJhY2tT
dGF0cyhjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gKHN0YXRzMi5mcmFtZXNSZWNlaXZlZCAtIHN0
YXRzMS5mcmFtZXNSZWNlaXZlZCkgKiAxMDAwIC8gKHN0YXRzMi50aW1lc3RhbXAgLSBzdGF0czEu
dGltZXN0YW1wKTsKK30KKworZnVuY3Rpb24gc2V0SDI2NEJhc2VsaW5lQ29kZWMoc2RwKQorewor
ICAgIGNvbnN0IGxpbmVzID0gc2RwLnNwbGl0KCdcclxuJyk7CisgICAgY29uc3QgaDI2NExpbmVz
ID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0gMCAmJiBs
aW5lLmluZGV4T2YoIjQyZTAxZiIpICE9PSAtMSk7CisgICAgY29uc3QgYmFzZWxpbmVOdW1iZXIg
PSBoMjY0TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07CisgICAgcmV0dXJuIGxp
bmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJuIChsaW5lLmluZGV4T2YoJ2E9Zm10
cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiBsaW5lLmlu
ZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVOdW1iZXIp
ICE9PSAtMTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CisKK2Z1bmN0aW9uIHNldEgyNjRIaWdo
Q29kZWMoc2RwKQoreworICAgIGNvbnN0IGxpbmVzID0gc2RwLnNwbGl0KCdcclxuJyk7CisgICAg
Y29uc3QgaDI2NExpbmVzID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZt
dHAiKSA9PT0gMCAmJiBsaW5lLmluZGV4T2YoIjY0MGMxZiIpICE9PSAtMSk7CisgICAgY29uc3Qg
YmFzZWxpbmVOdW1iZXIgPSBoMjY0TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07
CisgICAgcmV0dXJuIGxpbmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJuIChsaW5l
LmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09
PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2Yo
YmFzZWxpbmVOdW1iZXIpICE9PSAtMTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjllYzg2NTBjOWViZmJjM2JhMmVjZTU5MmZlMTY3NDRmOTQ0ZDFiZWEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpAQCAt
MCwwICsxLDI3IEBACitjbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIgZXh0ZW5kcyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lciB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHN1cGVyKCk7
CisgICAgICAgIHRoaXMucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHRoaXMucG9ydC5wb3N0
TWVzc2FnZShldmVudC5kYXRhKTsKKyAgICB9CisgICAgc3RhcnQocmVhZGFibGVTdHJlYW0sIHdy
aXRhYmxlU3RyZWFtKQorICAgIHsKKyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgic3RhcnRlZCIp
OworICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRhYmxlU3RyZWFtLmdldFJlYWRlcigpOworICAg
ICAgICB0aGlzLndyaXRlciA9IHdyaXRhYmxlU3RyZWFtLmdldFdyaXRlcigpOworICAgICAgICB0
aGlzLnByb2Nlc3MoKTsKKyAgICB9CisKKyAgICBwcm9jZXNzKCkKKyAgICB7CisgICAgICAgIHRo
aXMucmVhZGVyLnJlYWQoKS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChjaHVuay5k
b25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNlbGYucG9zdE1lc3Nh
Z2UoImNodW5rIik7CisgICAgICAgICAgICB0aGlzLndyaXRlci53cml0ZShjaHVuay52YWx1ZSk7
CisgICAgICAgICAgICB0aGlzLnByb2Nlc3MoKTsKKyAgICAgICAgfSk7CisgICAgfQorfTsKKwor
cmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigiTW9ja1JUQ1J0cFRyYW5zZm9ybSIsIE1v
Y2tSVENSdHBUcmFuc2Zvcm1lcik7CitzZWxmLnBvc3RNZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9y
bS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAwZTg2ZGRkZTI5MzVkMWYwZjVhYzAyZGQzYTg3
YzZhMmY3OGRlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0
Yy9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBD
YW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTA0ODgwZDE0
NWFjZmI4MWQ3ZTk5YmYxMTM4NGEwODUzNTEzM2M3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRtbApAQCAtMCwwICsxLDMz
IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAg
ICAgPHNjcmlwdD4KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qg
cGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0g
PSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CisgICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zv
cm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBj
LmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRlcjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMu
YWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJykuc2VuZGVyOworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBj
LmdldFJlY2VpdmVycygpWzBdOworICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVy
cygpWzFdOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAg
cmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgIGFzc2VydF90aHJv
d3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHNlbmRlcjIudHJhbnNmb3JtID0gc2Vu
ZGVyVHJhbnNmb3JtKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3Ii
LCAoKSA9PiByZWNlaXZlcjIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0pOworCisgICAg
c2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5z
Zm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxs
OworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSBudWxsOworfSwgIkNhbm5vdCByZXVzZSBhdHRh
Y2hlZCB0cmFuc2Zvcm1zIik7CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNm
b3JtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJh
bnNmb3JtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjlkNTZlZTg1ZTYwZTQ3MThkZjZkMDFj
MzEzMWMxMTQ1NDRlNWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCisK
K1BBU1MgdHJhbnNmb3JtIG1lc3NhZ2luZworUEFTUyBDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJh
bnNmb3JtcworUEFTUyBhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybQorUEFTUyB2aWRlbyBl
eGNoYW5nZSB3aXRoIHRyYW5zZm9ybQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjg3NTMwOWEwMzFiZWNkMDFm
NGNjZjhmNWQzNzIyNDlkOWI3ZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbApAQCAtMCwwICsxLDEzMiBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDx2aWRl
byBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgorICAgICAgICA8dmlkZW8gaWQ9InZpZGVv
MiIgYXV0b3BsYXk+PC92aWRlbz4KKyAgICAgICAgPHNjcmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cithc3luYyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2Fn
ZSh3b3JrZXIsIGRhdGEpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgY29uc3QgcmVj
ZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAo
ZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgICAgICBpZiAoZGF0YSA9PT0gcmVj
ZWl2ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorfQorCitwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3Jt
LmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29y
a2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgdHJhbnNmb3JtID0g
bmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7
CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gdHJhbnNmb3JtLnBv
cnQub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICB0cmFu
c2Zvcm0ucG9ydC5wb3N0TWVzc2FnZSgidGVzdCIpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQg
cHJvbWlzZSwgInRlc3QiKTsKK30sICJ0cmFuc2Zvcm0gbWVzc2FnaW5nIik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10
cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2
ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisKKyAgICBjb25zdCBwYyA9
IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5l
dyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOwor
ICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3
b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFk
ZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRlcjsKKyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRk
VHJhbnNjZWl2ZXIoJ3ZpZGVvJykuc2VuZGVyOworICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdl
dFJlY2VpdmVycygpWzBdOworICAgIGNvbnN0IHJlY2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygp
WzFdOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVj
ZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgIGFzc2VydF90aHJvd3Nf
ZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHNlbmRlcjIudHJhbnNmb3JtID0gc2VuZGVy
VHJhbnNmb3JtKTsKKyAgICBhc3NlcnRfdGhyb3dzX2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAo
KSA9PiByZWNlaXZlcjIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm0pOworCisgICAgc2Vu
ZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9y
bSA9IHJlY2VpdmVyVHJhbnNmb3JtOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOwor
ICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSBudWxsOworfSwgIkNhbm5vdCByZXVzZSBhdHRhY2hl
ZCB0cmFuc2Zvcm1zIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdv
cmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRh
ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50
KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdp
c3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJl
Y2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFu
c2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2VpdmVy
VHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRw
VHJhbnNmb3JtJyk7CisKKyAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVq
ZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+
IHsKKyAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRl
ciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRBdWRpb1RyYWNrcygp
WzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVy
VHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAg
ICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24u
b250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0
cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9
IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5z
dHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1l
b3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAg
YXdhaXQgd2FpdEZvck1lc3NhZ2Uod29ya2VyLCAiY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNP
YmplY3QgPSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJhdWRpbyBleGNo
YW5nZSB3aXRoIHRyYW5zZm9ybSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAgY29u
c3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9
IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRh
LCAicmVnaXN0ZXJlZCIpOworCisgICAgY29uc3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86IHRydWV9KTsKKworICAgIGxldCBz
ZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBT
Y3JpcHRUcmFuc2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0
IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdN
b2NrUlRDUnRwVHJhbnNmb3JtJyk7CisKKyAgICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShl
dmVudC5kYXRhKSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5l
Y3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAg
ICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3Jt
ID0gc2VuZGVyVHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4gewor
ICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENv
bm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVj
ZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRy
YW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAgICAgIHJlc29sdmUodHJh
Y2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAg
ICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAg
fSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIp
OworCisgICAgYXdhaXQgd2FpdEZvck1lc3NhZ2Uod29ya2VyLCAiY2h1bmsiKTsKKworICAgIHZp
ZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJ2
aWRlbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggNTMzNTdmNGEwZmQyOTcyNzZlODc2MTU4NzZjYjFhYTdmZjM3YjU4Zi4uZGZmYzVj
YjAzM2YyZTVmNGZjOWEyMTY5YTc0OGU4MTE1NGM3ZDQxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtODY3LDcgKzg2Nyw3IEBAIHdlYmtpdC5vcmcv
Yi8yMTg3ODcgd2VicnRjL3ZpZGVvLXN0YXRzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMTg3ODcgZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9y
Lmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL2NvbmN1cnJlbnRW
aWRlb1BsYXliYWNrLmh0bWwgWyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRj
L2ljZS1jYW5kaWRhdGUtc2RwTUxpbmVJbmRleC5odG1sIFsgVGltZW91dCBdCi13ZWJraXQub3Jn
L2IvMjE4Nzg3IHdlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8yMTg3ODcgaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbCBbIEZh
aWx1cmUgXQogCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgV2Vi
UlRDLXJlbGF0ZWQgYnVncwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10
cmFuc2Zvcm0uanMgYi9MYXlvdXRUZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZTY4YzYyMmJmYzExYWNlMWViMWYxZmNjOGQ4MmQyMmZjNDgyZDUwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanMKQEAgLTAs
MCArMSw3IEBACitjbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIgZXh0ZW5kcyBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lciB7CisgICAgY29uc3RydWN0b3IoKSB7IH0KKyAgICBzdGFydChyZWFkYWJs
ZVN0cmVhbSwgd3JpdGFibGVTdHJlYW0pIHsgcmVhZGFibGVTdHJlYW0ucGlwZVRvKHdyaXRhYmxl
U3RyZWFtKTsgfQorfTsKKworcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigiTW9ja1JU
Q1J0cFRyYW5zZm9ybSIsIE1vY2tSVENSdHBUcmFuc2Zvcm1lcik7CitzZWxmLnBvc3RNZXNzYWdl
KCJzdGFydGVkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5z
Zm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhOGY1MWIzYzgwMGM1
ZDdhYzQ5M2Q3MDMzMDBhY2Q2ODI3OGY5ZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0KLQotUEFTUyBhdWRpbyBl
eGNoYW5nZSB3aXRoIHRyYW5zZm9ybQotUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9y
bQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1s
IGIvTGF5b3V0VGVzdHMvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYTljNWE2ZGZhNTc3YmEzYmE5MGVlYWU1MjBjNjMyNTE1NGUxYWY1
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsODYg
KzAsMCBAQAotPCFkb2N0eXBlIGh0bWw+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1l
dGEgY2hhcnNldD0idXRmLTgiPgotICAgICAgICA8dGl0bGU+VGVzdGluZyBtZWRpYSBleGNoYW5n
ZSB3aXRoIHRyYW5zZm9ybTwvdGl0bGU+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLSAgICA8L2hlYWQ+Ci0gICAg
PGJvZHk+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgotICAg
ICAgICA8dmlkZW8gaWQ9InZpZGVvMiIgYXV0b3BsYXk+PC92aWRlbz4KLSAgICAgICAgPHNjcmlw
dCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQ+Ci1wcm9taXNl
X3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKLSAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOwotICAgIGxldCBzZW5kZXJU
cmFuc2Zvcm0gPSBpbnRlcm5hbHMuY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotICAgIGxl
dCByZWNlaXZlclRyYW5zZm9ybSA9IGludGVybmFscy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3Jt
KCk7Ci0KLSAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHthdWRpbzogdHJ1ZX0pOwotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVj
dGlvbnMoKGZpcnN0Q29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25u
ZWN0aW9uOwotICAgICAgICAgICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxv
Y2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAg
IHNlbmRlci50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRD
b25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAg
ICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAg
ICAgICAgICAgICAgICByZWNlaXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAg
ICAgICAgcmVjZWl2ZXIudHJhbnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAg
ICAgICAgcmVzb2x2ZSh0cmFja0V2ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91
dCIpLCA1MDAwKTsKLSAgICB9KTsKLQotICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07Ci0g
ICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKLQotICAgIGxldCBjb3VudGVyID0gMDsKLSAgICB3aGls
ZSAoIXJlY2VpdmVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZyAmJiBjb3VudGVyKysgPCAxMDApCi0g
ICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1
MCkpOwotCi0gICAgYXNzZXJ0X3RydWUoc2VuZGVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZywgInNl
bmRlciIpOwotfSwgImF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7Ci0KLXByb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4gewotICAgIGlmICghd2luZG93LmludGVybmFscykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgbGV0IHNlbmRlclRy
YW5zZm9ybSA9IGludGVybmFscy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0gICAgbGV0
IHJlY2VpdmVyVHJhbnNmb3JtID0gaW50ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0o
KTsKLQotICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe3ZpZGVvOiB0cnVlfSk7Ci0KLSAgICBjb25zdCBzdHJlYW0gPSBhd2Fp
dCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Ci0gICAgICAgIGNyZWF0ZUNvbm5l
Y3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29u
bmVjdGlvbjsKLSAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhs
b2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7Ci0gICAgICAgICAg
ICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOwotICAgICAgICB9LCAoc2Vjb25k
Q29ubmVjdGlvbikgPT4gewotICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKLSAg
ICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOwotICAgICAgICAg
ICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOwotICAgICAgICAg
ICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgIH0pOwotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBv
dXQiKSwgNTAwMCk7Ci0gICAgfSk7Ci0KLSAgICB2aWRlbzIuc3JjT2JqZWN0ID0gc3RyZWFtOwot
ICAgIGF3YWl0IHZpZGVvMi5wbGF5KCk7Ci0KLSAgIGxldCBjb3VudGVyID0gMDsKLSAgIHdoaWxl
ICghcmVjZWl2ZXJUcmFuc2Zvcm0uaXNQcm9jZXNzaW5nICYmIGNvdW50ZXIrKyA8IDEwMCkKLSAg
ICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTAp
KTsKLQotICAgIGFzc2VydF90cnVlKHNlbmRlclRyYW5zZm9ybS5pc1Byb2Nlc3NpbmcsICJzZW5k
ZXIiKTsKLX0sICJ2aWRlbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIpOwotICAgICAgICA8L3Nj
cmlwdD4KLSAgICA8L2JvZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414659</attachid>
            <date>2020-11-20 00:50:38 -0800</date>
            <delta_ts>2020-11-20 04:25:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-219148-20201120095034.patch</filename>
            <type>text/plain</type>
            <size>175854</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVmM2Q3M2ZkOTgyYzM0
MjlkZDk0N2Q4ZjA1NmVkOWVmYTEzMTFmMi4uMTk4N2JhZDYzZWQ0ZTE4M2VmM2I0NzgzOTdmYjVi
NWU4ZDYyNTc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1NiBAQAorMjAyMC0xMS0yMCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE5MTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29u
LgorCisgICAgICAgIFdlIGludHJvZHVjZSBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gd2hpY2ggcHJv
Y2Vzc2VzIGVuY29kZWQgZnJhbWVzIGluIGEgd29ya2VyIGZvciBlaXRoZXIgUlRDUnRwU2VuZGVy
IG9yIFJUQ1J0cFJlY2VpdmVyLgorICAgICAgICBUaGUgbW9kZWwgZm9sbG93cyBBdWRpb1dvcmts
ZXROb2RlIGluIHRoZSBzZW5zZSB0aGF0IHdlIGNyZWF0ZSBhIFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bSBvYmplY3QgaW4gbWFpbiB0aHJlYWQgdGhhdCBpcyB1c2VkIHdpdGggUlRDUnRwIG9iamVjdHMu
CisgICAgICAgIFRoZSBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gdGFrZXMgYSBuYW1lIGFuZCBhIHdv
cmtlciBhcyBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIGNv
dW50ZXIgcGFydCBpbiBhIHdvcmtlci4KKyAgICAgICAgQmVmb3JlIHRoYXQsIFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyIGNvbnN0cnVjdG9ycyBhcmUgcmVnaXN0ZXJlZCBpbiB0aGUgd29ya2VyIHdp
dGggYSBzcGVjaWZpYyBuYW1lLgorICAgICAgICBBIG1lc3NhZ2UgcG9ydCBpcyBzaGFyZWQgYmV0
d2VlbiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0gYW5kIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLgor
CisgICAgICAgIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBrZWVwcyBhIHdlYWsgcG9pbnRlciB0byBS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lciBzbyB0aGF0IHdlIGtlZXAgYWxsIHJlZiBjb3VudGluZyBv
ZiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lciBpbiB0aGUgd29ya2VyIHRocmVhZC4KKyAgICAgICAg
VG8gbWFrZSBzdXJlIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHN0YXlzIGFsaXZlIGZvciBsb25n
IGVub3VnaCwgd2Ugc2V0IGEgcGVuZGluZyBhY3Rpdml0eSB3aGVuIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSBpcyBsaW5rZWQgdG8gaXRzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLgorICAgICAgICBU
aGUgcGVuZGluZyBhY3Rpdml0eSBpcyB0aGVuIHJlbW92ZWQgZWl0aGVyIGF0IHdvcmtlciBjbG9z
dXJlIG9yIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSBiZWluZyBubyBsb25nZXIgZG9pbmcgcHJvY2Vz
c2luZy4KKworICAgICAgICBXZSBleHBvc2UgaW5kaXZpZHVhbCBjb21wcmVzc2VkIGZyYW1lcyBh
cyBSVENFbmNvZGVkQXVkaW9GcmFtZSBhbmQgUlRDRW5jb2RlZFZpZGVvRnJhbWUuCisgICAgICAg
IEFjY2Vzc29yIGlzIGxpbWl0ZWQgdG8gdGhlIHJhdyBkYXRhIGJ1dCBhZGRpdGlvbmFsIGdldHRl
cnMgc2hvdWxkIGJlIGFkZGVkIGxhdGVyIG9uLgorCisgICAgICAgIFRvIGltcGxlbWVudCBSVENS
dHBTY3JpcHRUcmFuc2Zvcm1lciwgd2UgaGF2ZSB0byBiZSBhYmxlIHRvIGNyZWF0ZSBXcml0YWJs
ZVN0cmVhbSB3aXRoIG5hdGl2ZSBzaW5rcy4KKyAgICAgICAgVGhpcyBpcyB3aHkgd2UgaW50cm9k
dWNlIFdyaXRhYmxlU3RyZWFtU2luayBhbmQgV3JpdGFibGVTdHJlYW0gQysrIGNsYXNzZXMuCisg
ICAgICAgIEJpbmRpbmcgYmV0d2VlbiBuYXRpdmUgZnJhbWVzIGFuZCBzdHJlYW1zIGlzIGRvbmUg
dGhyb3VnaCBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSBhbmQgUlRDUnRwV3JpdGFibGVTdHJl
YW1TaW5rLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3Jt
Lmh0bWwgYW5kIGh0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLmh0bWwuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkQXVkaW9GcmFtZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRD
RW5jb2RlZEF1ZGlvRnJhbWU6OlJUQ0VuY29kZWRBdWRpb0ZyYW1lKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UlRDRW5jb2RlZEF1ZGlvRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGw6IEFkZGVkLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEZyYW1lLmg6IEFkZGVkLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEZyYW1lLmNwcDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWU6OlJUQ0VuY29kZWRWaWRlb0Zy
YW1lKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWU6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkVmlkZW9GcmFtZS5p
ZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIr
VHJhbnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2Vp
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OnRyYW5zZm9ybSk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm06OnRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm06OnNldFRyYW5zZm9ybSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjppbml0aWFsaXplVHJhbnNm
b3JtZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtLmg6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmlzQXR0YWNo
ZWQgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNm
b3JtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpS
VENSdHBTY3JpcHRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJh
bnNmb3JtOjp+UlRDUnRwU2NyaXB0VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6c2V0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JT
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtOjp3aWxsQ2xl
YXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5p
dGlhbGl6ZVRyYW5zZm9ybWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybS5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlOjpjbG9zZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTo6ZW5xdWV1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OlJUQ1J0cFdyaXRhYmxl
U3RyZWFtU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6
OndyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OlJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyOjp+UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXI6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOjpjbGVhcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyOjpzZXRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
Y3JpcHRUcmFuc2Zvcm1lcjo6cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lcjo6c3RhcnRQZW5kaW5nQWN0aXZpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwU2NyaXB0VHJhbnNmb3JtZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6OnN0b3BQZW5kaW5nQWN0aXZpdHkp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRy
YW5zZm9ybWVyQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbDogQWRkZWQuCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBTZW5kZXI6OnRyYW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
cldpdGhUcmFuc2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcldpdGhUcmFu
c2Zvcm06OnRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXJXaXRoVHJh
bnNmb3JtOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6ZnJv
bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OlJUQ1J0cFRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06On5SVENSdHBUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNmb3JtOjppc0F0dGFjaGVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6YXR0YWNoVG9SZWNlaXZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvU2VuZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFRyYW5zZm9ybTo6Y2xlYXJCYWNrZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFRyYW5zZm9ybTo6ZGV0YWNoRnJvbVJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFRyYW5zZm9ybTo6ZGV0YWNoRnJvbVNlbmRlcik6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFRyYW5zZm9ybTo6aW50ZXJuYWxUcmFuc2Zvcm0pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpzZXRJbnB1dENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6OlRy
YW5zZm9ybSk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5o
OiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlk
bDogQWRkZWQuCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVh
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V3JpdGFibGVTdHJlYW06OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpKU1dyaXRhYmxlU3RyZWFtV3JhcHBlckNvbnZlcnRlcjo6dG9XcmFwcGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OldyaXRhYmxlU3RyZWFtOjpXcml0YWJsZVN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNyZWF0ZWQp
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1JUQ1J0cFRy
YW5zZm9ybS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUlRDUnRwVHJhbnNmb3JtZXI6OnRy
YW5zZm9ybSk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cmVnaXN0
ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcik6CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIpOgorICAgICAg
ICAqIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmFkZFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybWVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpwb3N0VGFza1RvV29ya2VyR2xv
YmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6
cG9zdFRhc2tUb1dvcmtlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdp
bmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlck9iamVjdFByb3h5Lmg6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPYmplY3RQ
cm94eTo6cG9zdFRhc2tUb1dvcmtlck9iamVjdCk6CisKIDIwMjAtMTEtMTkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENQZWVy
Q29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZWVycm9yIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDVmNmJiMWVkZGM2NTIyNzJlZmQ0NTFjM2YyZjFmNDI0ZDhlZDAwMGEuLjgxMjgzY2JiZmVi
MDkyYWZjOGUwMWVkMzJiZjM2NmU0MTBmOGYxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0z
NzUsNiArMzc1LDggQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEdHhTdGF0dXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVk
aW9GcmFtZS5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmlkbAogICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlSW5pdC5pZGwKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC00MDYsMTMgKzQwOCwxNiBAQCBz
ZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSdHhQYXJhbWV0
ZXJzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlk
bAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbAorICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsCisg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKKyAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kUGFyYW1ldGVycy5pZGwKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBUcmFuc2NlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uLmlkbAotICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNm
b3JtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2RwVHlwZS5pZGwKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5pZGwKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsCkBAIC00ODYsNiArNDkxLDcg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIuaWRsCiAgICAgTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVs
dFdyaXRlci5pZGwKKyAgICBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1TaW5rLmlkbAog
CiAgICAgTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsCiAgICAgTW9kdWxlcy93ZWJh
dWRpby9BbmFseXNlck9wdGlvbnMuaWRsCkBAIC0xNzU4LDcgKzE3NjQsNiBAQCBzZXQoV2ViQ29y
ZVRlc3RTdXBwb3J0X0lETF9GSUxFUwogICAgIHRlc3RpbmcvTW9ja0NETUZhY3RvcnkuaWRsCiAg
ICAgdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbAogICAgIHRlc3RpbmcvTW9j
a1BhZ2VPdmVybGF5LmlkbAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5pZGwKICAg
ICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCiAgICAgdGVzdGluZy9UeXBlQ29u
dmVyc2lvbnMuaWRsCiApCkBAIC0xNzgyLDcgKzE3ODcsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
VGVzdFN1cHBvcnRfU09VUkNFUwogICAgIHRlc3RpbmcvTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0
aW9uLmNwcAogICAgIHRlc3RpbmcvTW9ja1BhZ2VPdmVybGF5LmNwcAogICAgIHRlc3RpbmcvTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmNwcAotICAgIHRlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5j
cHAKICAgICB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCiAgICAgdGVzdGluZy9q
cy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA3MTQyOGM1M2I3Yzk2MWVhMTYyM2RjNjQwYTdj
MGM2MGIyYjYzYzdjLi4wY2M2ZmFlZmZiNTJhZDk5YzU0ZTE0NTdmMzMyOTRiNTFiZWU0YmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAg
LTIwNSw2ICsyMDUsOCBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbEV2ZW50LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
ZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0R0eFN0YXR1cy5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRW5jb2RlZEF1ZGlvRnJhbWUuaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUluaXQuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUuaWRsCkBAIC0yMzgsNiArMjQwLDEwIEBAICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3Jt
LmlkbAogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5p
ZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUnR4UGFyYW1ldGVy
cy5pZGwKICQoUFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm0uaWRsCiskKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbAorJChQUk9KRUNUX0RJUikvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKKyQoUFJPSkVDVF9ESVIpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwKICQo
UFJPSkVDVF9ESVIpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZFBhcmFtZXRlcnMuaWRs
CiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zv
cm0uaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5p
ZGwKQEAgLTM0MCw2ICszNDYsNyBAQCAkKFBST0pFQ1RfRElSKS9Nb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcwogJChQUk9KRUNUX0RJUikvTW9kdWxlcy9z
dHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwKICQoUFJPSkVDVF9ESVIpL01v
ZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIuanMKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qcworJChQUk9KRUNU
X0RJUikvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwKICQoUFJPSkVDVF9E
SVIpL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmlkbAogJChQUk9KRUNUX0RJUikvTW9k
dWxlcy93ZWJhdWRpby9BbmFseXNlck9wdGlvbnMuaWRsCiAkKFBST0pFQ1RfRElSKS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBlYTYwYjY4MTkxYjMyMjQzNTExNTRlMjUyMDY3
MGE5ZTgzOTQ2MjM1Li4wMTM2NmYxZGNjNGU3NTAxODBmMzU2NDVjZjUyNDMzZWVmY2QwMTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApA
QCAtMTY0OSw2ICsxNjQ5LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDRGVncmFkYXRpb25QcmVmZXJlbmNlLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEZWdyYWRhdGlvblByZWZlcmVuY2Uu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEdHhT
dGF0dXMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JUQ0R0eFN0YXR1cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENFbmNvZGVkQXVkaW9GcmFtZS5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENF
bmNvZGVkVmlkZW9GcmFtZS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDSWNlQ2FuZGlkYXRlSW5pdC5jcHAKQEAg
LTE3MTEsNiArMTcxNSwxNCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFJ0eFBhcmFtZXRlcnMuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTRnJhbWVUcmFuc2Zv
cm0uY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmgKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtUHJvdmlkZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmgKKyQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5jcHAKKyQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDUnRwU2NyaXB0
VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRQYXJhbWV0ZXJzLmNwcAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENSdHBTZW5kUGFyYW1ldGVycy5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ1J0cFNlbmRl
citUcmFuc2Zvcm0uY3BwCkBAIC0yNTczLDYgKzI1ODUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuYwogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyLmNwcAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXcml0YWJsZVN0cmVh
bURlZmF1bHRXcml0ZXIuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dyaXRhYmxlU3RyZWFtU2luay5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTERvY3VtZW50LmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNYTUxEb2N1bWVudC5oCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTEh0dHBSZXF1
ZXN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMDVlNDQ4YmIzMzFjMmJi
NmZiYWY3N2JjYTJkNjZkNDFiNTkyMGE3ZS4uOWMwMjJkMmE0MjYwMjU2NWEzMDJkZGYwNGU4OWM1
NzEwZWExNjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMzEsNiArMjMx
LDggQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEZWdyYWRhdGlvblByZWZlcmVuY2UuaWRsIFwKICAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRHR4U3RhdHVzLmlkbCBcCisgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbCBcCisgICAgJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbCBcCiAgICAg
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVJbml0LmlkbCBc
CiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZVR5cGUu
aWRsIFwKQEAgLTI2NSwxMCArMjY3LDEzIEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5p
ZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm0uaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwgXAog
ICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTeW5jaHJvbml6YXRpb25T
b3VyY2UuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJh
bnNjZWl2ZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNjZWl2ZXJEaXJlY3Rpb24uaWRsIFwKLSAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1NkcFR5cGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuaWRsIFwKQEAgLTM0NCw2ICszNDks
NyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9zdHJlYW1z
L1dyaXRhYmxlU3RyZWFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5pZGwgXAorICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaWRsIFwKICAgICAkKFdlYkNvcmUpL01v
ZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJPcHRpb25zLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbCBcCkBAIC0xMjMyLDcgKzEyMzgsNiBAQCBKU19C
SU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudENvbnRh
Y3RGaWVsZHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGlu
YXRvci5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9Nb2NrUGF5bWVudEVycm9yLmlkbCBc
Ci0gICAgJChXZWJDb3JlKS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0uaWRsIFwKICAgICAk
KFdlYkNvcmUpL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwg
XAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5pZGwgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRBdWRpb0Zy
YW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ODUyNzcyNjM3OWZiZmI2ZGE3ODQ4MzcxZWNmYjEzMThkYjhl
ZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJSVENFbmNvZGVkQXVkaW9GcmFtZS5oIgorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUlRDRW5jb2RlZEF1ZGlvRnJhbWU6OlJUQ0VuY29kZWRB
dWRpb0ZyYW1lKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYgZnJhbWUpCisg
ICAgOiBSVENFbmNvZGVkRnJhbWUoV1RGTW92ZShmcmFtZSkpCit7Cit9CisKK1JUQ0VuY29kZWRB
dWRpb0ZyYW1lOjp+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKSA9IGRlZmF1bHQ7CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFt
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjgyYjZmMDgyNzVlNjkzNTliNDdjMGYwNTE2YzMyY2VlZDYwNDAxNTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRBdWRpb0ZyYW1lLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
Ql9SVEMpCisKKyNpbmNsdWRlICJSVENFbmNvZGVkRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBSVENFbmNvZGVkQXVkaW9GcmFtZSA6IHB1YmxpYyBSVENFbmNvZGVkRnJh
bWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+IGNyZWF0
ZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZyYW1lKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFJUQ0VuY29kZWRBdWRpb0ZyYW1lKFdURk1vdmUoZnJhbWUpKSk7IH0KKyAg
ICB+UlRDRW5jb2RlZEF1ZGlvRnJhbWUoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSVENF
bmNvZGVkQXVkaW9GcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmKTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRD
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNv
ZGVkQXVkaW9GcmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0VuY29kZWRBdWRpb0ZyYW1lLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDBkNTZjMWQzMDg4MmFjYTk2MzY0
YWE3NTZjNDlkOWRjMGVmM2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkQXVkaW9GcmFtZS5pZGwKQEAgLTAsMCArMSwzNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRDLAorICAgIEV4cG9zZWQ9
RGVkaWNhdGVkV29ya2VyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCitdIGludGVy
ZmFjZSBSVENFbmNvZGVkQXVkaW9GcmFtZSB7CisgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgYXR0cmlidXRlIEFycmF5QnVmZmVyIGRh
dGE7CisgICAgLy8gUlRDQXVkaW9GcmFtZU1ldGFkYXRhIGdldE1ldGFkYXRhKCk7Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJh
bWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA3NmE5Mzk1NmFiYmJlODQ2MDQ3Y2NlMDFhZjEyYzVjMWNiMmQ1
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0VuY29kZWRGcmFtZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSVENFbmNvZGVkRnJhbWUuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0
cm9uZ0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSVENFbmNvZGVkRnJhbWU6
OlJUQ0VuY29kZWRGcmFtZShVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lPiYmIGZy
YW1lKQorICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKK3sKK30KKworUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+IFJUQ0VuY29kZWRGcmFtZTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgYXV0byBk
YXRhID0gbV9mcmFtZS0+ZGF0YSgpOworICAgIHJldHVybiBKU0M6OkFycmF5QnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhLCBkYXRhLnNpemUpOworfQorCit2b2lkIFJUQ0VuY29kZWRGcmFtZTo6c2V0
RGF0YShKU0M6OkFycmF5QnVmZmVyJiBidWZmZXIpCit7CisgICAgbV9mcmFtZS0+c2V0RGF0YSh7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVM
ZW5ndGgoKSB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENFbmNvZGVkRnJhbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGI0NzRkYjkxMzE1MDhkZTM1ZGQwYTdl
MGQwMWQ3NGViYTZhZjliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENFbmNvZGVkRnJhbWUuaApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5o
IgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1
ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENFbmNvZGVkRnJhbWUg
OiBwdWJsaWMgUmVmQ291bnRlZDxSVENFbmNvZGVkRnJhbWU+IHsKK3B1YmxpYzoKKyAgICBSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0OworICAgIHZvaWQgc2V0RGF0YShKU0M6
OkFycmF5QnVmZmVyJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
PiB0YWtlUlRDRnJhbWUoKSB7IHJldHVybiBXVEZNb3ZlKG1fZnJhbWUpOyB9CisKK3Byb3RlY3Rl
ZDoKKyAgICBleHBsaWNpdCBSVENFbmNvZGVkRnJhbWUoVW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9y
bWFibGVGcmFtZT4mJik7CisKKyAgICBVbmlxdWVSZWY8UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
PiBtX2ZyYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhZjYzYTA5YzJk
OGE2OTVkNDM3NjJlZjdkMzkwY2ZmOTdlNjYxNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcApAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ0VuY29kZWRWaWRlb0ZyYW1lLmgi
CisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSVENFbmNv
ZGVkVmlkZW9GcmFtZTo6UlRDRW5jb2RlZFZpZGVvRnJhbWUoVW5pcXVlUmVmPFJUQ1J0cFRyYW5z
Zm9ybWFibGVGcmFtZT4mJiBmcmFtZSkKKyAgICA6IFJUQ0VuY29kZWRGcmFtZShXVEZNb3ZlKGZy
YW1lKSkKK3sKK30KKworUlRDRW5jb2RlZFZpZGVvRnJhbWU6On5SVENFbmNvZGVkVmlkZW9GcmFt
ZSgpID0gZGVmYXVsdDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc3MDVhYzg1NmEwMjYy
OTdmODE5MDczZWFmNGM4MzBlMzYxOWE1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuaApAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ0VuY29kZWRG
cmFtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ0VuY29kZWRWaWRlb0Zy
YW1lIDogcHVibGljIFJUQ0VuY29kZWRGcmFtZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxS
VENFbmNvZGVkVmlkZW9GcmFtZT4gY3JlYXRlKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWU+JiYgZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDRW5jb2RlZFZpZGVvRnJh
bWUoV1RGTW92ZShmcmFtZSkpKTsgfQorICAgIH5SVENFbmNvZGVkVmlkZW9GcmFtZSgpOworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKFVuaXF1ZVJlZjxSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVkZGQ2YTgxN2ZlMWRlZmEwMGRiMTNiNzljNmZjYWJlY2VkNjI5NjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRWaWRl
b0ZyYW1lLmlkbApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlv
bmFsPVdFQl9SVEMsCisgICAgRXhwb3NlZD1EZWRpY2F0ZWRXb3JrZXIsCisgICAgSW1wbGVtZW50
YXRpb25MYWNrc1ZUYWJsZSwKK10gaW50ZXJmYWNlIFJUQ0VuY29kZWRWaWRlb0ZyYW1lIHsKKyAg
ICAvLyByZWFkb25seSBhdHRyaWJ1dGUgUlRDRW5jb2RlZFZpZGVvRnJhbWVUeXBlIHR5cGU7Cisg
ICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7Cisg
ICAgYXR0cmlidXRlIEFycmF5QnVmZmVyIGRhdGE7CisgICAgLy8gUlRDVmlkZW9GcmFtZU1ldGFk
YXRhIGdldE1ldGFkYXRhKCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcitUcmFuc2Zvcm0uaWRsCmluZGV4
IGYwYjJlMTFkNDdmZmJiM2E4NDNiZjQxMzk3ZTBjMDhjOTFlMjYyNzguLjQ2OTM0ZTQ4ZDAyYWZm
NGJiZTY0YmJhNTlhYzdmZTA3MDlhMGEyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIrVHJhbnNmb3JtLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyK1RyYW5zZm9ybS5p
ZGwKQEAgLTIzLDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCit0eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3IgUlRDUnRwU2NyaXB0VHJh
bnNmb3JtKSBSVENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRpb25hbD1XRUJfUlRDLAog
ICAgIEVuYWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCmlu
ZGV4IDBiZmNjOTY2M2MyZjA2ZDRlOTBjMDk0ODhkZjI1MmUxZmQyYjNjMDAuLmVmN2EyOTgwMDA2
MmUyMzhjNmNiM2M2MGM2NTIyNWNlZDViMzgxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCkBAIC04MSw4ICs4MSwx
MCBAQCBPcHRpb25hbDxSVENSdHBDYXBhYmlsaXRpZXM+IFJUQ1J0cFJlY2VpdmVyOjpnZXRDYXBh
YmlsaXRpZXMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIHJldHVybiBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OnJlY2VpdmVyQ2FwYWJpbGl0aWVzKGNvbnRleHQsIGtpbmQpOwogfQogCi1FeGNlcHRp
b25Pcjx2b2lkPiBSVENSdHBSZWNlaXZlcjo6c2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFu
c2Zvcm0+JiYgdHJhbnNmb3JtKQorRXhjZXB0aW9uT3I8dm9pZD4gUlRDUnRwUmVjZWl2ZXI6OnNl
dFRyYW5zZm9ybShPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtKQogeworICAg
IGlmICh0cmFuc2Zvcm0gJiYgbV90cmFuc2Zvcm0gJiYgKnRyYW5zZm9ybSA9PSAqbV90cmFuc2Zv
cm0pCisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKHRyYW5zZm9ybSAmJiB0cmFuc2Zvcm0t
PmlzQXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yLCAidHJhbnNmb3JtIGlzIGFscmVhZHkgaW4gdXNlIl9zIH07CiAKQEAgLTk1LDYgKzk3LDEz
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1J0cFJlY2VpdmVyOjpzZXRUcmFuc2Zvcm0oUmVmUHRy
PFJUQ1J0cFRyYW5zZm9ybT4mJiB0cmFuc2ZvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorT3B0aW9u
YWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5hbD4gUlRDUnRwUmVjZWl2ZXI6OnRyYW5zZm9ybSgp
Cit7CisgICAgaWYgKCFtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gbV90cmFuc2Zvcm0tPmludGVybmFsVHJhbnNmb3JtKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oCmluZGV4IDhjYjFhNDNk
MmJkMDQ0NjI0YzI4N2NhNmFmNzFjN2RmODc4ZDIyYjUuLjNhMTYxNzIwNTQzYzFkNGJiZmM1MWEx
NDAxMzdkOWNjNzcwMGQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKQEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAg
IFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQo
KTsgfQogICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICBS
VENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtLmdldCgpOyB9
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBUcmFuc2Zv
cm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRyYW5zZm9y
bSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShPcHRpb25hbDxSVENSdHBU
cmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFJlY2VpdmVyKFBlZXJDb25uZWN0
aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
UnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
UmVjZWl2ZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ+IG1fY29ubmVjdGlvbjsKLSAgICBSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiBtX3RyYW5z
Zm9ybTsKKyAgICBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm0+IG1fdHJhbnNmb3JtOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtLmgKaW5k
ZXggNGViOWI4NDc5MTEzZGEyMTc5NWM4NzA3ZWJkZGU0Y2E2ZWEyYjRjZi4uODE2Y2E3OWM5ZDNi
NzBiMjc5NGViOTZiODI3Y2ZhNTI5MzM2OTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlcldpdGhUcmFuc2Zvcm0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyV2l0aFRyYW5z
Zm9ybS5oCkBAIC0zNiw4ICszNiw4IEBAIGNsYXNzIFJUQ1J0cFRyYW5zZm9ybTsKIAogY2xhc3Mg
UlRDUnRwUmVjZWl2ZXJXaXRoVHJhbnNmb3JtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUlRDUnRw
VHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyKSB7IHJldHVybiBy
ZWNlaXZlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2b2lkPiBzZXRU
cmFuc2Zvcm0oUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyLCBSZWZQdHI8UlRDUnRwVHJhbnNmb3Jt
PiYmIHRyYW5zZm9ybSkgeyByZXR1cm4gcmVjZWl2ZXIuc2V0VHJhbnNmb3JtKFdURk1vdmUodHJh
bnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRlcm5h
bD4gdHJhbnNmb3JtKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikgeyByZXR1cm4gcmVjZWl2ZXIu
dHJhbnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3Jt
KFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlciwgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRl
cm5hbD4mJiB0cmFuc2Zvcm0pIHsgcmV0dXJuIHJlY2VpdmVyLnNldFRyYW5zZm9ybShSVENSdHBU
cmFuc2Zvcm06OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCAyOTc0YzY0MGM5OGExYWVm
ZDFlMWI2ZmEyMWQxN2E2ZDY1MGE2NjM2Li41Yzg3Y2Y1NjRhNTE1MzAxNDc5M2M0OGYyZjJkZTky
NzVjNzk3MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
IlJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZC5oIgogI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC02OCwxMSArNjksMTIgQEAgdWludDY0X3QgUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtOjpjb3VudGVyRm9yVGVzdGluZygpIGNvbnN0CiAKIHZvaWQgUlRDUnRwU0ZyYW1lVHJh
bnNmb3JtOjppbml0aWFsaXplVHJhbnNmb3JtZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFj
a2VuZCwgU2lkZSBzaWRlKQogeworICAgIG1faXNBdHRhY2hlZCA9IHRydWU7CiAgICAgbV90cmFu
c2Zvcm1lci0+c2V0SXNTZW5kaW5nKHNpZGUgPT0gU2lkZTo6U2VuZGVyKTsKICAgICBtX3RyYW5z
Zm9ybWVyLT5zZXRJc1Byb2Nlc3NpbmdBdWRpbyhiYWNrZW5kLm1lZGlhVHlwZSgpID09IFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6QXVkaW8pOwogCiAgICAgYmFja2VuZC5zZXRU
cmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbdHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBi
YWNrZW5kID0gbWFrZVJlZihiYWNrZW5kKV0oYXV0byYmIGZyYW1lKSB7Ci0gICAgICAgIGF1dG8g
Y2h1bmsgPSBmcmFtZS5kYXRhKCk7CisgICAgICAgIGF1dG8gY2h1bmsgPSBmcmFtZS0+ZGF0YSgp
OwogICAgICAgICBhdXRvIHJlc3VsdCA9IHRyYW5zZm9ybWVyLT50cmFuc2Zvcm0oY2h1bmsuZGF0
YSwgY2h1bmsuc2l6ZSk7CiAKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewpA
QCAtODAsOSArODIsOSBAQCB2b2lkIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRy
YW5zZm9ybWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbgogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZnJhbWUuc2V0RGF0YSh7IHJlc3VsdC5yZXR1cm5W
YWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVyblZhbHVlKCkuc2l6ZSgpIH0pOworICAgICAgICBm
cmFtZS0+c2V0RGF0YSh7IHJlc3VsdC5yZXR1cm5WYWx1ZSgpLmRhdGEoKSwgcmVzdWx0LnJldHVy
blZhbHVlKCkuc2l6ZSgpIH0pOwogCi0gICAgICAgIGJhY2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1l
ZEZyYW1lKFdURk1vdmUoZnJhbWUpKTsKKyAgICAgICAgYmFja2VuZC0+cHJvY2Vzc1RyYW5zZm9y
bWVkRnJhbWUoV1RGTW92ZShmcmFtZS5nZXQoKSkpOwogICAgIH0pOwogfQogCkBAIC0xMDAsNiAr
MTAyLDcgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9y
U2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGIKIHZvaWQgUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtOjp3aWxsQ2xlYXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCiB7
CiAgICAgYmFja2VuZC5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKCk7CisgICAgbV9p
c0F0dGFjaGVkID0gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNm
b3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRy
YW5zZm9ybS5oCmluZGV4IDE1ODE5MGE5MDk2NjBjZjA0MGQwNjdlMzZhYTU3ZmZiY2E2MTRiYWMu
LmQ0N2RiOWIyOWM4YTZiZDU3OGNlMjMxYWEzMWI1NjlhMDlhZTg1YzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm0uaApAQCAtMjgsMzIgKzI4LDM0IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKICNpbmNs
dWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgotI2luY2x1ZGUgIlJUQ1J0cFRyYW5zZm9ybS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyeXB0b0tleTsKIGNsYXNzIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyOworY2xhc3MgUlRDUnRwVHJhbnNmb3JtQmFja2VuZDsKIAotY2xh
c3MgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIGZpbmFsIDogcHVibGljIFJUQ1J0cFRyYW5zZm9ybSB7
CitjbGFzcyBSVENSdHBTRnJhbWVUcmFuc2Zvcm0gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENSdHBT
RnJhbWVUcmFuc2Zvcm0+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJUQ1J0cFNGcmFtZVRy
YW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTRnJhbWVUcmFu
c2Zvcm0pOyB9CiAgICAgflJUQ1J0cFNGcmFtZVRyYW5zZm9ybSgpOwogCiAgICAgdm9pZCBzZXRF
bmNyeXB0aW9uS2V5KENyeXB0b0tleSYsIE9wdGlvbmFsPHVpbnQ2NF90PiwgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYpOwogCisgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0F0dGFjaGVkOyB9CisgICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJU
Q1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yU2Vu
ZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKKyAgICB2b2lkIHdpbGxDbGVhckJhY2tlbmQo
UlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3Qg
Y291bnRlckZvclRlc3RpbmcoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBSVENSdHBTRnJhbWVU
cmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZv
clNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikgZmluYWw7Ci0gICAgdm9pZCB3aWxsQ2xl
YXJCYWNrZW5kKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsKLQogICAgIGVudW0gY2xh
c3MgU2lkZSB7IFNlbmRlciwgUmVjZWl2ZXIgfTsKICAgICB2b2lkIGluaXRpYWxpemVUcmFuc2Zv
cm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiwgU2lkZSk7CiAKKyAgICBib29sIG1faXNBdHRh
Y2hlZCB7IGZhbHNlIH07CiAgICAgUmVmPFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyPiBtX3RyYW5z
Zm9ybWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uaWRsCmluZGV4IDk3Yjc2OThiZDhjNmQ0
YjIyY2VjNjA5YTg3Y2E3MWFiMGFlNGI5NDEuLjI2NDI4ZGQ5MmY1MTU5ZDNlOTIyYjUxMGU0ZGUw
NzU2NjdhOTEyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5pZGwKQEAgLTI4LDggKzI4LDkgQEAK
ICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLAogICAgIEV4cG9y
dE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEV4cG9zZWQ9V2luZG93LAorICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotXSBpbnRl
cmZhY2UgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtIDogUlRDUnRwVHJhbnNmb3JtIHsKK10gaW50ZXJm
YWNlIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB7CiAgICAgY29uc3RydWN0b3IoKTsKIAogICAgIFBy
b21pc2U8dW5kZWZpbmVkPiBzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSBrZXksIG9wdGlvbmFs
IHVuc2lnbmVkIGxvbmcgbG9uZyBrZXlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjc3MzYwNzVkZWQ3NzZiMmY3NjljZDVlOTg0YjU3ZjM1OWQyMTVhNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0
VHJhbnNmb3JtLmNwcApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENS
dHBTY3JpcHRUcmFuc2Zvcm0uaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAi
RXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdl
Q2hhbm5lbC5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgiCisjaW5jbHVk
ZSAiUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIgorI2luY2x1ZGUgIldvcmtlci5oIgorI2luY2x1
ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk7CisKK0V4Y2Vw
dGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBSVENSdHBTY3JpcHRUcmFuc2Zvcm06
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrZXImIHdvcmtlciwg
U3RyaW5nJiYgbmFtZSkKK3sKKyAgICBpZiAoIXdvcmtlci5oYXNSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lcihuYW1lKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiTm8gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIgd2FzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIG5h
bWUiX3MgfTsKKworICAgIGlmICghd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiV29ya2VyIGZyYW1l
IGlzIGRldGFjaGVkIl9zIH07CisKKyAgICBhdXRvIG1lc3NhZ2VDaGFubmVsID0gTWVzc2FnZUNo
YW5uZWw6OmNyZWF0ZSgqd29ya2VyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgYXV0
byB0cmFuc2Zvcm1NZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVsLT5wb3J0MSgpOworICAgIGF1
dG8gdHJhbnNmb3JtZXJNZXNzYWdlUG9ydCA9IG1lc3NhZ2VDaGFubmVsLT5wb3J0MigpOworCisg
ICAgYXV0byB0cmFuc2Zvcm0gPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybShj
b250ZXh0LCBtYWtlUmVmKHdvcmtlciksIG1ha2VSZWYoKnRyYW5zZm9ybU1lc3NhZ2VQb3J0KSkp
OworICAgIHRyYW5zZm9ybS0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICB3b3JrZXIuY3JlYXRl
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIobmFtZSwgdHJhbnNmb3JtZXJNZXNzYWdlUG9ydC0+ZGlz
ZW50YW5nbGUoKSwgdHJhbnNmb3JtKTsKKworICAgIHJldHVybiB0cmFuc2Zvcm07Cit9CisKK1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybTo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZjxXb3JrZXI+JiYgd29ya2VyLCBSZWY8TWVzc2FnZVBvcnQ+
JiYgcG9ydCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICAsIG1fd29ya2Vy
KFdURk1vdmUod29ya2VyKSkKKyAgICAsIG1fcG9ydChXVEZNb3ZlKHBvcnQpKQoreworfQorCitS
VENSdHBTY3JpcHRUcmFuc2Zvcm06On5SVENSdHBTY3JpcHRUcmFuc2Zvcm0oKQoreworICAgIGNs
ZWFyKCk7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpzZXRUcmFuc2Zvcm1lcihS
ZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+JiYgdHJhbnNmb3JtZXIpCit7CisgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKCF0cmFuc2Zvcm1lcikgeworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKnRoaXMsIFRh
c2tTb3VyY2U6Ok1lZGlhRWxlbWVudCwgRXJyb3JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5l
cnJvckV2ZW50LCAiQW4gZXJyb3Igd2FzIHRocm93biBmcm9tIFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyIGNvbnN0cnVjdG9yIl9zLCB7IH0sIDAsIDAsIHsgfSkpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3RyYW5zZm9ybWVyTG9jayk7CisgICAgICAgIEFTU0VSVCghbV9pc1RyYW5zZm9ybWVySW5p
dGlhbGl6ZWQpOworICAgICAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCA9IHRydWU7Cisg
ICAgICAgIG1fdHJhbnNmb3JtZXIgPSBtYWtlV2Vha1B0cih0cmFuc2Zvcm1lci5nZXQoKSk7Cisg
ICAgfQorICAgIHRyYW5zZm9ybWVyLT5zdGFydFBlbmRpbmdBY3Rpdml0eSgpOworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgICAgIHNldHVwVHJhbnNmb3Jt
ZXIobV9iYWNrZW5kLnJlbGVhc2VOb25OdWxsKCkpOworICAgIH0pOworfQorCit2b2lkIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcihSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kJiBiYWNrZW5kKQoreworICAgIGluaXRpYWxpemVUcmFuc2Zvcm1lcihiYWNr
ZW5kKTsKK30KKwordm9pZCBSVENSdHBTY3JpcHRUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5k
Rm9yU2VuZGVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgaW5pdGlh
bGl6ZVRyYW5zZm9ybWVyKGJhY2tlbmQpOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bTo6d2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikKK3sKKyAgICBjbGVh
cigpOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTo6aW5pdGlhbGl6ZVRyYW5zZm9y
bWVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmIGJhY2tlbmQpCit7CisgICAgbV9pc0F0dGFjaGVk
ID0gdHJ1ZTsKKyAgICBpZiAoIXNldHVwVHJhbnNmb3JtZXIobWFrZVJlZihiYWNrZW5kKSkpCisg
ICAgICAgIG1fYmFja2VuZCA9IG1ha2VSZWYoYmFja2VuZCk7Cit9CisKK2Jvb2wgUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtOjpzZXR1cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5k
PiYmIGJhY2tlbmQpCit7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RyYW5zZm9ybWVy
TG9jayk7CisgICAgaWYgKCFtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgbV93b3JrZXItPnBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShb
dHJhbnNmb3JtZXIgPSBtX3RyYW5zZm9ybWVyLCBiYWNrZW5kID0gV1RGTW92ZShiYWNrZW5kKV0o
YXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAodHJhbnNmb3JtZXIpCisgICAgICAgICAgICB0
cmFuc2Zvcm1lci0+c3RhcnQoV1RGTW92ZShiYWNrZW5kKSk7CisgICAgfSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3ZvaWQgUlRDUnRwU2NyaXB0VHJhbnNmb3JtOjpjbGVhcigpCit7CisgICAg
bV9pc0F0dGFjaGVkID0gZmFsc2U7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJh
bnNmb3JtZXJMb2NrKTsKKyAgICBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCA9IGZhbHNlOwor
ICAgIG1fd29ya2VyLT5wb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoW3RyYW5zZm9ybWVyID0g
V1RGTW92ZShtX3RyYW5zZm9ybWVyKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBpZiAodHJh
bnNmb3JtZXIpCisgICAgICAgICAgICB0cmFuc2Zvcm1lci0+Y2xlYXIoKTsKKyAgICB9KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlw
dFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
Y3JpcHRUcmFuc2Zvcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGRjZWI1ZjQwZmY1N2ZkNWZhM2NjMDc5M2E2
MTA4ZTg1NTZlNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm0uaApAQCAtMCwwICsxLDkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjsKK2Ns
YXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ7CitjbGFzcyBXb3JrZXI7CisKK2NsYXNzIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybSBmaW5hbAorICAgIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4KKyAgICAsIHB1YmxpYyBBY3RpdmVET01PYmplY3QKKyAg
ICAsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKKyAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSk7CitwdWJsaWM6CisgICAgc3RhdGljIEV4
Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFdvcmtlciYsIFN0cmluZyYmIG5hbWUpOworICAgIH5SVENSdHBTY3JpcHRU
cmFuc2Zvcm0oKTsKKworICAgIE1lc3NhZ2VQb3J0JiBwb3J0KCkgeyByZXR1cm4gbV9wb3J0Lmdl
dCgpOyB9CisKKyAgICB2b2lkIHNldFRyYW5zZm9ybWVyKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lcj4mJik7CisKKyAgICBib29sIGlzQXR0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
QXR0YWNoZWQ7IH0KKyAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoUlRDUnRw
VHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIo
UlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOworICAgIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENS
dHBUcmFuc2Zvcm1CYWNrZW5kJik7CisKKyAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6
cmVmOworICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkOjpkZXJlZjsKKworcHJpdmF0ZToK
KyAgICBSVENSdHBTY3JpcHRUcmFuc2Zvcm0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxX
b3JrZXI+JiYsIFJlZjxNZXNzYWdlUG9ydD4mJik7CisKKyAgICB2b2lkIGluaXRpYWxpemVUcmFu
c2Zvcm1lcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisgICAgYm9vbCBzZXR1cFRyYW5zZm9y
bWVyKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmKTsKKyAgICB2b2lkIGNsZWFyKCk7CisK
KyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgeyByZXR1cm4gIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybSI7IH0KKworICAgIC8v
IEV2ZW50VGFyZ2V0CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1FdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQorCisgICAgUmVmPFdvcmtlcj4gbV93b3JrZXI7CisgICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3Bv
cnQ7CisKKyAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CisgICAgUmVmUHRyPFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFja2VuZDsKKworICAgIExvY2sgbV90cmFuc2Zvcm1lckxv
Y2s7CisgICAgYm9vbCBtX2lzVHJhbnNmb3JtZXJJbml0aWFsaXplZCB7IGZhbHNlIH07CisgICAg
V2Vha1B0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4gbV90cmFuc2Zvcm1lcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFu
c2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm0uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NmE5Yjk1MzFjMTc4MjFjNjg5OWI2ZjYwMGZk
NTczMGQ5ZmU5OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybS5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCX1JU
QywKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlJUQ0luc2VydGFibGVTdHJlYW1zLAorICAgIEV4
cG9zZWQ9V2luZG93LAorICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKK10gaW50ZXJmYWNl
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSA6IEV2ZW50VGFyZ2V0IHsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gY29uc3RydWN0b3IoV29ya2VyIHdvcmtlciwgRE9NU3RyaW5n
IG5hbWUpOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lc3NhZ2VQb3J0IHBvcnQ7Cit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjNiZThh
ZGMzMDI3ZTU3OGY2NmNmNGM1OWMxYjU3NGQ2ZmUyNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92
aWRlci5pZGwKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2ludGVyZmFjZSBtaXhpbiBS
VENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlciB7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB1
bmRlZmluZWQgcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihET01TdHJpbmcgbmFtZSwg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3RvciBwcm9jZXNzb3JDb25zdHJ1Y3Rvcik7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMjdjMDNjOWI4Yjhj
NGEwMmIwMDExYWIwMDk4ZmQ3NjBmZTNmZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5jcHAKQEAg
LTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRwU2NyaXB0VHJhbnNmb3Jt
ZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5oIgorI2luY2x1ZGUgIkpT
UlRDRW5jb2RlZEF1ZGlvRnJhbWUuaCIKKyNpbmNsdWRlICJKU1JUQ0VuY29kZWRWaWRlb0ZyYW1l
LmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmgiCisjaW5jbHVkZSAiUmVh
ZGFibGVTdHJlYW0uaCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgorI2luY2x1
ZGUgIldyaXRhYmxlU3RyZWFtLmgiCisjaW5jbHVkZSAiV3JpdGFibGVTdHJlYW1TaW5rLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2UK
KyAgICA6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNvdXJjZQorICAgICwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSk7IH0KKworICAgIHZvaWQgY2xvc2Uo
KSB7IGNvbnRyb2xsZXIoKS5jbG9zZSgpOyB9CisgICAgdm9pZCBlbnF1ZXVlKEpTQzo6SlNWYWx1
ZSB2YWx1ZSkgeyBjb250cm9sbGVyKCkuZW5xdWV1ZSh2YWx1ZSk7IH0KKworcHJpdmF0ZToKKyAg
ICBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZSgpID0gZGVmYXVsdDsKKworICAgIC8vIFJlYWRh
YmxlU3RyZWFtU291cmNlCisgICAgdm9pZCBzZXRBY3RpdmUoKSBmaW5hbCB7IH0KKyAgICB2b2lk
IHNldEluYWN0aXZlKCkgZmluYWwgeyB9CisgICAgdm9pZCBkb1N0YXJ0KCkgZmluYWwgeyB9Cisg
ICAgdm9pZCBkb1B1bGwoKSBmaW5hbCB7IH0KKyAgICB2b2lkIGRvQ2FuY2VsKCkgZmluYWwgeyB9
Cit9OworCitjbGFzcyBSVENSdHBXcml0YWJsZVN0cmVhbVNpbmsgOiBwdWJsaWMgV3JpdGFibGVT
dHJlYW1TaW5rIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFdyaXRhYmxlU3RyZWFt
U2luaz4gY3JlYXRlKEZ1bmN0aW9uPHZvaWQoVW5pcXVlUmVmPFJUQ1J0cFRyYW5zZm9ybWFibGVG
cmFtZT4mJik+JiYgZW5xdWV1ZUZ1bmN0aW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0
cFdyaXRhYmxlU3RyZWFtU2luayhXVEZNb3ZlKGVucXVldWVGdW5jdGlvbikpKTsgfQorCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IFJUQ1J0cFdyaXRhYmxlU3RyZWFtU2luayhGdW5jdGlvbjx2b2lk
KFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPiYmIGVucXVldWVGdW5jdGlv
bikKKyAgICAgICAgOiBtX2VucXVldWVGdW5jdGlvbihXVEZNb3ZlKGVucXVldWVGdW5jdGlvbikp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgd3JpdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBw
cm9taXNlKQorICAgIHsKKyAgICAgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmNvbnRleHQuZ2xv
YmFsT2JqZWN0KCk7CisKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
Z2xvYmFsT2JqZWN0LnZtKCkpOworICAgICAgICBhdXRvIGZyYW1lID0gY29udmVydDxJRExVbmlv
bjxJRExJbnRlcmZhY2U8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBJRExJbnRlcmZhY2U8UlRDRW5j
b2RlZFZpZGVvRnJhbWU+Pj4oZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisKKyAgICAgICAgaWYgKHNj
b3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH0sIFJlamVjdEFzSGFuZGxlZDo6WWVzKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFdURjo6c3dpdGNoT24oZnJhbWUs
IFsmXShSZWZQdHI8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+JiB2YWx1ZSkgeworICAgICAgICAgICAg
bV9lbnF1ZXVlRnVuY3Rpb24odmFsdWUtPnRha2VSVENGcmFtZSgpKTsKKyAgICAgICAgfSwgWyZd
KFJlZlB0cjxSVENFbmNvZGVkVmlkZW9GcmFtZT4mIHZhbHVlKSB7CisgICAgICAgICAgICBtX2Vu
cXVldWVGdW5jdGlvbih2YWx1ZS0+dGFrZVJUQ0ZyYW1lKCkpOworICAgICAgICB9KTsKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAgfQorCisgICAgLy8gRklYTUU6IERlY2lkZSB3aGV0
aGVyIGNsZWFyaW5nIGFsbCBwZW5kaW5nIGZyYW1lcy4KKyAgICB2b2lkIGNsb3NlKCkgZmluYWwg
eyB9CisgICAgdm9pZCBlcnJvcihTdHJpbmcmJikgZmluYWwgeyB9CisKKyAgICBGdW5jdGlvbjx2
b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWU+JiYpPiBtX2VucXVldWVGdW5j
dGlvbjsKK307CisKK0V4Y2VwdGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCkKK3sKKyAgICBhdXRvIHBvcnQgPSBkb3duY2FzdDxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkudGFrZVBlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQoKTsKKyAg
ICBpZiAoIXBvcnQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJObyBw
ZW5kaW5nIGNvbnN0cnVjdGlvbiBkYXRhIGZvciB0aGlzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
Il9zIH07CisKKyAgICBhdXRvIHRyYW5zZm9ybWVyID0gYWRvcHRSZWYoKm5ldyBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lcihjb250ZXh0LCBwb3J0LnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICB0cmFu
c2Zvcm1lci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRyYW5zZm9ybWVyOworfQor
CitSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcjo6UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPE1lc3NhZ2VQb3J0PiYmIHBvcnQpCisgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgLCBtX3BvcnQoV1RGTW92ZShwb3J0KSkK
K3sKK30KKworUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI6On5SVENSdHBTY3JpcHRUcmFuc2Zvcm1l
cigpCit7Cit9CisKK1JlZlB0cjxSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZT4gUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXI6OnN0YXJ0U3RyZWFtcyhSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJiBiYWNr
ZW5kKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spOworICAgIGlm
ICghY2FsbGJhY2spCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byYgY29udGV4
dCA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihjb250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKKworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2Jq
ZWN0LnZtKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBhdXRvIHJl
YWRhYmxlU3RyZWFtU291cmNlID0gUlRDUnRwUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSgp
OworICAgIGF1dG8gcmVhZGFibGVTdHJlYW0gPSBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgcmVhZGFibGVTdHJlYW1Tb3VyY2UuY29weVJlZigpKTsKKyAgICBpZiAocmVhZGFi
bGVTdHJlYW0uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byB3cml0YWJsZVN0cmVhbSA9IFdyaXRhYmxlU3RyZWFtOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBSVENSdHBXcml0YWJsZVN0cmVhbVNpbms6OmNyZWF0ZShbYmFja2VuZCA9IG1ha2VSZWYoYmFj
a2VuZCldKGF1dG8mJiBmcmFtZSkgeworICAgICAgICBiYWNrZW5kLT5wcm9jZXNzVHJhbnNmb3Jt
ZWRGcmFtZShXVEZNb3ZlKGZyYW1lLmdldCgpKSk7CisgICAgfSkpOworICAgIGlmICh3cml0YWJs
ZVN0cmVhbS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyBDYWxsIHN0YXJ0IGNhbGxiYWNrLgorICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKKyAgICBhcmdzLmFwcGVuZCh0b0pTTmV3bHlDcmVhdGVkKCZnbG9iYWxPYmplY3QsICZnbG9i
YWxPYmplY3QsIHJlYWRhYmxlU3RyZWFtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSk7CisgICAgYXJn
cy5hcHBlbmQodG9KU05ld2x5Q3JlYXRlZCgmZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCB3
cml0YWJsZVN0cmVhbS5yZWxlYXNlUmV0dXJuVmFsdWUoKSkpOworCisgICAgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOworICAgIGNhbGxiYWNrLT5pbnZva2VDYWxs
YmFjayhKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RhcnQiKSwgcmV0
dXJuZWRFeGNlcHRpb24pOworICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgaW4gY2FzZSBvZiBl
eGNlcHRpb24/IFdlIHNob3VsZCBhdCBsZWFzdCBsb2cgZXJyb3JzLgorCisgICAgcmV0dXJuIHJl
YWRhYmxlU3RyZWFtU291cmNlOworfQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpz
dGFydChSZWY8UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJiBiYWNrZW5kKQoreworICAgIGF1dG8g
cmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBzdGFydFN0cmVhbXMoYmFja2VuZC5nZXQoKSk7CisgICAg
aWYgKCFyZWFkYWJsZVN0cmVhbVNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9iYWNr
ZW5kID0gV1RGTW92ZShiYWNrZW5kKTsKKworICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV9iYWNr
ZW5kLT5zZXRUcmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjayhbcmVhZGFibGVTdHJlYW1Tb3VyY2Ug
PSBtYWtlV2Vha1B0cihyZWFkYWJsZVN0cmVhbVNvdXJjZS5nZXQoKSksIGlzQXVkaW8gPSBtX2Jh
Y2tlbmQtPm1lZGlhVHlwZSgpID09IFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ6Ok1lZGlhVHlwZTo6
QXVkaW8sIHRocmVhZCA9IG1ha2VSZWYoY29udGV4dC50aHJlYWQoKSldKGF1dG8mJiBmcmFtZSkg
bXV0YWJsZSB7CisgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbcmVh
ZGFibGVTdHJlYW1Tb3VyY2UsIGlzQXVkaW8sIGZyYW1lID0gV1RGTW92ZShmcmFtZSldKGF1dG8m
IGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFyZWFkYWJsZVN0cmVhbVNvdXJj
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8mIGdsb2JhbE9i
amVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNvbnRleHQuZ2xvYmFsT2Jq
ZWN0KCkpOworICAgICAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKKyAgICAg
ICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworCisgICAgICAgICAgICBhdXRvIHZh
bHVlID0gaXNBdWRpbyA/IHRvSlMoJmdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgUlRDRW5j
b2RlZEF1ZGlvRnJhbWU6OmNyZWF0ZShXVEZNb3ZlKGZyYW1lKSkpIDogdG9KUygmZ2xvYmFsT2Jq
ZWN0LCAmZ2xvYmFsT2JqZWN0LCBSVENFbmNvZGVkVmlkZW9GcmFtZTo6Y3JlYXRlKFdURk1vdmUo
ZnJhbWUpKSk7CisgICAgICAgICAgICByZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZSh2YWx1
ZSk7CisgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgIH0pOwor
fQorCit2b2lkIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOjpjbGVhcigpCit7CisgICAgaWYgKG1f
YmFja2VuZCkKKyAgICAgICAgbV9iYWNrZW5kLT5jbGVhclRyYW5zZm9ybWFibGVGcmFtZUNhbGxi
YWNrKCk7CisgICAgbV9iYWNrZW5kID0gbnVsbHB0cjsKKyAgICBzdG9wUGVuZGluZ0FjdGl2aXR5
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
UlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTY3JpcHRUcmFuc2Zvcm1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNWQ0MGNmYzBlZDg1MDA3
NDhjMGJlZmQ3MjQyN2RhYmNmYzYwZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBKU0NhbGxiYWNrRGF0YVN0cm9uZzsKK2NsYXNzIE1lc3NhZ2VQb3J0OworY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ7Citj
bGFzcyBSVENSdHBSZWFkYWJsZVN0cmVhbVNvdXJjZTsKKworY2xhc3MgUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXIKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVy
PgorICAgICwgcHVibGljIEFjdGl2ZURPTU9iamVjdAorICAgICwgcHVibGljIENhbk1ha2VXZWFr
UHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CisgICAgflJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCk7CisKKyAgICB2b2lk
IHNldENhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4mJiBjYWxs
YmFjaykgeyBtX2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKyAgICBNZXNzYWdlUG9y
dCYgcG9ydCgpIHsgcmV0dXJuIG1fcG9ydC5nZXQoKTsgfQorCisgICAgdm9pZCBzdGFydChSZWY8
UlRDUnRwVHJhbnNmb3JtQmFja2VuZD4mJik7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9p
ZCBzdGFydFBlbmRpbmdBY3Rpdml0eSgpIHsgbV9wZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGlu
Z0FjdGl2aXR5KCp0aGlzKTsgfQorCitwcml2YXRlOgorICAgIFJUQ1J0cFNjcmlwdFRyYW5zZm9y
bWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8TWVzc2FnZVBvcnQ+JiYpOworCisgICAg
UmVmUHRyPFJUQ1J0cFJlYWRhYmxlU3RyZWFtU291cmNlPiBzdGFydFN0cmVhbXMoUlRDUnRwVHJh
bnNmb3JtQmFja2VuZCYpOworCisgICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSVENSdHBTY3JpcHRUcmFu
c2Zvcm1lciI7IH0KKyAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IHN0b3BQZW5kaW5nQWN0aXZpdHko
KTsgfQorICAgIHZvaWQgc3RvcFBlbmRpbmdBY3Rpdml0eSgpIHsgYXV0byBwZW5kaW5nQWN0aXZp
dHkgPSBXVEZNb3ZlKG1fcGVuZGluZ0FjdGl2aXR5KTsgfQorCisgICAgUmVmPE1lc3NhZ2VQb3J0
PiBtX3BvcnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPiBtX2Nh
bGxiYWNrOworICAgIFJlZlB0cjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiBtX2JhY2tlbmQ7Cisg
ICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4+IG1fcGVu
ZGluZ0FjdGl2aXR5OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zvcm1lci5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODc3NDU1N2QwNWRjNWEwNTAzZTllMTcyYmI5MmQ2NDdlNDkwMDk2ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBGSVhNRTogQWRkIEVu
YWJsZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCitbCisgICAgQWN0aXZlRE9N
T2JqZWN0LAorICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCisgICAgRXhwb3NlZD1EZWRpY2F0ZWRX
b3JrZXIsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAorXSBpbnRlcmZhY2UgUlRDUnRw
U2NyaXB0VHJhbnNmb3JtZXIgeworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBjb25zdHJ1Y3RvcigvKiBvcHRpb25hbCBvYmplY3QgdHJhbnNmb3JtT3B0aW9ucyAqLyk7CisK
KyAgICAvLyBGSVhNRTogYWRkIGNvbnRyb2xsZXIgYXR0cmlidXRlLgorICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBNZXNzYWdlUG9ydCBwb3J0OworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3JpcHRUcmFuc2Zv
cm1lckNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTlkOWJkYjhiZTEzNzNiZjdmZmMwZjdmMWFk
OTBiODJkZjQ4NDQzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIkFjdGl2ZURP
TUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ2FsbGJhY2tSZXN1bHQuaCIKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJUQ1J0cFNjcmlw
dFRyYW5zZm9ybWVyOworCitjbGFzcyBSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9y
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvcj4s
IHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CitwdWJsaWM6CisgICAgdXNpbmcgQWN0aXZlRE9N
Q2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrOworCisgICAgdmlydHVhbCBDYWxsYmFja1Jlc3Vs
dDxSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+PiBoYW5kbGVFdmVudCgpID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTY3Jp
cHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTcyMWU1M2Y2YjY1NWI0ZjhhYTliMTcyZTIzYjI3MDMxNGM1N2JmNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJh
bnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9V0VCX1JU
QywKK10gY2FsbGJhY2sgUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3RvciA9IFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbAppbmRleCAzMzhh
N2UzMDdkNjI0YzEzNGY3ODBjY2I3MTBjOGM2ODI0ZGMwZGRhLi5iOTEyZDAxYTZkOTk1NWEzMDRi
YmIxYTVjZmQ4YTlmNTAwYzkwMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlcitUcmFuc2Zvcm0uaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwKQEAgLTIz
LDYgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCit0
eXBlZGVmIChSVENSdHBTRnJhbWVUcmFuc2Zvcm0gb3IgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKSBS
VENSdHBUcmFuc2Zvcm07CisKIFsKICAgICBDb25kaXRpb25hbD1XRUJfUlRDLAogICAgIEVuYWJs
ZWRCeVNldHRpbmc9V2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKaW5kZXggYzdhYzNjNDli
ZDlkNzk2YjI0ODc1ZjlkOTIzMDZkM2U5M2E3NTQzYi4uM2UwMzJiNjU5M2E3NjQzYjQ2MmQzZGZh
OGUyMmZiMmIwOTQ0NmUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcApAQCAtMTkzLDggKzE5MywxMCBAQCBPcHRpb25hbDxS
VENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbj4gUlRDUnRwU2VuZGVyOjpjdXJyZW50VHJhbnNjZWl2
ZXJEaXJlY3Rpb24oKQogICAgIHJldHVybiBzZW5kZXJUcmFuc2NlaXZlci0+Y3VycmVudERpcmVj
dGlvbigpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5kZXI6OnNldFRyYW5zZm9y
bShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSkKK0V4Y2VwdGlvbk9yPHZvaWQ+
IFJUQ1J0cFNlbmRlcjo6c2V0VHJhbnNmb3JtKE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4mJiB0
cmFuc2Zvcm0pCiB7CisgICAgaWYgKHRyYW5zZm9ybSAmJiBtX3RyYW5zZm9ybSAmJiAqdHJhbnNm
b3JtID09ICptX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAodHJhbnNm
b3JtICYmIHRyYW5zZm9ybS0+aXNBdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJ0cmFuc2Zvcm0gaXMgYWxyZWFkeSBpbiB1c2UiX3MgfTsK
IApAQCAtMjA3LDYgKzIwOSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBSVENSdHBTZW5kZXI6OnNl
dFRyYW5zZm9ybShSZWZQdHI8UlRDUnRwVHJhbnNmb3JtPiYmIHRyYW5zZm9ybQogICAgIHJldHVy
biB7IH07CiB9CiAKK09wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IFJUQ1J0cFNl
bmRlcjo6dHJhbnNmb3JtKCkKK3sKKyAgICBpZiAoIW1fdHJhbnNmb3JtKQorICAgICAgICByZXR1
cm4geyB9OworICAgIHJldHVybiBtX3RyYW5zZm9ybS0+aW50ZXJuYWxUcmFuc2Zvcm0oKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApp
bmRleCA3MGFkOTU5MjcwYmIyYTI5YWUzNDkzYjFkMWViODA5NGE5YjUwNWI1Li5lZGU0ZDlkYTBi
ODUwYThjYTlmODlhYTI0YzFjYWE1Nzg3YjlmNDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKQEAgLTgyLDggKzgyLDggQEAgcHVi
bGljOgogICAgIFJUQ0RUTUZTZW5kZXIqIGR0bWYoKTsKICAgICBPcHRpb25hbDxSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbj4gY3VycmVudFRyYW5zY2VpdmVyRGlyZWN0aW9uKCkgY29uc3Q7CiAK
LSAgICBSVENSdHBUcmFuc2Zvcm0qIHRyYW5zZm9ybSgpIHsgcmV0dXJuIG1fdHJhbnNmb3JtLmdl
dCgpOyB9Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJlZlB0cjxSVENSdHBU
cmFuc2Zvcm0+JiYpOworICAgIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybTo6SW50ZXJuYWw+IHRy
YW5zZm9ybSgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9ybShPcHRpb25hbDxS
VENSdHBUcmFuc2Zvcm0+JiYpOwogCiBwcml2YXRlOgogICAgIFJUQ1J0cFNlbmRlcihSVENQZWVy
Q29ubmVjdGlvbiYsIFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0
cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOwpAQCAtOTUs
NyArOTUsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNr
ZW5kPiBtX2JhY2tlbmQ7CiAgICAgV2Vha1B0cjxSVENQZWVyQ29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOwogICAgIFJlZlB0cjxSVENEVE1GU2VuZGVyPiBtX2R0bWZTZW5kZXI7Ci0gICAgUmVmUHRy
PFJUQ1J0cFRyYW5zZm9ybT4gbV90cmFuc2Zvcm07CisgICAgT3B0aW9uYWw8UlRDUnRwVHJhbnNm
b3JtPiBtX3RyYW5zZm9ybTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyV2l0aFRy
YW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXJXaXRoVHJhbnNmb3JtLmgKaW5kZXggODcxNDM4ZWU2NjViMjZmODBlMTUxYzE5NWVjODc2Y2Nl
YWFhOTMwZS4uNDZkMzdhNzczNmYxNmRjMDc5NWI5NWQ0MDU4ZWFhOTQzZmRhNmI3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJXaXRo
VHJhbnNmb3JtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXJXaXRoVHJhbnNmb3JtLmgKQEAgLTM2LDggKzM2LDggQEAgY2xhc3MgUlRDUnRwVHJh
bnNmb3JtOwogCiBjbGFzcyBSVENSdHBTZW5kZXJXaXRoVHJhbnNmb3JtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUlRDUnRwVHJhbnNmb3JtKiB0cmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIp
IHsgcmV0dXJuIHNlbmRlci50cmFuc2Zvcm0oKTsgfQotICAgIHN0YXRpYyBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRUcmFuc2Zvcm0oUlRDUnRwU2VuZGVyJiBzZW5kZXIsIFJlZlB0cjxSVENSdHBUcmFu
c2Zvcm0+JiYgdHJhbnNmb3JtKSB7IHJldHVybiBzZW5kZXIuc2V0VHJhbnNmb3JtKFdURk1vdmUo
dHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgT3B0aW9uYWw8UlRDUnRwVHJhbnNmb3JtOjpJbnRl
cm5hbD4gdHJhbnNmb3JtKFJUQ1J0cFNlbmRlciYgc2VuZGVyKSB7IHJldHVybiBzZW5kZXIudHJh
bnNmb3JtKCk7IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VHJhbnNmb3JtKFJU
Q1J0cFNlbmRlciYgc2VuZGVyLCBPcHRpb25hbDxSVENSdHBUcmFuc2Zvcm06OkludGVybmFsPiYm
IHRyYW5zZm9ybSkgeyByZXR1cm4gc2VuZGVyLnNldFRyYW5zZm9ybShSVENSdHBUcmFuc2Zvcm06
OmZyb20oV1RGTW92ZSh0cmFuc2Zvcm0pKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNmb3JtLmNwcAppbmRleCAzYmY1ZTVlNWMyZGY3MGY5NjMwM2RmOTQ5NGZjNWIzMTVjNjkz
YjFkLi4zYzdmY2Y0YmQyNDI3NTZlMzFjNWRiMzhhYzk2YmI4YTFmNzQwODIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0u
Y3BwCkBAIC0zMywxMCArMzMsMzAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitPcHRpb25h
bDxSVENSdHBUcmFuc2Zvcm0+IFJUQ1J0cFRyYW5zZm9ybTo6ZnJvbShPcHRpb25hbDxJbnRlcm5h
bD4mJiBpbnRlcm5hbCkKK3sKKyAgICBpZiAoIWludGVybmFsKQorICAgICAgICByZXR1cm4geyB9
OworICAgIHJldHVybiBSVENSdHBUcmFuc2Zvcm0oV1RGTW92ZSgqaW50ZXJuYWwpKTsKK30KKwor
UlRDUnRwVHJhbnNmb3JtOjpSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwmJiB0cmFuc2Zvcm0pCisg
ICAgOiBtX3RyYW5zZm9ybShXVEZNb3ZlKHRyYW5zZm9ybSkpCit7Cit9CisKIFJUQ1J0cFRyYW5z
Zm9ybTo6flJUQ1J0cFRyYW5zZm9ybSgpCiB7Ci0gICAgaWYgKG1fYmFja2VuZCkKLSAgICAgICAg
d2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICBjbGVhckJhY2tlbmQoKTsKK30KKwor
Ym9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQoKSBjb25zdAoreworICAgIHJldHVybiBz
d2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zv
cm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgcmV0dXJuIHNmcmFtZVRyYW5zZm9ybS0+
aXNBdHRhY2hlZCgpOworICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNm
b3JtPiYgc2NyaXB0VHJhbnNmb3JtKSB7CisgICAgICAgIHJldHVybiBzY3JpcHRUcmFuc2Zvcm0t
PmlzQXR0YWNoZWQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFj
aFRvUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyKQpAQCAtNDQsOCArNjQsMTMgQEAg
dm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImIHJl
Y2VpdmVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAgICBpZiAoYXV0byogYmFja2Vu
ZCA9IHJlY2VpdmVyLmJhY2tlbmQoKSkKICAgICAgICAgbV9iYWNrZW5kID0gYmFja2VuZC0+Y3Jl
YXRlUlRDUnRwVHJhbnNmb3JtQmFja2VuZCgpOwotICAgIGlmIChtX2JhY2tlbmQpCi0gICAgICAg
IGluaXRpYWxpemVCYWNrZW5kRm9yUmVjZWl2ZXIoKm1fYmFja2VuZCk7CisgICAgaWYgKG1fYmFj
a2VuZCkgeworICAgICAgICBzd2l0Y2hPbihtX3RyYW5zZm9ybSwgWyZdKFJlZlB0cjxSVENSdHBT
RnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFuc2Zvcm0pIHsKKyAgICAgICAgICAgIHNmcmFtZVRy
YW5zZm9ybS0+aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNlaXZlcigqbV9iYWNrZW5kKTsKKyAgICAg
ICAgfSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm0p
IHsKKyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlhbGl6ZUJhY2tlbmRGb3JSZWNl
aXZlcigqbV9iYWNrZW5kKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFJUQ1J0cFRy
YW5zZm9ybTo6YXR0YWNoVG9TZW5kZXIoUlRDUnRwU2VuZGVyJiBzZW5kZXIpCkBAIC01MywyNiAr
NzgsNTQgQEAgdm9pZCBSVENSdHBUcmFuc2Zvcm06OmF0dGFjaFRvU2VuZGVyKFJUQ1J0cFNlbmRl
ciYgc2VuZGVyKQogICAgIEFTU0VSVCghaXNBdHRhY2hlZCgpKTsKICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IHNlbmRlci5iYWNrZW5kKCkpCiAgICAgICAgIG1fYmFja2VuZCA9IGJhY2tlbmQtPmNy
ZWF0ZVJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQoKTsKLSAgICBpZiAobV9iYWNrZW5kKQotICAgICAg
ICBpbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9iYWNrZW5kKTsKKyAgICBpZiAobV9iYWNr
ZW5kKSB7CisgICAgICAgIHN3aXRjaE9uKG1fdHJhbnNmb3JtLCBbJl0oUmVmUHRyPFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybT4mIHNmcmFtZVRyYW5zZm9ybSkgeworICAgICAgICAgICAgc2ZyYW1lVHJh
bnNmb3JtLT5pbml0aWFsaXplQmFja2VuZEZvclNlbmRlcigqbV9iYWNrZW5kKTsKKyAgICAgICAg
fSwgWyZdKFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm0+JiBzY3JpcHRUcmFuc2Zvcm0pIHsK
KyAgICAgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIo
Km1fYmFja2VuZCk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAotdm9pZCBSVENSdHBUcmFuc2Zv
cm06OmRldGFjaEZyb21SZWNlaXZlcihSVENSdHBSZWNlaXZlciYpCit2b2lkIFJUQ1J0cFRyYW5z
Zm9ybTo6Y2xlYXJCYWNrZW5kKCkKIHsKICAgICBpZiAoIW1fYmFja2VuZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgd2lsbENsZWFyQmFja2VuZCgqbV9iYWNrZW5kKTsKKyAgICBzd2l0Y2hPbiht
X3RyYW5zZm9ybSwgWyZdKFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+JiBzZnJhbWVUcmFu
c2Zvcm0pIHsKKyAgICAgICAgc2ZyYW1lVHJhbnNmb3JtLT53aWxsQ2xlYXJCYWNrZW5kKCptX2Jh
Y2tlbmQpOworICAgIH0sIFsmXShSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPiYgc2NyaXB0
VHJhbnNmb3JtKSB7CisgICAgICAgIHNjcmlwdFRyYW5zZm9ybS0+d2lsbENsZWFyQmFja2VuZCgq
bV9iYWNrZW5kKTsKKyAgICB9KTsKKwogICAgIG1fYmFja2VuZCA9IG51bGxwdHI7CiB9CiAKK3Zv
aWQgUlRDUnRwVHJhbnNmb3JtOjpkZXRhY2hGcm9tUmVjZWl2ZXIoUlRDUnRwUmVjZWl2ZXImKQor
eworICAgIGNsZWFyQmFja2VuZCgpOworfQorCiB2b2lkIFJUQ1J0cFRyYW5zZm9ybTo6ZGV0YWNo
RnJvbVNlbmRlcihSVENSdHBTZW5kZXImKQogewotICAgIGlmICghbV9iYWNrZW5kKQotICAgICAg
ICByZXR1cm47CisgICAgY2xlYXJCYWNrZW5kKCk7Cit9CiAKLSAgICB3aWxsQ2xlYXJCYWNrZW5k
KCptX2JhY2tlbmQpOwotICAgIG1fYmFja2VuZCA9IG51bGxwdHI7Citib29sIG9wZXJhdG9yPT0o
Y29uc3QgUlRDUnRwVHJhbnNmb3JtJiBhLCBjb25zdCBSVENSdHBUcmFuc2Zvcm0mIGIpCit7Cisg
ICAgcmV0dXJuIHN3aXRjaE9uKGEubV90cmFuc2Zvcm0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRw
U0ZyYW1lVHJhbnNmb3JtPiYgc2ZyYW1lVHJhbnNmb3JtQSkgeworICAgICAgICByZXR1cm4gc3dp
dGNoT24oYi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zv
cm0+JiBzZnJhbWVUcmFuc2Zvcm1CKSB7CisgICAgICAgICAgICByZXR1cm4gc2ZyYW1lVHJhbnNm
b3JtQS5nZXQoKSA9PSBzZnJhbWVUcmFuc2Zvcm1CLmdldCgpOworICAgICAgICB9LCBbJl0oY29u
c3QgUmVmUHRyPFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mKSB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0pOworICAgIH0sIFsmXShjb25zdCBSZWZQdHI8UlRDUnRwU2NyaXB0
VHJhbnNmb3JtPiYgc2NyaXB0VHJhbnNmb3JtQSkgeworICAgICAgICByZXR1cm4gc3dpdGNoT24o
Yi5tX3RyYW5zZm9ybSwgWyZdKGNvbnN0IFJlZlB0cjxSVENSdHBTRnJhbWVUcmFuc2Zvcm0+Jikg
eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LCBbJl0oY29uc3QgUmVmUHRy
PFJUQ1J0cFNjcmlwdFRyYW5zZm9ybT4mIHNjcmlwdFRyYW5zZm9ybUIpIHsKKyAgICAgICAgICAg
IHJldHVybiBzY3JpcHRUcmFuc2Zvcm1BLmdldCgpID09IHNjcmlwdFRyYW5zZm9ybUIuZ2V0KCk7
CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9y
bS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0u
aAppbmRleCBkYjdmZDg0MjdmNTgwYzg2OGFhZWM0M2UwNjdhMzhmOTA3M2NmZTBiLi42MWI5MWVh
Y2U4NjhjZDdhYzc0Y2M0NGMzOTJiOTVmYzBhMjliZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmgKQEAgLTI3LDE4ICsy
NywyMiBAQAogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAKKyNpbmNsdWRlICJSVENSdHBTRnJhbWVU
cmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
ICJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
UlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CiAKLWNsYXNzIFdFQkNPUkVfRVhQ
T1JUIFJUQ1J0cFRyYW5zZm9ybSA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1J0cFRyYW5zZm9ybT4g
eworY2xhc3MgUlRDUnRwVHJhbnNmb3JtICB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UlRDUnRw
VHJhbnNmb3JtKCk7CisgICAgdXNpbmcgSW50ZXJuYWwgPSBWYXJpYW50PFJlZlB0cjxSVENSdHBT
RnJhbWVUcmFuc2Zvcm0+LCBSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtPj47CisgICAgc3Rh
dGljIE9wdGlvbmFsPFJUQ1J0cFRyYW5zZm9ybT4gZnJvbShPcHRpb25hbDxJbnRlcm5hbD4mJik7
CisKKyAgICBleHBsaWNpdCBSVENSdHBUcmFuc2Zvcm0oSW50ZXJuYWwmJik7CisgICAgflJUQ1J0
cFRyYW5zZm9ybSgpOwogCiAgICAgYm9vbCBpc0F0dGFjaGVkKCkgY29uc3Q7CiAgICAgdm9pZCBh
dHRhY2hUb1JlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJik7CkBAIC00NiwzMCArNTAsMjEgQEAgcHVi
bGljOgogICAgIHZvaWQgZGV0YWNoRnJvbVJlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJik7CiAgICAg
dm9pZCBkZXRhY2hGcm9tU2VuZGVyKFJUQ1J0cFNlbmRlciYpOwogCisgICAgSW50ZXJuYWwgaW50
ZXJuYWxUcmFuc2Zvcm0oKSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorCisgICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSVENSdHBUcmFuc2Zvcm0mLCBjb25zdCBSVENSdHBUcmFuc2Zv
cm0mKTsKKwogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUJhY2tlbmRGb3JT
ZW5kZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJik7CisgICAg
dm9pZCBjbGVhckJhY2tlbmQoKTsKIAotcHJvdGVjdGVkOgogICAgIFJlZlB0cjxSVENSdHBUcmFu
c2Zvcm1CYWNrZW5kPiBtX2JhY2tlbmQ7CisgICAgSW50ZXJuYWwgbV90cmFuc2Zvcm07CiB9Owog
Ci1pbmxpbmUgYm9vbCBSVENSdHBUcmFuc2Zvcm06OmlzQXR0YWNoZWQoKSBjb25zdAotewotICAg
IHJldHVybiAhIW1fYmFja2VuZDsKLX0KLQotaW5saW5lIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjpp
bml0aWFsaXplQmFja2VuZEZvclNlbmRlcihSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikKLXsKLX0K
LQotaW5saW5lIHZvaWQgUlRDUnRwVHJhbnNmb3JtOjppbml0aWFsaXplQmFja2VuZEZvclJlY2Vp
dmVyKFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQmKQotewotfQotCi1pbmxpbmUgdm9pZCBSVENSdHBU
cmFuc2Zvcm06OndpbGxDbGVhckJhY2tlbmQoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYpCitib29s
IG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiwgY29uc3QgUlRDUnRwVHJhbnNmb3Jt
Jik7CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYgYSwgY29u
c3QgUlRDUnRwVHJhbnNmb3JtJiBiKQogeworICAgIHJldHVybiAhKGEgPT0gYik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggY2U2ZTMyODEyYmM0M2ZmMWUzZjVmYWIxMDUxNjY2ZTRlYzQzMzVhNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwz
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
WwotICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCi0gICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJSVENJ
bnNlcnRhYmxlU3RyZWFtcywKLSAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKLSAgICBF
eHBvc2VkPVdpbmRvdwotXSBpbnRlcmZhY2UgUlRDUnRwVHJhbnNmb3JtIHsKLSAgICAvLyBGSVhN
RTogQWRkIHJlYWRhYmxlL3dyaXRhYmxlIGdldHRlcnMKLSAgICAvLyByZWFkb25seSBhdHRyaWJ1
dGUgUmVhZGFibGVTdHJlYW0gcmVhZGFibGU7Ci0gICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIFdy
aXRhYmxlU3RyZWFtIHdyaXRhYmxlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgKaW5kZXggNDEy
MTQ5MjIwMWFlNjQ2MzViODgyOTM1NDU1ZTViOGYzNzNiYmNhOS4uYWE5MjJkMzI3OTM3NDRhYTlj
ZTg5OTMyNjEyZjg2ZGNiNTRjNTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmgKQEAgLTM2LDcg
KzM2LDcgQEAgY2xhc3MgUlRDUnRwVHJhbnNmb3JtQmFja2VuZCA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxSVENSdHBUcmFuc2Zvcm1CYWNrZW4KIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5S
VENSdHBUcmFuc2Zvcm1CYWNrZW5kKCkgPSBkZWZhdWx0OwogCi0gICAgdXNpbmcgQ2FsbGJhY2sg
PSBGdW5jdGlvbjx2b2lkKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSYmKT47CisgICAgdXNpbmcg
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFVuaXF1ZVJlZjxSVENSdHBUcmFuc2Zvcm1hYmxlRnJh
bWU+JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtYWJsZUZyYW1lQ2FsbGJhY2so
Q2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRyYW5zZm9ybWFibGVGcmFt
ZUNhbGxiYWNrKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVHJhbnNmb3JtZWRGcmFt
ZShSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUmJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmgKaW5kZXggNTcyNjM2MDA3ZWZjMjc2YzM5NThjMmU3MmMzOWEyMTNjOWFmOTk5MC4uZGI1YjFm
MTFjZjEzOGJiMDM2OGJmMTc3NDhhMzEzYzgyODNiMzE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybWFibGVG
cmFtZS5oCkBAIC0yOSw2ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJU
Q1J0cFRyYW5zZm9ybWFibGVGcmFtZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lKCkgPSBkZWZhdWx0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQu
Y3BwCmluZGV4IDAxNjJkMzBkMWZkZDMwMmEzYjVjM2VkYjM4ZGNjYjllZWUxMzMxMDQuLjFlNTU5
NTU1NDE4ZjgxN2RjYjhkNDBmZjlkM2RmN2I1MmJjNzNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9y
bUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwCkBAIC0yOCwxMiArMjgsMTIg
QEAKICNpZiBFTkFCTEUoV0VCX1JUQykgJiYgVVNFKExJQldFQlJUQykKIAogI2luY2x1ZGUgIkxp
YldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIExpYldlYlJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQ6OnNldElucHV0Q2FsbGJhY2soQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbnB1dENh
bGxiYWNrTG9jayk7CiAgICAgbV9pbnB1dENhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CiB9
CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZDo6VHJh
bnNmb3JtKHN0ZDo6dW5pcXVlX3B0cjx3ZWJydGM6OlRyYW5zZm9ybWFiCiAgICAgewogICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW5wdXRDYWxsYmFja0xvY2spOwogICAgICAgICBp
ZiAobV9pbnB1dENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBtX2lucHV0Q2FsbGJhY2soTGliV2Vi
UlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lKFdURk1vdmUocnRjRnJhbWUpKSk7CisgICAgICAgICAg
ICBtX2lucHV0Q2FsbGJhY2sobWFrZVVuaXF1ZVJlZjxMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxl
RnJhbWU+KFdURk1vdmUocnRjRnJhbWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW1TaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW1TaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWFmYTU1ZDk0NWM1ZTczOTYwN2UwNTBiNDdhMWVl
OWFlYjUyZDYzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU1ZhbHVlOworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdyaXRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFdyaXRh
YmxlU3RyZWFtU2luaz4geworcHVibGljOgorICAgIHZpcnR1YWwgfldyaXRhYmxlU3RyZWFtU2lu
aygpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCB3cml0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSlNDOjpKU1ZhbHVlLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoU3Ry
aW5nJiYpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNpbmsuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtU2luay5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjNmMDYwMDk0YjhlY2VkN2M5Njg5ZTE1ZGJjYjQ3ZGYzYTY4M2YwMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbVNp
bmsuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKK1sKKyAgICBMZWdhY3lOb0lu
dGVyZmFjZU9iamVjdCwKKyAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbgorXSBpbnRlcmZhY2UgV3Jp
dGFibGVTdHJlYW1TaW5rIHsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
UHJvbWlzZTx1bmRlZmluZWQ+IHdyaXRlKGFueSB2YWx1ZSk7CisgICAgdW5kZWZpbmVkIGNsb3Nl
KCk7CisgICAgdW5kZWZpbmVkIGVycm9yKERPTVN0cmluZyBtZXNzYWdlKTsKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IGJiYTlkZDgxMThkNzkyZmEzNDIyYjE3YTA0MTYxNWM2NmQ3OWZmMWMuLjMzNmUy
NTc5NmYwOWE2ZDUxOGJmNDM2MDNiZmUzZTc2M2UxZDA0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0x
NTgsNiArMTU4LDkgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcAogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxFdmVudC5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRW5jb2RlZEF1ZGlvRnJhbWUu
Y3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0VuY29kZWRGcmFtZS5jcHAKK01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0ljZUNhbmRpZGF0ZS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlVHJhbnNwb3J0LmNw
cAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTE2Niw2ICsx
NjksOCBAQCBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSWNlRXJyb3JFdmVu
dC5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwCiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXIuY3BwCitNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNj
cmlwdFRyYW5zZm9ybS5jcHAKK01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIuY3BwCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBUcmFuc2NlaXZlci5jcHAKQEAgLTYyNCw2ICs2MjksNyBAQCBiaW5kaW5ncy9qcy9XZWJDb3Jl
SklUT3BlcmF0aW9ucy5jcHAKIGJpbmRpbmdzL2pzL1dlYkNvcmVKU0NsaWVudERhdGEuY3BwCiBi
aW5kaW5ncy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCiBiaW5kaW5ncy9qcy9X
aW5kb3dQcm94eS5jcHAKK2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmNwcAogYnJpZGdlL0lk
ZW50aWZpZXJSZXAuY3BwCiBicmlkZ2UvTlBfanNvYmplY3QuY3BwCiBicmlkZ2UvYy9DUnVudGlt
ZU9iamVjdC5jcHAKQEAgLTMyOTksNiArMzMwNSw4IEBAIEpTUlRDRGF0YUNoYW5uZWwuY3BwCiBK
U1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCiBKU1JUQ0RlZ3JhZGF0aW9uUHJlZmVyZW5jZS5jcHAK
IEpTUlRDRHR4U3RhdHVzLmNwcAorSlNSVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAKK0pTUlRDRW5j
b2RlZFZpZGVvRnJhbWUuY3BwCiBKU1JUQ0ljZUNhbmRpZGF0ZS5jcHAKIEpTUlRDSWNlQ2FuZGlk
YXRlSW5pdC5jcHAKIEpTUlRDSWNlQ2FuZGlkYXRlVHlwZS5jcHAKQEAgLTMzMjgsMTIgKzMzMzYs
MTQgQEAgSlNSVENSdHBQYXJhbWV0ZXJzLmNwcAogSlNSVENSdHBSZWNlaXZlci5jcHAKIEpTUlRD
UnRwUnR4UGFyYW1ldGVycy5jcHAKIEpTUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAorSlNSVENS
dHBTY3JpcHRUcmFuc2Zvcm0uY3BwCitKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcAorSlNS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yLmNwcAogSlNSVENSdHBTZW5kUGFyYW1l
dGVycy5jcHAKIEpTUlRDUnRwU2VuZGVyLmNwcAogSlNSVENSdHBTeW5jaHJvbml6YXRpb25Tb3Vy
Y2UuY3BwCiBKU1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAogSlNSVENSdHBUcmFuc2NlaXZlckRpcmVj
dGlvbi5jcHAKLUpTUlRDUnRwVHJhbnNmb3JtLmNwcAogSlNSVENTZHBUeXBlLmNwcAogSlNSVENT
ZXNzaW9uRGVzY3JpcHRpb24uY3BwCiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQuY3BwCkBA
IC0zNzI2LDYgKzM3MzYsNyBAQCBKU1dvcmtsZXRPcHRpb25zLmNwcAogSlNXcml0YWJsZVN0cmVh
bS5jcHAKIEpTV3JpdGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAKIEpTV3JpdGFibGVT
dHJlYW1EZWZhdWx0V3JpdGVyLmNwcAorSlNXcml0YWJsZVN0cmVhbVNpbmsuY3BwCiBKU1hNTERv
Y3VtZW50LmNwcAogSlNYTUxIdHRwUmVxdWVzdC5jcHAKIEpTWE1MSHR0cFJlcXVlc3RFdmVudFRh
cmdldC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA3OTZjMTFjZTc1YmQwZjcyZjc4NzBlYTY3YjM5NzEwOThiYTJmOTc5Li41
NTgzNzI1ZTRkY2Y3NDkxNWM3Y2ZmMzNiNTYxNWVmYTA0MmQ3MmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA1LDkgKzEx
MDUsNiBAQAogCQk0MTgxQzVDQjI1NTU4MkU0MDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtYWJs
ZUZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTgxQzVDQTI1NTU4MkUzMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmggKi87
IH07CiAJCTQxODFDNUNEMjU1NTgzNjkwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1h
YmxlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODFDNUNDMjU1NTgzNjgwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJh
bWUuaCAqLzsgfTsKIAkJNDE4MUM1RDEyNTU1ODk1NjAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRy
YW5zZm9ybUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxODFDNUNGMjU1NTg5NTYwMEFFQjBGRiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1C
YWNrZW5kLmggKi87IH07Ci0JCTQxODFDNUQ2MjU1NUMxQjkwMEFFQjBGRiAvKiBNb2NrUlRDUnRw
VHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTgxQzVENTI1NTVDMUI5MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovOyB9
OwotCQk0MTgxQzVENzI1NTVDNDlBMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTgxQzVEMzI1
NTVDMUIxMDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87IH07Ci0JCTQxODFD
NjM5MjU1QUU5MEYwMEFFQjBGRiAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOTIxQzFGODU1NTAw
NjFEQkU0IC8qIEpTTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgKi87IH07CiAJCTQxODFDNjQ4MjU1
QjRDMjgwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2NDIyNTVCNEMyNjAwQUVCMEZG
IC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE4MUM2NEEyNTVCNEMyODAwQUVCMEZGIC8qIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDE4MUM2NDQyNTVCNEMyNzAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9y
bS5oICovOyB9OwogCQk0MTgyMDU0NzFFNTNFOThDMDBENjIyMDcgLyogUlRDQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MjA1NDUx
RTUzQzhDRDAwRDYyMjA3IC8qIFJUQ0NvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzU5MSw3ICs3NTg4LDYgQEAKIAkJNDEzQzJD
MzMxQkMyOUE3QjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTNDOEIyNDI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwUmVjZWl2ZXIrVHJh
bnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSAiUlRDUnRwUmVjZWl2ZXIrVHJhbnNm
b3JtLmlkbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0M4QjI2MjU1MkVFQTkw
MEU2NTA1NSAvKiBSVENSdHBTZW5kZXIrVHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSAiUlRDUnRwU2VuZGVyK1RyYW5zZm9ybS5pZGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0MTNDOEIyOTI1NTJGMDEzMDBFNjUwNTUgLyogUlRDUnRwVHJhbnNmb3JtLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTNDOEIyRTI1NTJGMjdCMDBFNjUwNTUgLyogUlRDUnRwU2VuZGVy
V2l0aFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBT
ZW5kZXJXaXRoVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxM0M4
QjJGMjU1MkYyN0IwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxM0M4QjMwMjU1MkYyN0MwMEU2NTA1NSAvKiBSVENSdHBSZWNlaXZlcldpdGhU
cmFuc2Zvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwUmVjZWl2
ZXJXaXRoVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjAwLDYg
Kzc1OTYsMjcgQEAKIAkJNDEzRTAwNzgxREIwRTRERTAwMjM0MUQyIC8qIE1lbW9yeVJlbGVhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UmVsZWFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTNFMDA3QjFEQjBFNzA3MDAyMzQxRDIgLyogTWVt
b3J5UmVsZWFzZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTWVtb3J5UmVsZWFzZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTNGQzRDRDFGRDFERDhDMDA1NDFDNEIgLyogU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50
UXVlcnlPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUVGMjU2
MkRGMEMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm1Qcm92aWRlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtUHJvdmlkZXIuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGMDI1NjJERjU1MDAzNjM0MTcgLyogUlRD
UnRwU2NyaXB0VHJhbnNmb3JtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGMTI1
NjJERjU2MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjIyNTYyRTMyQjAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRy
YW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENSdHBTY3JpcHRU
cmFuc2Zvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjMyNTYyRTMy
QzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjQyNTYyRTMyQzAwMzYzNDE3IC8qIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTQxODlGNTI1NjJFMzJEMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE0MTg5RjYyNTYyRTY3QTAwMzYzNDE3
IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGNzI1NjJFNjdBMDAzNjM0MTcgLyog
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUY5MjU2NDE2NTAwMDM2MzQxNyAvKiBSVENFbmNvZGVk
QXVkaW9GcmFtZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUlRDRW5jb2RlZEF1ZGlvRnJh
bWUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGQTI1NjQxNjUxMDAz
NjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDE0MTg5RkIyNTY0MTc1NzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxNDE4OUZEMjU2NDE3NjYwMDM2MzQxNyAvKiBSVENF
bmNvZGVkVmlkZW9GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSVENF
bmNvZGVkVmlkZW9GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlG
RTI1NjQxOEUwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDRW5jb2RlZEF1ZGlvRnJhbWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxODlGRjI1NjQxOEU3MDAzNjM0MTcgLyogUlRD
RW5jb2RlZFZpZGVvRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUlRDRW5jb2RlZFZpZGVvRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTQxOEEwMDI1NjQzNTk3MDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW1TaW5rLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbVNpbmsuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0MTQxOEEwMjI1NjQzNTk4MDAzNjM0MTcgLyogV3JpdGFibGVTdHJl
YW1TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFt
U2luay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwMzI1NjQzRTEyMDAz
NjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MTQxOEEwNDI1NjQzRTEzMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE0MThBMDUyNTY2NjBBRjAwMzYzNDE3IC8qIFJUQ0VuY29kZWRGcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENFbmNvZGVkRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTQxOEEwNjI1NjY2MEIwMDAz
NjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJUQ0VuY29kZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTQ0
NjBBMDI0MTI5OTQxMDA4MTRCRTcgLyogTWVkaWFTZXNzaW9uSWRlbnRpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlc3Npb25JZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNDU5OEJFMjNDOEFBQjgwMDJCOUNDOCAvKiBTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxNDU5OEMwMjNDOEFENzgwMDJCOUNDOCAvKiBMb2NhbFNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbFNhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzcxNSw5ICs3NzMy
LDYgQEAKIAkJNDE4MUM1Q0MyNTU1ODM2ODAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9y
bWFibGVGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENS
dHBUcmFuc2Zvcm1hYmxlRnJhbWUuaDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFu
c2Zvcm1hYmxlRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4MUM1Q0Uy
NTU1ODk1NTAwQUVCMEZGIC8qIExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFj
a2VuZC5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNUNGMjU1NTg5NTYwMEFFQjBG
RiAvKiBMaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQuaDsgcGF0aCA9IGxpYndl
YnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1CYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxODFDNUQzMjU1NUMxQjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3Jt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tSVENSdHBUcmFu
c2Zvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTgxQzVENTI1NTVDMUI5
MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQxODFDNjM2MjU1QUUyNjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBNb2NrUlRDUnRwVHJhbnNmb3JtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE4MUM2M0YyNTVCNEMyNTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVy
Q29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0Zy
YW1lVHJhbnNmb3JtZXJDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
ODFDNjQxMjU1QjRDMjYwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODFDNjQyMjU1QjRDMjYwMEFF
QjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTcwNzMsNiArMTcwODcsMTQgQEAKIAkJCQkwNzIyMUI2RTE3Q0VDMzI3MDA4
NDhFNTEgLyogUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgKi8sCiAJCQkJNDFGQ0I3NUUyMTQ4
NjZGRjAwMzhBREM2IC8qIFJUQ0R0eFN0YXR1cy5oICovLAogCQkJCTQxRkNCNzU3MjE0ODY1RDEw
MDM4QURDNiAvKiBSVENEdHhTdGF0dXMuaWRsICovLAorCQkJCTQxNDE4OUZFMjU2NDE4RTAwMDM2
MzQxNyAvKiBSVENFbmNvZGVkQXVkaW9GcmFtZS5jcHAgKi8sCisJCQkJNDE0MTg5RkIyNTY0MTc1
NzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmggKi8sCisJCQkJNDE0MTg5RjkyNTY0
MTY1MDAwMzYzNDE3IC8qIFJUQ0VuY29kZWRBdWRpb0ZyYW1lLmlkbCAqLywKKwkJCQk0MTQxOEEw
NTI1NjY2MEFGMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmNwcCAqLywKKwkJCQk0MTQxOEEw
NjI1NjY2MEIwMDAzNjM0MTcgLyogUlRDRW5jb2RlZEZyYW1lLmggKi8sCisJCQkJNDE0MTg5RkYy
NTY0MThFNzAwMzYzNDE3IC8qIFJUQ0VuY29kZWRWaWRlb0ZyYW1lLmNwcCAqLywKKwkJCQk0MTQx
ODlGRDI1NjQxNzY2MDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaCAqLywKKwkJCQk0
MTQxODlGQTI1NjQxNjUxMDAzNjM0MTcgLyogUlRDRW5jb2RlZFZpZGVvRnJhbWUuaWRsICovLAog
CQkJCTA3MjIxQjcxMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRhdGUuY3BwICovLAog
CQkJCTA3MjIxQjcyMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRhdGUuaCAqLywKIAkJ
CQkwNzIyMUI3MzE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRlLmlkbCAqLywKQEAg
LTE3MTM2LDYgKzE3MTU4LDE1IEBACiAJCQkJNDEzQzhCMzAyNTUyRjI3QzAwRTY1MDU1IC8qIFJU
Q1J0cFJlY2VpdmVyV2l0aFRyYW5zZm9ybS5oICovLAogCQkJCTQxRkNCNzYwMjE0ODY3MDAwMDM4
QURDNiAvKiBSVENSdHBSdHhQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNDFGQ0I3NTgyMTQ4NjVEMjAw
MzhBREM2IC8qIFJUQ1J0cFJ0eFBhcmFtZXRlcnMuaWRsICovLAorCQkJCTQxNDE4OUY0MjU2MkUz
MkMwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uY3BwICovLAorCQkJCTQxNDE4OUYy
MjU2MkUzMkIwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zvcm0uaCAqLywKKwkJCQk0MTQx
ODlGMDI1NjJERjU1MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtLmlkbCAqLywKKwkJ
CQk0MTQxODlGMzI1NjJFMzJDMDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuY3Bw
ICovLAorCQkJCTQxNDE4OUY1MjU2MkUzMkQwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lci5oICovLAorCQkJCTQxNDE4OUYxMjU2MkRGNTYwMDM2MzQxNyAvKiBSVENSdHBTY3JpcHRU
cmFuc2Zvcm1lci5pZGwgKi8sCisJCQkJNDE0MTg5RjYyNTYyRTY3QTAwMzYzNDE3IC8qIFJUQ1J0
cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3IuaCAqLywKKwkJCQk0MTQxODlGNzI1NjJFNjdB
MDAzNjM0MTcgLyogUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXJDb25zdHJ1Y3Rvci5pZGwgKi8sCisJ
CQkJNDE0MTg5RUYyNTYyREYwQzAwMzYzNDE3IC8qIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3Zp
ZGVyLmlkbCAqLywKIAkJCQk0MTNDOEIyNjI1NTJFRUE5MDBFNjUwNTUgLyogUlRDUnRwU2VuZGVy
K1RyYW5zZm9ybS5pZGwgKi8sCiAJCQkJNUUyQzQzNTkxQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0
cFNlbmRlci5jcHAgKi8sCiAJCQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNl
bmRlci5oICovLApAQCAtMTcxNTksNyArMTcxOTAsNiBAQAogCQkJCTMxNkRDQjE3MUU3OEMzMzAw
MDFCNUY4NyAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5pZGwgKi8sCiAJCQkJNDE4MUM1
QzYyNTU1NzM1MTAwQUVCMEZGIC8qIFJUQ1J0cFRyYW5zZm9ybS5jcHAgKi8sCiAJCQkJNDEzQzhC
MkYyNTUyRjI3QjAwRTY1MDU1IC8qIFJUQ1J0cFRyYW5zZm9ybS5oICovLAotCQkJCTQxM0M4QjI5
MjU1MkYwMTMwMEU2NTA1NSAvKiBSVENSdHBUcmFuc2Zvcm0uaWRsICovLAogCQkJCTQxODFDNUNB
MjU1NTgyRTMwMEFFQjBGRiAvKiBSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCAqLywKIAkJCQk0
MTgxQzVDODI1NTU3M0RGMDBBRUIwRkYgLyogUlRDUnRwVHJhbnNmb3JtQmFja2VuZC5oICovLAog
CQkJCTQxMEY1NjU4MjRGQ0Y4NTQwMEEyRTUwQyAvKiBSVENTZHBUeXBlLmlkbCAqLywKQEAgLTE5
MzE2LDkgKzE5MzQ2LDYgQEAKIAkJCQlBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1Bh
eW1lbnRNZXRob2QuaCAqLywKIAkJCQlBMTQwNjE4OTFFMkVDQTBBMDAzMkIzNEUgLyogTW9ja1By
ZXZpZXdMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCUExNDA2MThBMUUyRUNBMEEwMDMyQjM0RSAv
KiBNb2NrUHJldmlld0xvYWRlckNsaWVudC5oICovLAotCQkJCTQxODFDNUQzMjU1NUMxQjEwMEFF
QjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmNwcCAqLywKLQkJCQk0MTgxQzVENTI1NTVDMUI5
MDBBRUIwRkYgLyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5oICovLAotCQkJCTQxODFDNjM2MjU1QUUy
NjEwMEFFQjBGRiAvKiBNb2NrUlRDUnRwVHJhbnNmb3JtLmlkbCAqLywKIAkJCQk1NzE1NjEwODIz
NEMxQjMxMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oICov
LAogCQkJCTU3MTU2MTBEMjM0Qzc0ODEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmlkbCAqLywKIAkJCQk0MTdGMEQ4MDFGRkVFMTRGMDA4RUYzMDMgLyogU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAgKi8sCkBAIC0xOTQzNSw2ICsxOTQ2Miw4IEBACiAJCQkJ
NDE3NjY3MzAyNERDMDhFQTAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlci5p
ZGwgKi8sCiAJCQkJNDE3NjY3MzIyNERDMDhFQjAwOEJGRTI4IC8qIFdyaXRhYmxlU3RyZWFtRGVm
YXVsdFdyaXRlci5qcyAqLywKIAkJCQk5OTA4QjBGMTFCQ0FDRjkxMDBFRDBGNzUgLyogV3JpdGFi
bGVTdHJlYW1JbnRlcm5hbHMuanMgKi8sCisJCQkJNDE0MThBMDIyNTY0MzU5ODAwMzYzNDE3IC8q
IFdyaXRhYmxlU3RyZWFtU2luay5oICovLAorCQkJCTQxNDE4QTAwMjU2NDM1OTcwMDM2MzQxNyAv
KiBXcml0YWJsZVN0cmVhbVNpbmsuaWRsICovLAogCQkJKTsKIAkJCXBhdGggPSBzdHJlYW1zOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI2ODkyLDYgKzI2OTIxLDggQEAKIAkJCQkw
RjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgg
Ki8sCiAJCQkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNwcCAqLywK
IAkJCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLywKKwkJCQk0
MTQxOEEwMzI1NjQzRTEyMDAzNjM0MTcgLyogV3JpdGFibGVTdHJlYW0uY3BwICovLAorCQkJCTQx
NDE4QTA0MjU2NDNFMTMwMDM2MzQxNyAvKiBXcml0YWJsZVN0cmVhbS5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzU2Nyw3ICszMzU5
OCw2IEBACiAJCQkJNEEwRkZBOUUxQUFGNUU3RTAwNjI4MDNCIC8qIE1vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0VFNzZFQzFCRTk2REIwMDBGODkx
MzMgLyogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3RUU3
NkVGMUJFQTYxOTgwMEY4OTEzMyAvKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNDE4MUM1RDYyNTU1QzFCOTAwQUVCMEZGIC8qIE1vY2tSVENSdHBUcmFu
c2Zvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGMkIwMTkxODIw
NTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTU2MTBD
MjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM1Njg4LDcgKzM1NzE4LDYgQEAKIAkJCQlBMTA0RUM1RDIyMEEz
RTRCMDBDQkY2N0EgLyogSlNNb2NrUGF5bWVudENvbnRhY3RGaWVsZHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0NkQzMUExRjk5QkNGODAwRDI5MTk2IC8qIEpTTW9ja1BheW1lbnRDb29yZGlu
YXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0QgLyog
SlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxODFDNjM5MjU1QUU5
MEYwMEFFQjBGRiAvKiBKU01vY2tSVENSdHBUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTcxNTYxMTQyMzRDN0ZENjAwOEZDN0FCIC8qIEpTTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MjdEQTcxRDEzNzM1REZBMDA3QzU3
RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVC
RjUxMjFDMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTM1NzA0LDcgKzM1NzMzLDYgQEAKIAkJCQkyRDk3RjA0NzE5REQ0MTNDMDAxRUU5
QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExQUZF
REU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUExNDA2MThCMUUyRUNBMEEwMDMyQjM0RSAvKiBNb2NrUHJldmlld0xvYWRl
ckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0MTgxQzVENzI1NTVDNDlBMDBBRUIwRkYg
LyogTW9ja1JUQ1J0cFRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQTVGM0I4RjE2
Q0M0QjM5MDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDE3RjBEODIxRkZFRTk3OTAwOEVGMzAzIC8qIFNlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFENDFDNjcyMjU2ODc0RjAwNjk3OTQy
IC8qIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlci5jcHAKaW5kZXggMWUxNjhiN2RkYWJmNDBlODkxZjZkZDU3YmMwMzMwMGE5ZjBl
YzgzZS4uMDg5YjJiMDNkNjVkN2ZkNGMzN2Y1NWJjZDFhMzRjZTEzZDQ5YjhiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5jcHAKQEAgLTg5LDYgKzg5LDIyIEBAIHZvaWQgUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlcjo6ZXJyb3IoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiAg
ICAgaW52b2tlUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckZ1bmN0aW9uKGdsb2JhbE9i
amVjdCgpLCBwcml2YXRlTmFtZSwgYXJndW1lbnRzKTsKIH0KIAorYm9vbCBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyOjplbnF1ZXVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CisgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisKKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKCZqc0NvbnRyb2xsZXIoKSk7CisgICAg
YXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7CisKKyAgICBhdXRvKiBjbGllbnREYXRhID0gc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkuY2xpZW50RGF0
YSk7CisgICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGluRnVuY3Rpb25z
KCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXJFbnF1ZXVlUHJpdmF0ZU5hbWUoKTsKKworICAgIHJldHVybiBpbnZva2VSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24oZ2xvYmFsT2JqZWN0KCksIHByaXZh
dGVOYW1lLCBhcmd1bWVudHMpOworfQorCiBib29sIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXI6OmVucXVldWUoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogewogICAg
IGlmICghYnVmZmVyKSB7CkBAIC0xMDksMTQgKzEyNSw3IEBAIGJvb2wgUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlcjo6ZW5xdWV1ZShSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFyZ3VtZW50czsKLSAgICBhcmd1bWVudHMuYXBwZW5kKCZqc0NvbnRyb2xsZXIo
KSk7Ci0gICAgYXJndW1lbnRzLmFwcGVuZCh2YWx1ZSk7Ci0KLSAgICBhdXRvKiBjbGllbnREYXRh
ID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCku
Y2xpZW50RGF0YSk7Ci0gICAgYXV0byYgcHJpdmF0ZU5hbWUgPSBjbGllbnREYXRhLT5idWlsdGlu
RnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucygpLnJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXJFbnF1ZXVlUHJpdmF0ZU5hbWUoKTsKLQotICAgIHJldHVybiBp
bnZva2VSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyRnVuY3Rpb24oZ2xvYmFsT2JqZWN0
KCksIHByaXZhdGVOYW1lLCBhcmd1bWVudHMpOworICAgIHJldHVybiBlbnF1ZXVlKHZhbHVlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oCmluZGV4
IDZkMTIzNDM0MjQ1YzRhZjc2MDhiMGQ4YzBmZjE5YmVhMzk5MTY5ZGQuLjg4NGMwYTlhYzc3M2M5
MzUzYTM0ZDBkNzZkODAyODMwYmNiYTExYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIoSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9sbGVy
KSA6IG1fanNDb250cm9sbGVyKGNvbnRyb2xsZXIpIHsgfQogCiAgICAgYm9vbCBlbnF1ZXVlKFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYmKTsKKyAgICBib29sIGVucXVldWUoSlNDOjpKU1ZhbHVl
KTsKICAgICB2b2lkIGVycm9yKGNvbnN0IEV4Y2VwdGlvbiYpOwogICAgIHZvaWQgY2xvc2UoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5O
YW1lcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5o
CmluZGV4IGExN2Q4ZGQ3YjA0MjExZTM5NGM3OWU3ZmE1YjZmZGJmYjJjNDA2MGMuLjE1YmZhMDc2
M2M1NWM1NGFkYzAyY2E4YWU5YmI5NDQ0MmMzMmNkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb25JY2VFcnJvckV2
ZW50KSBcCiAgICAgbWFjcm8oUlRDUnRwUmVjZWl2ZXIpIFwKICAgICBtYWNybyhSVENSdHBTRnJh
bWVUcmFuc2Zvcm0pIFwKKyAgICBtYWNybyhSVENSdHBTY3JpcHRUcmFuc2Zvcm0pIFwKICAgICBt
YWNybyhSVENSdHBTZW5kZXIpIFwKICAgICBtYWNybyhSVENSdHBUcmFuc2NlaXZlcikgXAogICAg
IG1hY3JvKFJUQ1J0cFRyYW5zZm9ybSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV3JpdGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V3JpdGFibGVTdHJlYW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyOTY5YmRlMTVmMzk3NjhhZDM0NmU3N2U4
Y2NkNTM2MGI0ZjQ3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xcml0YWJsZVN0cmVhbS5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXcml0YWJsZVN0cmVhbS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgor
I2luY2x1ZGUgIkpTV3JpdGFibGVTdHJlYW1TaW5rLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK0V4Y2VwdGlvbk9yPFJlZjxXcml0YWJsZVN0cmVhbT4+IFdyaXRhYmxlU3RyZWFtOjpjcmVh
dGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmUHRyPFdyaXRh
YmxlU3RyZWFtU2luaz4mJiBzaW5rKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmpl
Y3Qudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOworCisgICAgYXV0byogY29uc3RydWN0
b3IgPSBKU0M6OmFzT2JqZWN0KGdsb2JhbE9iamVjdC5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuV3JpdGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpKSk7
CisKKyAgICBhdXRvIGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1
Y3Rvcik7CisgICAgQVNTRVJUKGNvbnN0cnVjdERhdGEudHlwZSAhPSBDYWxsRGF0YTo6VHlwZTo6
Tm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5k
KHNpbmsgPyB0b0pTTmV3bHlDcmVhdGVkKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2Jq
ZWN0LCBzaW5rLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc1VuZGVmaW5lZCgpKTsKKyAgICBB
U1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBK
U0M6OmNvbnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVj
dERhdGEsIGFyZ3MpOworICAgIEFTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFvYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhj
ZXB0aW9uRXJyb3IgfSk7CisKKyAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgKmpzQ2Fz
dDxKU1dyaXRhYmxlU3RyZWFtKj4ob2JqZWN0KSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dyaXRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1ZGI4MDU4OWMwMmYwNmYx
ZDg0NDQ1MTliMzYzYzBkYWVlZmI0YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xcml0YWJsZVN0cmVhbS5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVk
ZSAiSlNET01Db252ZXJ0LmgiCisjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisjaW5j
bHVkZSAiSlNXcml0YWJsZVN0cmVhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFdyaXRhYmxlU3RyZWFtU2luazsKKworY2xhc3MgV3JpdGFibGVTdHJlYW0gZmluYWwgOiBwdWJs
aWMgRE9NR3VhcmRlZDxKU1dyaXRhYmxlU3RyZWFtPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxXcml0YWJsZVN0cmVhbT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTV3JpdGFibGVTdHJlYW0mIGpzU3RyZWFtKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdyaXRh
YmxlU3RyZWFtKGdsb2JhbE9iamVjdCwganNTdHJlYW0pKTsgfQorCisgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxXcml0YWJsZVN0cmVhbT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
UmVmUHRyPFdyaXRhYmxlU3RyZWFtU2luaz4mJik7CisgICAgSlNXcml0YWJsZVN0cmVhbSogd3Jp
dGFibGVTdHJlYW0oKSBjb25zdCB7IHJldHVybiBndWFyZGVkKCk7IH0KKworcHJpdmF0ZToKKyAg
ICBXcml0YWJsZVN0cmVhbShKU0RPTUdsb2JhbE9iamVjdCYsIEpTV3JpdGFibGVTdHJlYW0mKTsK
K307CisKK3N0cnVjdCBKU1dyaXRhYmxlU3RyZWFtV3JhcHBlckNvbnZlcnRlciB7CisgICAgc3Rh
dGljIFJlZlB0cjxXcml0YWJsZVN0cmVhbT4gdG9XcmFwcGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IEpTQzo6Vk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAg
IGF1dG8qIGdsb2JhbE9iamVjdCA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHZtLCAmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0
KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byogV3JpdGFibGVT
dHJlYW0gPSBKU0M6OmpzRHluYW1pY0Nhc3Q8SlNXcml0YWJsZVN0cmVhbSo+KHZtLCB2YWx1ZSk7
CisgICAgICAgIGlmICghV3JpdGFibGVTdHJlYW0pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICByZXR1cm4gV3JpdGFibGVTdHJlYW06OmNyZWF0ZSgqZ2xvYmFsT2JqZWN0
LCAqV3JpdGFibGVTdHJlYW0pOworICAgIH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9N
V3JhcHBlckNvbnZlcnRlclRyYWl0czxXcml0YWJsZVN0cmVhbT4geworICAgIHVzaW5nIFdyYXBw
ZXJDbGFzcyA9IEpTV3JpdGFibGVTdHJlYW1XcmFwcGVyQ29udmVydGVyOworICAgIHVzaW5nIFRv
V3JhcHBlZFJldHVyblR5cGUgPSBSZWZQdHI8V3JpdGFibGVTdHJlYW0+OworICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBuZWVkc1N0YXRlID0gdHJ1ZTsKK307CisKK2lubGluZSBXcml0YWJsZVN0
cmVhbTo6V3JpdGFibGVTdHJlYW0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNX
cml0YWJsZVN0cmVhbSYgV3JpdGFibGVTdHJlYW0pCisgICAgOiBET01HdWFyZGVkPEpTV3JpdGFi
bGVTdHJlYW0+KGdsb2JhbE9iamVjdCwgV3JpdGFibGVTdHJlYW0pCit7Cit9CisKK2lubGluZSBK
U0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIFdyaXRhYmxlU3RyZWFtKiBzdHJlYW0pCit7CisgICAgcmV0dXJuIHN0cmVhbSA/IHN0cmVh
bS0+d3JpdGFibGVTdHJlYW0oKSA6IEpTQzo6anNVbmRlZmluZWQoKTsKK30KKworaW5saW5lIEpT
Qzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxXcml0YWJsZVN0cmVhbT4mJiBzdHJlYW0pCit7CisgICAgcmV0dXJu
IHN0cmVhbS0+d3JpdGFibGVTdHJlYW0oKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KaW5kZXggYTlkYTk0NTI4ZjFiNDBmY2JkZTg5ZmEwYzU0ZTJlZGYx
OTg5ODhiMi4uMWM5MjlkODBkZTVlYmZlZTA0MGZiNTgwNzhjZGM3MWU3NmMxOGU1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0zOCw2ICszOCw3IEBAIFJl
bW90ZVBsYXliYWNrIGNvbmRpdGlvbmFsPVdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVAogUlRDRGF0
YUNoYW5uZWwgY29uZGl0aW9uYWw9V0VCX1JUQwogUlRDRFRNRlNlbmRlciBjb25kaXRpb25hbD1X
RUJfUlRDCiBSVENQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1XRUJfUlRDCitSVENSdHBTY3Jp
cHRUcmFuc2Zvcm0gY29uZGl0aW9uYWw9V0VCX1JUQwogU2VydmljZVdvcmtlciBjb25kaXRpb25h
bD1TRVJWSUNFX1dPUktFUgogU2VydmljZVdvcmtlckNvbnRhaW5lciBjb25kaXRpb25hbD1TRVJW
SUNFX1dPUktFUgogU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGNvbmRpdGlvbmFsPVNFUlZJQ0Vf
V09SS0VSCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTNkZmU3OTUxNmMz
NTlhZDg0MDc3YmY1ZmU4NTJmYjkxZjdlM2VkMC4uYWQ2MzdmZjQ0Zjk2ZjBiNTRlMWYxNmQ4M2Qx
OThkNmEzNDMwYTUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTM4
LDcgKzEzOCw2IEBACiAjaW5jbHVkZSAiTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTW9ja1BhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiTW9ja1BhZ2VPdmVybGF5Q2xp
ZW50LmgiCi0jaW5jbHVkZSAiTW9ja1JUQ1J0cFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIk5hdmln
YXRvckJlYWNvbi5oIgogI2luY2x1ZGUgIk5hdmlnYXRvck1lZGlhRGV2aWNlcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCIKQEAgLTE1NzcsMTEgKzE1NzYsNiBAQCB2b2lk
IEludGVybmFsczo6c2V0V2ViUlRDVlA5VlRCU3VwcG9ydChib29sIHZhbHVlKQogI2VuZGlmCiB9
CiAKLVJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBJbnRlcm5hbHM6OmNyZWF0ZU1vY2tSVENSdHBU
cmFuc2Zvcm0oKQotewotICAgIHJldHVybiBNb2NrUlRDUnRwVHJhbnNmb3JtOjpjcmVhdGUoKTsK
LX0KLQogdWludDY0X3QgSW50ZXJuYWxzOjpzZnJhbWVDb3VudGVyKGNvbnN0IFJUQ1J0cFNGcmFt
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogewogICAgIHJldHVybiB0cmFuc2Zvcm0uY291bnRlckZv
clRlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI4MzdjM2IzYTA0
ZDM2MDMwNTdkZTI3NTQwMjNhZTcyN2ZlZWE5MmYuLjE4YzQ1ZWJjMzYzMGU5NGE5N2IwMmQ2MzQ0
N2RhZjRkMGVkMjdkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSEVWQ1V0aWxpdGll
cy5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCi0jaW5jbHVkZSAiTW9ja1JUQ1J0cFRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIk9yaWVudGF0aW9uTm90aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlQ29u
c29sZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2UuaCIKQEAgLTYxMCw3
ICs2MDksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJSVENIMjY1U3VwcG9ydChib29sKTsK
ICAgICB2b2lkIHNldFdlYlJUQ1ZQOVN1cHBvcnQoYm9vbCk7CiAgICAgdm9pZCBzZXRXZWJSVENW
UDlWVEJTdXBwb3J0KGJvb2wpOwotICAgIFJlZjxNb2NrUlRDUnRwVHJhbnNmb3JtPiBjcmVhdGVN
b2NrUlRDUnRwVHJhbnNmb3JtKCk7CiAgICAgdWludDY0X3Qgc2ZyYW1lQ291bnRlcihjb25zdCBS
VENSdHBTRnJhbWVUcmFuc2Zvcm0mKTsKICAgICB2b2lkIHNldEVuYWJsZVdlYlJUQ0VuY3J5cHRp
b24oYm9vbCk7CiAgICAgdm9pZCBzZXRVc2VEVExTMTAoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKaW5kZXggYWUzYTYxZmNhMDNkYzRiNjY3NDczZDAwNWY4MjhlMTVlMGI5
OTgzYS4uNTQzYTk1NDBlYzRjNjM0YWNiYTNlZWM2NjE4ZjAzNjYxNjYxY2M0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtODAyLDcgKzgwMiw2IEBAIGVudW0gVHJlZVR5
cGUgewogICAgIFtDb25kaXRpb25hbD1XRUJfUlRDXSB1bmRlZmluZWQgc2V0V2ViUlRDSDI2NVN1
cHBvcnQoYm9vbGVhbiBhbGxvd2VkKTsKICAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gdW5kZWZp
bmVkIHNldFdlYlJUQ1ZQOVN1cHBvcnQoYm9vbGVhbiBhbGxvd2VkKTsKICAgICBbQ29uZGl0aW9u
YWw9V0VCX1JUQ10gdW5kZWZpbmVkIHNldFdlYlJUQ1ZQOVZUQlN1cHBvcnQoYm9vbGVhbiBhbGxv
d2VkKTsKLSAgICBbQ29uZGl0aW9uYWw9V0VCX1JUQ10gTW9ja1JUQ1J0cFRyYW5zZm9ybSBjcmVh
dGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7CiAgICAgW0NvbmRpdGlvbmFsPVdFQl9SVENdIHVuc2ln
bmVkIGxvbmcgbG9uZyBzZnJhbWVDb3VudGVyKFJUQ1J0cFNGcmFtZVRyYW5zZm9ybSB0cmFuc2Zv
cm0pOwogCiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTV0gdW5kZWZpbmVkIHNldE1vY2tB
dWRpb1RyYWNrQ2hhbm5lbE51bWJlcihNZWRpYVN0cmVhbVRyYWNrIHRyYWNrLCB1bnNpZ25lZCBz
aG9ydCBjb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENS
dHBUcmFuc2Zvcm0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNm
b3JtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQzYTE2YTg0ZThlZDlhMjdk
ODBjMTRhYjhmY2Y4NWIzMDJmYmQ2NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tSVENSdHBUcmFuc2Zvcm0u
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
TW9ja1JUQ1J0cFRyYW5zZm9ybS5oIgotCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0KLSNpbmNsdWRl
ICJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTW9ja1JUQ1J0cFRyYW5zZm9ybWVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vY2tSVENSdHBUcmFuc2Zvcm1lciwgV1RGOjpEZXN0
cnVjdGlvblRocmVhZDo6TWFpbj4gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TW9ja1JUQ1J0
cFRyYW5zZm9ybWVyPiBjcmVhdGUoUmVmPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+JiYgYmFja2Vu
ZCkKLSAgICB7Ci0gICAgICAgIGF1dG8gdHJhbnNmb3JtZXIgPSBhZG9wdFJlZigqbmV3IE1vY2tS
VENSdHBUcmFuc2Zvcm1lcihXVEZNb3ZlKGJhY2tlbmQpKSk7Ci0gICAgICAgIHRyYW5zZm9ybWVy
LT5tX2JhY2tlbmQtPnNldFRyYW5zZm9ybWFibGVGcmFtZUNhbGxiYWNrKFt0cmFuc2Zvcm1lcl0o
YXV0byYmIGZyYW1lKSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1lci0+dHJhbnNmb3JtKFdURk1v
dmUoZnJhbWUpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB0cmFuc2Zvcm1lcjsKLSAg
ICB9Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fYmFja2VuZC0+Y2xlYXJU
cmFuc2Zvcm1hYmxlRnJhbWVDYWxsYmFjaygpOwotICAgICAgICBtX2JhY2tlbmQgPSBudWxscHRy
OwotICAgIH0KLQotICAgIHZvaWQgdHJhbnNmb3JtKFJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZSYm
IGZyYW1lKQotICAgIHsKLSAgICAgICAgbV9pc1Byb2Nlc3NpbmcgPSB0cnVlOwotCi0gICAgICAg
IGF1dG8gZGF0YSA9IGZyYW1lLmRhdGEoKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRyYW5z
Zm9ybWVkRGF0YTsKLSAgICAgICAgc2l6ZV90IHN0YXJ0ID0gbV9pc0F1ZGlvID8gMCA6IDEwMDsK
LSAgICAgICAgZm9yIChzaXplX3QgY3B0ciA9IDA7IGNwdHIgPCBzdGFydDsgKytjcHRyKQotICAg
ICAgICAgICAgdHJhbnNmb3JtZWREYXRhLmFwcGVuZChkYXRhLmRhdGFbY3B0cl0pOwotICAgICAg
ICBmb3IgKHNpemVfdCBjcHRyID0gc3RhcnQ7IGNwdHIgPCBkYXRhLnNpemU7ICsrY3B0cikKLSAg
ICAgICAgICAgIHRyYW5zZm9ybWVkRGF0YS5hcHBlbmQoMjU2IC0gZGF0YS5kYXRhW2NwdHJdKTsK
LSAgICAgICAgZnJhbWUuc2V0RGF0YSh7IHRyYW5zZm9ybWVkRGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSB9KTsKLQotICAgICAgICBtX2JhY2tlbmQtPnByb2Nlc3NUcmFuc2Zvcm1lZEZyYW1lKFdURk1v
dmUoZnJhbWUpKTsKLSAgICB9Ci0KLSAgICBib29sIGlzUHJvY2Vzc2luZygpIGNvbnN0IHsgcmV0
dXJuIG1faXNQcm9jZXNzaW5nOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgTW9ja1JUQ1J0
cFRyYW5zZm9ybWVyKFJlZjxSVENSdHBUcmFuc2Zvcm1CYWNrZW5kPiYmIGJhY2tlbmQpCi0gICAg
ICAgIDogbV9iYWNrZW5kKFdURk1vdmUoYmFja2VuZCkpCi0gICAgICAgICwgbV9pc1NlbmRlciht
X2JhY2tlbmQtPnNpZGUoKSA9PSBSVENSdHBUcmFuc2Zvcm1CYWNrZW5kOjpTaWRlOjpTZW5kZXIp
Ci0gICAgICAgICwgbV9pc0F1ZGlvKG1fYmFja2VuZC0+bWVkaWFUeXBlKCkgPT0gUlRDUnRwVHJh
bnNmb3JtQmFja2VuZDo6TWVkaWFUeXBlOjpBdWRpbykKLSAgICB7Ci0gICAgfQotCi0gICAgUmVm
UHRyPFJUQ1J0cFRyYW5zZm9ybUJhY2tlbmQ+IG1fYmFja2VuZDsKLSAgICBib29sIG1faXNTZW5k
ZXI7Ci0gICAgYm9vbCBtX2lzQXVkaW87Ci0gICAgYm9vbCBtX2lzUHJvY2Vzc2luZyB7IGZhbHNl
IH07Ci19OwotCi1Nb2NrUlRDUnRwVHJhbnNmb3JtOjpNb2NrUlRDUnRwVHJhbnNmb3JtKCkKLXsK
LX0KLQotTW9ja1JUQ1J0cFRyYW5zZm9ybTo6fk1vY2tSVENSdHBUcmFuc2Zvcm0oKQotewotfQot
Ci1ib29sIE1vY2tSVENSdHBUcmFuc2Zvcm06OmlzUHJvY2Vzc2luZygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fdHJhbnNmb3JtZXIgPyBtX3RyYW5zZm9ybWVyLT5pc1Byb2Nlc3NpbmcoKSA6IGZh
bHNlOwotfQotCi12b2lkIE1vY2tSVENSdHBUcmFuc2Zvcm06OmluaXRpYWxpemVCYWNrZW5kRm9y
UmVjZWl2ZXIoUlRDUnRwVHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkKLXsKLSAgICBtX3RyYW5z
Zm9ybWVyID0gTW9ja1JUQ1J0cFRyYW5zZm9ybWVyOjpjcmVhdGUoYmFja2VuZCk7Ci19Ci0KLXZv
aWQgTW9ja1JUQ1J0cFRyYW5zZm9ybTo6aW5pdGlhbGl6ZUJhY2tlbmRGb3JTZW5kZXIoUlRDUnRw
VHJhbnNmb3JtQmFja2VuZCYgYmFja2VuZCkKLXsKLSAgICBtX3RyYW5zZm9ybWVyID0gTW9ja1JU
Q1J0cFRyYW5zZm9ybWVyOjpjcmVhdGUoYmFja2VuZCk7Ci19Ci0KLXZvaWQgTW9ja1JUQ1J0cFRy
YW5zZm9ybTo6d2lsbENsZWFyQmFja2VuZChSVENSdHBUcmFuc2Zvcm1CYWNrZW5kJikKLXsKLSAg
ICBtX3RyYW5zZm9ybWVyLT5jbGVhcigpOwotICAgIG1fdHJhbnNmb3JtZXIgPSBudWxscHRyOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1JUQ1J0cFRyYW5zZm9ybS5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkOTk0ZGZmNzE3NDMyMzUzNTFmOGYwYTMzOTZmYzU5YTFj
YWQyOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX1JUQykKLQotI2luY2x1ZGUgIlJU
Q1J0cFRyYW5zZm9ybS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1vY2tSVENS
dHBUcmFuc2Zvcm1lcjsKLQotY2xhc3MgTW9ja1JUQ1J0cFRyYW5zZm9ybSBmaW5hbCA6IHB1Ymxp
YyBSVENSdHBUcmFuc2Zvcm0gewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8TW9ja1JUQ1J0cFRy
YW5zZm9ybT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBNb2NrUlRDUnRwVHJhbnNm
b3JtKCkpOyB9Ci0gICAgfk1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLQotICAgIGJvb2wgaXNQcm9j
ZXNzaW5nKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwot
Ci0gICAgdm9pZCBpbml0aWFsaXplQmFja2VuZEZvclJlY2VpdmVyKFJUQ1J0cFRyYW5zZm9ybUJh
Y2tlbmQmKSBmaW5hbDsKLSAgICB2b2lkIGluaXRpYWxpemVCYWNrZW5kRm9yU2VuZGVyKFJUQ1J0
cFRyYW5zZm9ybUJhY2tlbmQmKSBmaW5hbDsKLSAgICB2b2lkIHdpbGxDbGVhckJhY2tlbmQoUlRD
UnRwVHJhbnNmb3JtQmFja2VuZCYpIGZpbmFsOwotCi0gICAgUmVmUHRyPE1vY2tSVENSdHBUcmFu
c2Zvcm1lcj4gbV90cmFuc2Zvcm1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUlRDUnRwVHJhbnNmb3JtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1JUQ1J0cFRyYW5zZm9ybS5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNjMx
ODc2MDU5NGI2OWYyN2EwMWQ2NWUwODg5ODA1ZjMzNzQxYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUlRD
UnRwVHJhbnNmb3JtLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
V0VCX1JUQywKLSAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKLSAgICBKU0dlbmVyYXRlVG9OYXRp
dmVPYmplY3QsCi0gICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCi1dIGludGVyZmFjZSBNb2Nr
UlRDUnRwVHJhbnNmb3JtIDogUlRDUnRwVHJhbnNmb3JtIHsKLSAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBpc1Byb2Nlc3Npbmc7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA3ZGI0OWZlNGIzMzY2
Y2E2NjgzZjRiNTcxZDFiNzViOTljNWE0MTE3Li5kNzYwMTAwOGNlODU3MWJmMTAzOTBmNDNiNGJm
YjNmY2NlYThhZDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMzUsNyArMzUsMTAgQEAKICNpbmNsdWRlICJD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJKU1JU
Q1J0cFNjcmlwdFRyYW5zZm9ybWVyLmgiCisjaW5jbHVkZSAiSlNSVENSdHBTY3JpcHRUcmFuc2Zv
cm1lckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAi
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIuaCIKICNpbmNsdWRlICJSZXF1ZXN0QW5pbWF0aW9uRnJh
bWVDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaWYgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVMpCkBAIC0xMTIsNCArMTE1LDcyIEBAIHZvaWQgRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGU6OmNhbmNlbEFuaW1hdGlvbkZyYW1lKENhbGxiYWNrSWQgY2FsbGJhY2tJZCkK
IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9SVEMpCitFeGNlcHRpb25Pcjx2b2lkPiBEZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihT
dHJpbmcmJiBuYW1lLCBSZWY8SlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yPiYm
IHRyYW5zZm9ybWVyQ29uc3RydWN0b3IpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciwgIk5hbWUgY2Fubm90IGJlIHRoZSBlbXB0eSBzdHJpbmciX3MgfTsK
KworICAgIGlmIChtX3J0Y1J0cFRyYW5zZm9ybWVyQ29uc3RydWN0b3JNYXAuY29udGFpbnMobmFt
ZSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIkEgdHJh
bnNmb3JtZXIgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgbmFtZSJfcyB9OworCisg
ICAgSlNDOjpKU09iamVjdCoganNDb25zdHJ1Y3RvciA9IHRyYW5zZm9ybWVyQ29uc3RydWN0b3It
PmNhbGxiYWNrRGF0YSgpLT5jYWxsYmFjaygpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpz
Q29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGlmICghanNDb25zdHJ1Y3Rvci0+aXNDb25zdHJ1Y3Rvcih2bSkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IsICJDbGFzcyBkZWZpbml0aXRpb24gcGFzc2VkIHRvIHJlZ2lz
dGVyUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKSBpcyBub3QgYSBjb25zdHJ1Y3RvciJfcyB9Owor
CisgICAgYXV0byBwcm90b3R5cGUgPSBqc0NvbnN0cnVjdG9yLT5nZXRQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKKworICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJDbGFzcyBkZWZpbml0
aXRpb24gcGFzc2VkIHRvIHJlZ2lzdGVyUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoKSBoYXMgaW52
YWxpZCBwcm90b3R5cGUiX3MgfTsKKworICAgIG1fcnRjUnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rv
ck1hcC5hZGQobmFtZSwgV1RGTW92ZSh0cmFuc2Zvcm1lckNvbnN0cnVjdG9yKSk7CisKKyAgICB0
aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoW25hbWUg
PSBuYW1lLmlzb2xhdGVkQ29weSgpXShhdXRvJiB3b3JrZXIpIG11dGFibGUgeworICAgICAgICB3
b3JrZXIuYWRkUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoV1RGTW92ZShuYW1lKSk7CisgICAgfSk7
CisKKyAgICByZXR1cm4geyB9OworfQorCitSZWZQdHI8UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI+
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1l
cihTdHJpbmcmJiBuYW1lLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQpCit7CisgICAgYXV0
byBjb25zdHJ1Y3RvciA9IG1fcnRjUnRwVHJhbnNmb3JtZXJDb25zdHJ1Y3Rvck1hcC5nZXQobmFt
ZSk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKKyAgICBpZiAoIWNvbnN0cnVjdG9yKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBjb25zdHJ1
Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gY29uc3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRv
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayB7IGdsb2JhbE9iamVjdCB9
OworCisgICAgbV9wZW5kaW5nUlRDVHJhbnNmb21lck1lc3NhZ2VQb3J0ID0gTWVzc2FnZVBvcnQ6
OmVudGFuZ2xlKCp0aGlzLCBXVEZNb3ZlKHBvcnQpKTsKKworICAgIEpTQzo6TWFya2VkQXJndW1l
bnRCdWZmZXIgYXJnczsKKyAgICBhdXRvKiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdChnbG9iYWxP
YmplY3QsIGpzQ29uc3RydWN0b3IsIGFyZ3MsICJGYWlsZWQgdG8gY29uc3RydWN0IFJUQ1J0cFNj
cmlwdFRyYW5zZm9ybWVyIik7CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9i
amVjdCk7CisKKyAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKKyAgICAgICAgc2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworCisgICAgYXV0byYganNUcmFuc2Zvcm1l
ciA9ICpKU0M6OmpzQ2FzdDxKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKj4ob2JqZWN0KTsKKyAg
ICBhdXRvJiB0cmFuc2Zvcm1lciA9IGpzVHJhbnNmb3JtZXIud3JhcHBlZCgpOworICAgIHRyYW5z
Zm9ybWVyLnNldENhbGxiYWNrKG1ha2VVbmlxdWU8SlNDYWxsYmFja0RhdGFTdHJvbmc+KCZqc1Ry
YW5zZm9ybWVyLCBnbG9iYWxPYmplY3QpKTsKKworICAgIHJldHVybiAmdHJhbnNmb3JtZXI7Cit9
CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggY2FhZDRjZWJh
NThiYTgzMzJkNWU5YTYwM2RlMTI2MjYzZGFlYTc1Ny4uNDk4MTM3N2EwMDNmNGFiOWUwMzBlNDE2
NDQzYmM0ZjQ4YjZlNTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUG9zdE1lc3NhZ2VPcHRp
b25zLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIApAQCAtNDQsNyArNDUsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVyczsKIGNsYXNzIERlZGljYXRlZFdvcmtlclRocmVhZDsKLWNsYXNzIE1lc3NhZ2VQ
b3J0OworY2xhc3MgSlNSVENSdHBTY3JpcHRUcmFuc2Zvcm1lckNvbnN0cnVjdG9yOworY2xhc3Mg
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXI7CiBjbGFzcyBSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFjazsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIApAQCAtNTQsNiArNTYsOCBAQCBj
bGFzcyBXb3JrZXJBbmltYXRpb25Db250cm9sbGVyOwogdXNpbmcgQ2FsbGJhY2tJZCA9IGludDsK
ICNlbmRpZgogCit1c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0ID0gc3RkOjpwYWlyPFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
PjsKKwogY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUgZmluYWwgOiBwdWJsaWMgV29y
a2VyR2xvYmFsU2NvcGUgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUpOwogcHVibGljOgpAQCAtNzEsNiArNzUsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgY2FuY2VsQW5pbWF0aW9uRnJhbWUoQ2FsbGJhY2tJZCk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfUlRDKQorICAgIFJlZlB0cjxSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcj4gY3JlYXRl
UlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoU3RyaW5nJiYsIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlZ2lzdGVyUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIo
U3RyaW5nJiYsIFJlZjxKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3I+JiYpOwor
ICAgIFJlZlB0cjxNZXNzYWdlUG9ydD4gdGFrZVBlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBv
cnQoKSB7IHJldHVybiBXVEZNb3ZlKG1fcGVuZGluZ1JUQ1RyYW5zZm9tZXJNZXNzYWdlUG9ydCk7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHVzaW5nIEJhc2UgPSBXb3JrZXJHbG9iYWxTY29w
ZTsKIApAQCAtODUsNiArOTUsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NB
TlZBUykKICAgICBSZWZQdHI8V29ya2VyQW5pbWF0aW9uQ29udHJvbGxlcj4gbV93b3JrZXJBbmlt
YXRpb25Db250cm9sbGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKFdFQl9SVEMpCisgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxKU1JUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyQ29uc3RydWN0b3I+PiBt
X3J0Y1J0cFRyYW5zZm9ybWVyQ29uc3RydWN0b3JNYXA7CisgICAgUmVmUHRyPE1lc3NhZ2VQb3J0
PiBtX3BlbmRpbmdSVENUcmFuc2ZvbWVyTWVzc2FnZVBvcnQ7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRp
Y2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5pZGwKaW5kZXggMmQwY2U4Mjk1MWZiZTk5N2E4YmI1OGE3
ZDZiOGY4M2RmNjE1Njc3MS4uOGNlMzg0MmMyODM1ZjE3ODIzMjgxYzU0YzM2NzAyNTdmZjUxMzRm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5pZGwKQEAgLTQ4LDMgKzQ4LDUgQEAKIH07CiAKIFtDb25kaXRpb25hbD1PRkZT
Q1JFRU5fQ0FOVkFTLCBFbmFibGVkQXRSdW50aW1lPU9mZnNjcmVlbkNhbnZhc10gRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUgaW5jbHVkZXMgQW5pbWF0aW9uRnJhbWVQcm92aWRlcjsKKy8vIEZJ
WE1FOiBFbmFibGUgdGhpcyBiYXNlZCBvbiBXZWJSVENJbnNlcnRhYmxlU3RyZWFtcyBzZXR0aW5n
LgorW0NvbmRpdGlvbmFsPVdFQl9SVENdIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIGluY2x1
ZGVzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybVByb3ZpZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIu
Y3BwCmluZGV4IDgwODMzNWQwMjc0MWZjOTgzOTVkOWNkMjc5ZWJlNTljMjMzMDBlMTQuLjYyZjkx
N2EzNjc4MTlkZWMzY2Q0MTBkOTc2Njk1Y2VlNjJmNmQ0YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyYXRlZ2llcy5oIgorI2luY2x1ZGUgIlJUQ1J0cFNjcmlwdFRyYW5zZm9ybS5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKQEAgLTIzMCw0ICsyMzEsMjggQEAgdm9p
ZCBXb3JrZXI6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShXRUJfUlRDKQordm9pZCBXb3JrZXI6OmFkZFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKFN0
cmluZyYmIG5hbWUpCit7CisgICAgbV90cmFuc2Zvcm1lcnMuYWRkKFdURk1vdmUobmFtZSkpOwor
fQorCit2b2lkIFdvcmtlcjo6Y3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoY29uc3QgU3Ry
aW5nJiBuYW1lLCBUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0IHBvcnQsIFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSYgdHJhbnNmb3JtKQoreworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHRQcm94eS5wb3N0VGFza1RvV29ya2VyR2xv
YmFsU2NvcGUoW25hbWUgPSBuYW1lLmlzb2xhdGVkQ29weSgpLCBwb3J0LCB0cmFuc2Zvcm0gPSBt
YWtlUmVmKHRyYW5zZm9ybSldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICB0cmFu
c2Zvcm0tPnNldFRyYW5zZm9ybWVyKGRvd25jYXN0PERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5jcmVhdGVSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcihXVEZNb3ZlKG5hbWUpLCBw
b3J0KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RyYW5zZm9ybSA9IFdURk1vdmUodHJh
bnNmb3JtKV0geyB9KTsKKyAgICB9KTsKKworfQorCit2b2lkIFdvcmtlcjo6cG9zdFRhc2tUb1dv
cmtlckdsb2JhbFNjb3BlKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYm
IHRhc2spCit7CisgICAgbV9jb250ZXh0UHJveHkucG9zdFRhc2tUb1dvcmtlckdsb2JhbFNjb3Bl
KFdURk1vdmUodGFzaykpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDY3ZjRiMmI1OGFiNWFkZWZmNmZjZDFjZDk1OWQ0YjYz
YjlmZjU5NWQuLjUzZjVlNmZmZjI3YzlmYTNlNWMwZTAxZjBmNmM0MmM2Y2I2ZjlkMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtNDUsNiArNDUsOCBAQCBjbGFzcyBKU1ZhbHVlOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybTsKK2NsYXNz
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiBjbGFzcyBXb3JrZXJTY3JpcHRMb2FkZXI7
CkBAIC03MCw2ICs3MiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZl
bnQmKSBmaW5hbDsKIAorI2lmIEVOQUJMRShXRUJfUlRDKQorICAgIHZvaWQgYWRkUlRDUnRwU2Ny
aXB0VHJhbnNmb3JtZXIoU3RyaW5nJiYpOworICAgIGJvb2wgaGFzUlRDUnRwU2NyaXB0VHJhbnNm
b3JtZXIoY29uc3QgU3RyaW5nJiBuYW1lKSB7IHJldHVybiBtX3RyYW5zZm9ybWVycy5jb250YWlu
cyhuYW1lKTsgfQorICAgIHZvaWQgY3JlYXRlUlRDUnRwU2NyaXB0VHJhbnNmb3JtZXIoY29uc3Qg
U3RyaW5nJiwgVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCwgUlRDUnRwU2NyaXB0VHJhbnNmb3JtJik7
CisgICAgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OlJ1bnRpbWVGbGFncywgY29u
c3QgT3B0aW9ucyYpOwogCkBAIC0xMDAsNiArMTA5LDkgQEAgcHJpdmF0ZToKICAgICBKU0M6OlJ1
bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKICAgICBEZXF1ZTxSZWZQdHI8RXZlbnQ+PiBtX3Bl
bmRpbmdFdmVudHM7CiAgICAgYm9vbCBtX3dhc1Rlcm1pbmF0ZWQgeyBmYWxzZSB9OworI2lmIEVO
QUJMRShXRUJfUlRDKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3RyYW5zZm9ybWVyczsKKyNlbmRp
ZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAppbmRleCA1NmRhMTIwN2I3Nzc5ZjJlYTdiYWU2
YWI3MzZmOWQyYzk1NGY3MjQ0Li40MDAwM2MzZTAxMDk5OTYwZjY0Nzg2MWU3MDE2ODdkMGUzNzFk
NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3Bl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaApAQCAtMzMsMTEgKzMzLDEzIEBACiAKICNpbmNsdWRlICJNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1J1bnRpbWVGbGFncy5oPgorI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFdvcmtlcjsKIGVu
dW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgOiB1aW50OF90OwogCkBAIC00OSw2ICs1MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Ym9vbCBpc09ubGluZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZWZlcnJlclBv
bGljeSwgSlNDOjpSdW50aW1lRmxhZ3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRl
V29ya2VyR2xvYmFsU2NvcGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9X
b3JrZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShGdW5jdGlvbjx2b2lkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdvcmtlck9iamVjdERlc3Ry
b3llZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJv
b2wgaXNPbmxpbmUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAKaW5kZXggYTYxYjQxNDg2MzNiZGYyMGQ1MmJlNTc2NGRhOWI1NTRlMTYx
MGQ3ZC4uMTFmZTA2ZmM2YTM2ZDg0Y2U3YzJlYWVlZjM5ZWNmNjE0OTQyMzU4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTExMCwy
NCArMTEwLDM4IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtCiAgICAgfSk7CiB9CiAKLXZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvV29ya2VyT2JqZWN0KEZ1bmN0aW9uPHZvaWQoV29ya2VyJik+JiYgZnVuY3Rp
b24pCiB7Ci0gICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKLSAgICAgICAgcmV0dXJuOworICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soW3RoaXMsIGZ1bmN0aW9uID0gV1RG
TW92ZShmdW5jdGlvbildKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogd29ya2VyT2Jq
ZWN0ID0gdGhpcy0+d29ya2VyT2JqZWN0KCk7CisgICAgICAgIGlmICghd29ya2VyT2JqZWN0IHx8
IGFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZnVuY3Rp
b24oKndvcmtlck9iamVjdCk7CisgICAgfSk7Cit9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0Q29udGV4dCkgbXV0YWJsZSB7Cit2b2lkIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJiBtZXNzYWdlKQoreworICAgIHBvc3RUYXNrVG9Xb3JrZXJHbG9iYWxTY29wZShbbWVz
c2FnZSA9IFdURk1vdmUobWVzc2FnZSldKGF1dG8mIHNjcmlwdENvbnRleHQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRDb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBzdGF0aWNfY2Fz
dDxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSY+KHNjcmlwdENvbnRleHQpOwogICAgICAgICBh
dXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0Q29udGV4dCwgV1RG
TW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAgICAgICAgY29udGV4dC5kaXNwYXRj
aEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3Nh
Z2UucmVsZWFzZU5vbk51bGwoKSkpOwogICAgICAgICBjb250ZXh0LnRocmVhZCgpLndvcmtlck9i
amVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGNvbnRleHQuaGFzUGVu
ZGluZ0FjdGl2aXR5KCkpOwogICAgIH0pOworfQorCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojpwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik+JiYgdGFzaykKK3sKKyAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV93b3JrZXJUaHJlYWQpIHsKLSAgICAgICAgKyttX3Vu
Y29uZmlybWVkTWVzc2FnZUNvdW50OwotICAgICAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwotICAgIH0gZWxzZQorICAgIGlmICghbV93b3JrZXJU
aHJlYWQpIHsKICAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVuZChtYWtlVW5pcXVlPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFdURk1vdmUodGFzaykpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291bnQ7CisgICAgbV93b3Jr
ZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBX
b3JrZXJNZXNzYWdpbmdQcm94eTo6c3VzcGVuZEZvckJhY2tGb3J3YXJkQ2FjaGUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDNiYjRkOWQ4
MTVhMjA5MTRhZDlmMjViMzRhODdjYTkxZTFjODViYWQuLmM1YjU3NWI5ZTYxNWIzZjNmNTk2YmZj
M2RmNjgzYzg3N2NjNjJiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IFN0cmluZyYg
c291cmNlQ29kZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
Ym9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIE1vbm90b25p
Y1RpbWUgdGltZU9yaWdpbiwgUmVmZXJyZXJQb2xpY3ksIEpTQzo6UnVudGltZUZsYWdzKSBmaW5h
bDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgZmluYWw7CiAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JikgZmluYWw7CisgICAgdm9pZCBwb3N0VGFza1RvV29ya2VyR2xvYmFsU2NvcGUoRnVuY3Rpb248
dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYpIGZpbmFsOwogICAgIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95
ZWQoKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25s
aW5lKSBmaW5hbDsKQEAgLTYyLDYgKzYzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRh
dGlvbiBvZiBXb3JrZXJPYmplY3RQcm94eS4KICAgICAvLyAoT25seSB1c2UgdGhlc2UgZnVuY3Rp
b25zIGluIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQuKQogICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmKSBmaW5hbDsKKyAgICB2b2lk
IHBvc3RUYXNrVG9Xb3JrZXJPYmplY3QoRnVuY3Rpb248dm9pZChXb3JrZXImKT4mJikgZmluYWw7
CiAgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgZmluYWw7CiAgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmpl
Y3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIGZpbmFsOwogICAgIHZvaWQgcmVwb3J0UGVuZGlu
Z0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT2JqZWN0UHJveHkuaAppbmRleCAyODAxMzE0ZTM3MmQzMGVlOWFjYmU1
NGI5ODY5OWRjZWRmNzhmOWNhLi44ZTkxZWM3OTQ0ZjMyNTliNjdkNWU0YTU1ODVkODU0NGNiY2Y3
MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCkBAIC0z
MiwxNCArMzIsMTkgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgiCiAj
aW5jbHVkZSAiV29ya2VyUmVwb3J0aW5nUHJveHkuaCIKKwogI2luY2x1ZGUgPG1lbW9yeT4KKyNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBX
b3JrZXI7CisKIC8vIEEgcHJveHkgdG8gdGFsayB0byB0aGUgd29ya2VyIG9iamVjdC4KIGNsYXNz
IFdvcmtlck9iamVjdFByb3h5IDogcHVibGljIFdvcmtlclJlcG9ydGluZ1Byb3h5IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrVG9Xb3JrZXJP
YmplY3QoRnVuY3Rpb248dm9pZChXb3JrZXImKT4mJikgeyB9OwogCiAgICAgdmlydHVhbCB2b2lk
IGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkpID0gMDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YWUxNjkzODQyNWIyZjg4MjBlYWM2MTFlOTIyOTIz
NDJhNjU2NzM1Li4wZGNhNDAzYWVlOTg1ZmIzMDIwNDBhZWFiY2JiNmM2NGZhNjE2Y2Q3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMTEtMjAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBSVENSdHBTY3JpcHRUcmFuc2Zvcm0K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTE0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIGh0dHAvd3B0
L3dlYnJ0Yy9yb3V0aW5lcy5qczogQWRkZWQuCisgICAgICAgIChjcmVhdGVDb25uZWN0aW9ucyk6
CisgICAgICAgICogaHR0cC93cHQvd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanM6IEFkZGVkLgor
ICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKToKKyAgICAgICAgKE1vY2tSVENSdHBUcmFu
c2Zvcm1lci5wcm90b3R5cGUuc3RhcnQpOgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVy
LnByb3RvdHlwZS5wcm9jZXNzKToKKyAgICAgICAgKiBodHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRy
YW5zZm9ybS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy9z
ZnJhbWUtdHJhbnNmb3JtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnJ0Yy93
ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3dl
YnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvd2Vi
cnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogd2VicnRjL3NjcmlwdC10cmFuc2Zvcm0uanM6IEFkZGVk
LgorICAgICAgICAoTW9ja1JUQ1J0cFRyYW5zZm9ybWVyKToKKyAgICAgICAgKE1vY2tSVENSdHBU
cmFuc2Zvcm1lci5wcm90b3R5cGUuc3RhcnQpOgorCiAyMDIwLTExLTE5ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgUlRDUGVlckNv
bm5lY3Rpb24ub25pY2VjYW5kaWRhdGVlcnJvciBldmVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VicnRjL3JvdXRpbmVzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
cnRjL3JvdXRpbmVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4ZGI3MmY2NWQxNzY5NjFlYTc5N2M5ZGM0ODJi
ZDBiNTFlZjkzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJy
dGMvcm91dGluZXMuanMKQEAgLTAsMCArMSwyOTkgQEAKKy8vIFRlc3QgaW5zcGlyZWQgZnJvbSBo
dHRwczovL3dlYnJ0Yy5naXRodWIuaW8vc2FtcGxlcy8KK3ZhciBsb2NhbENvbm5lY3Rpb247Cit2
YXIgcmVtb3RlQ29ubmVjdGlvbjsKKworZnVuY3Rpb24gY3JlYXRlQ29ubmVjdGlvbnMoc2V0dXBM
b2NhbENvbm5lY3Rpb24sIHNldHVwUmVtb3RlQ29ubmVjdGlvbiwgb3B0aW9ucyA9IHsgfSkgewor
ICAgIGxvY2FsQ29ubmVjdGlvbiA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIHJlbW90
ZUNvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAgICByZW1vdGVDb25uZWN0
aW9uLm9uaWNlY2FuZGlkYXRlID0gKGV2ZW50KSA9PiB7IGljZUNhbGxiYWNrMihldmVudCwgb3B0
aW9ucy5maWx0ZXJPdXRJQ0VDYW5kaWRhdGUpIH07CisKKyAgICBsb2NhbENvbm5lY3Rpb24ub25p
Y2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHsgaWNlQ2FsbGJhY2sxKGV2ZW50LCBvcHRpb25zLmZp
bHRlck91dElDRUNhbmRpZGF0ZSkgfTsKKworICAgIFByb21pc2UucmVzb2x2ZShzZXR1cExvY2Fs
Q29ubmVjdGlvbihsb2NhbENvbm5lY3Rpb24pKS50aGVuKCgpID0+IHsKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZShzZXR1cFJlbW90ZUNvbm5lY3Rpb24ocmVtb3RlQ29ubmVjdGlvbikp
OworICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICBsb2NhbENvbm5lY3Rpb24uY3JlYXRlT2Zm
ZXIoKS50aGVuKChkZXNjKSA9PiBnb3REZXNjcmlwdGlvbjEoZGVzYywgb3B0aW9ucyksIG9uQ3Jl
YXRlU2Vzc2lvbkRlc2NyaXB0aW9uRXJyb3IpOworICAgIH0pOworCisgICAgcmV0dXJuIFtsb2Nh
bENvbm5lY3Rpb24sIHJlbW90ZUNvbm5lY3Rpb25dCit9CisKK2Z1bmN0aW9uIGNsb3NlQ29ubmVj
dGlvbnMoKQoreworICAgIGxvY2FsQ29ubmVjdGlvbi5jbG9zZSgpOworICAgIHJlbW90ZUNvbm5l
Y3Rpb24uY2xvc2UoKTsKK30KKworZnVuY3Rpb24gb25DcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25F
cnJvcihlcnJvcikKK3sKKyAgICBhc3NlcnRfdW5yZWFjaGVkKCk7Cit9CisKK2Z1bmN0aW9uIGdv
dERlc2NyaXB0aW9uMShkZXNjLCBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLm9ic2VydmVP
ZmZlcikgeworICAgICAgICBjb25zdCByZXN1bHQgPSBvcHRpb25zLm9ic2VydmVPZmZlcihkZXNj
KTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIGRlc2MgPSByZXN1bHQ7CisgICAg
fQorCisgICAgbG9jYWxDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oZGVzYyk7CisgICAg
cmVtb3RlQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjKS50aGVuKCgpID0+IHsK
KyAgICAgICAgcmVtb3RlQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoKS50aGVuKChkZXNjKSA9PiBn
b3REZXNjcmlwdGlvbjIoZGVzYywgb3B0aW9ucyksIG9uQ3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9u
RXJyb3IpOworICAgIH0pOworfQorCitmdW5jdGlvbiBnb3REZXNjcmlwdGlvbjIoZGVzYywgb3B0
aW9ucykKK3sKKyAgICBpZiAob3B0aW9ucy5vYnNlcnZlQW5zd2VyKQorICAgICAgICBvcHRpb25z
Lm9ic2VydmVBbnN3ZXIoZGVzYyk7CisKKyAgICByZW1vdGVDb25uZWN0aW9uLnNldExvY2FsRGVz
Y3JpcHRpb24oZGVzYyk7CisgICAgbG9jYWxDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9u
KGRlc2MpOworfQorCitmdW5jdGlvbiBpY2VDYWxsYmFjazEoZXZlbnQsIGZpbHRlck91dElDRUNh
bmRpZGF0ZSkKK3sKKyAgICBpZiAoZmlsdGVyT3V0SUNFQ2FuZGlkYXRlICYmIGZpbHRlck91dElD
RUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpKQorICAgICAgICByZXR1cm47CisKKyAgICByZW1v
dGVDb25uZWN0aW9uLmFkZEljZUNhbmRpZGF0ZShldmVudC5jYW5kaWRhdGUpLnRoZW4ob25BZGRJ
Y2VDYW5kaWRhdGVTdWNjZXNzLCBvbkFkZEljZUNhbmRpZGF0ZUVycm9yKTsKK30KKworZnVuY3Rp
b24gaWNlQ2FsbGJhY2syKGV2ZW50LCBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUpCit7CisgICAgaWYg
KGZpbHRlck91dElDRUNhbmRpZGF0ZSAmJiBmaWx0ZXJPdXRJQ0VDYW5kaWRhdGUoZXZlbnQuY2Fu
ZGlkYXRlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbG9jYWxDb25uZWN0aW9uLmFkZEljZUNh
bmRpZGF0ZShldmVudC5jYW5kaWRhdGUpLnRoZW4ob25BZGRJY2VDYW5kaWRhdGVTdWNjZXNzLCBv
bkFkZEljZUNhbmRpZGF0ZUVycm9yKTsKK30KKworZnVuY3Rpb24gb25BZGRJY2VDYW5kaWRhdGVT
dWNjZXNzKCkKK3sKK30KKworZnVuY3Rpb24gb25BZGRJY2VDYW5kaWRhdGVFcnJvcihlcnJvcikK
K3sKKyAgICBjb25zb2xlLmxvZygiYWRkSWNlQ2FuZGlkYXRlIGVycm9yOiAiICsgZXJyb3IpCisg
ICAgYXNzZXJ0X3VucmVhY2hlZCgpOworfQorCithc3luYyBmdW5jdGlvbiByZW5lZ290aWF0ZShw
YzEsIHBjMikKK3sKKyAgICBsZXQgZCA9IGF3YWl0IHBjMS5jcmVhdGVPZmZlcigpOworICAgIGF3
YWl0IHBjMS5zZXRMb2NhbERlc2NyaXB0aW9uKGQpOworICAgIGF3YWl0IHBjMi5zZXRSZW1vdGVE
ZXNjcmlwdGlvbihkKTsKKyAgICBkID0gYXdhaXQgcGMyLmNyZWF0ZUFuc3dlcigpOworICAgIGF3
YWl0IHBjMS5zZXRSZW1vdGVEZXNjcmlwdGlvbihkKTsKKyAgICBhd2FpdCBwYzIuc2V0TG9jYWxE
ZXNjcmlwdGlvbihkKTsKK30KKworZnVuY3Rpb24gYW5hbHlzZUF1ZGlvKHN0cmVhbSwgZHVyYXRp
b24sIGNvbnRleHQpCit7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3Qp
ID0+IHsKKyAgICAgICAgdmFyIHNvdXJjZU5vZGUgPSBjb250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFt
U291cmNlKHN0cmVhbSk7CisKKyAgICAgICAgdmFyIGFuYWx5c2VyID0gY29udGV4dC5jcmVhdGVB
bmFseXNlcigpOworICAgICAgICB2YXIgZ2FpbiA9IGNvbnRleHQuY3JlYXRlR2FpbigpOworCisg
ICAgICAgIHZhciByZXN1bHRzID0geyBoZWFyZEh1bTogZmFsc2UsIGhlYXJkQmlwOiBmYWxzZSwg
aGVhcmRCb3A6IGZhbHNlLCBoZWFyZE5vaXNlOiBmYWxzZSB9OworCisgICAgICAgIGFuYWx5c2Vy
LmZmdFNpemUgPSAyMDQ4OworICAgICAgICBhbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQg
PSAwOworICAgICAgICBhbmFseXNlci5taW5EZWNpYmVscyA9IC0xMDA7CisgICAgICAgIGFuYWx5
c2VyLm1heERlY2liZWxzID0gMDsKKyAgICAgICAgZ2Fpbi5nYWluLnZhbHVlID0gMDsKKworICAg
ICAgICBzb3VyY2VOb2RlLmNvbm5lY3QoYW5hbHlzZXIpOworICAgICAgICBhbmFseXNlci5jb25u
ZWN0KGdhaW4pOworICAgICAgICBnYWluLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisK
KyAgICAgICBmdW5jdGlvbiBhbmFseXNlKCkgeworICAgICAgICAgICB2YXIgZnJlcURvbWFpbiA9
IG5ldyBVaW50OEFycmF5KGFuYWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50KTsKKyAgICAgICAgICAg
YW5hbHlzZXIuZ2V0Qnl0ZUZyZXF1ZW5jeURhdGEoZnJlcURvbWFpbik7CisKKyAgICAgICAgICAg
dmFyIGhhc0ZyZXF1ZW5jeSA9IGV4cGVjdGVkRnJlcXVlbmN5ID0+IHsKKyAgICAgICAgICAgICAg
ICB2YXIgYmluID0gTWF0aC5mbG9vcihleHBlY3RlZEZyZXF1ZW5jeSAqIGFuYWx5c2VyLmZmdFNp
emUgLyBjb250ZXh0LnNhbXBsZVJhdGUpOworICAgICAgICAgICAgICAgIHJldHVybiBiaW4gPCBm
cmVxRG9tYWluLmxlbmd0aCAmJiBmcmVxRG9tYWluW2Jpbl0gPj0gMTAwOworICAgICAgICAgICB9
OworCisgICAgICAgICAgIGlmICghcmVzdWx0cy5oZWFyZEh1bSkKKyAgICAgICAgICAgICAgICBy
ZXN1bHRzLmhlYXJkSHVtID0gaGFzRnJlcXVlbmN5KDE1MCk7CisKKyAgICAgICAgICAgaWYgKCFy
ZXN1bHRzLmhlYXJkQmlwKQorICAgICAgICAgICAgICAgcmVzdWx0cy5oZWFyZEJpcCA9IGhhc0Zy
ZXF1ZW5jeSgxNTAwKTsKKworICAgICAgICAgICBpZiAoIXJlc3VsdHMuaGVhcmRCb3ApCisgICAg
ICAgICAgICAgICAgcmVzdWx0cy5oZWFyZEJvcCA9IGhhc0ZyZXF1ZW5jeSg1MDApOworCisgICAg
ICAgICAgIGlmICghcmVzdWx0cy5oZWFyZE5vaXNlKQorICAgICAgICAgICAgICAgIHJlc3VsdHMu
aGVhcmROb2lzZSA9IGhhc0ZyZXF1ZW5jeSgzMDAwKTsKKworICAgICAgICAgICBpZiAocmVzdWx0
cy5oZWFyZEh1bSAmJiByZXN1bHRzLmhlYXJkQmlwICYmIHJlc3VsdHMuaGVhcmRCb3AgJiYgcmVz
dWx0cy5oZWFyZE5vaXNlKQorICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfTsKKwor
ICAgICAgIGZ1bmN0aW9uIGRvbmUoKSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91
dCk7CisgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKKyAgICAgICAgICAgIHJl
c29sdmUocmVzdWx0cyk7CisgICAgICAgfQorCisgICAgICAgIHZhciB0aW1lb3V0ID0gc2V0VGlt
ZW91dChkb25lLCAzICogZHVyYXRpb24pOworICAgICAgICB2YXIgaW50ZXJ2YWwgPSBzZXRJbnRl
cnZhbChhbmFseXNlLCBkdXJhdGlvbiAvIDMwKTsKKyAgICAgICAgYW5hbHlzZSgpOworICAgIH0p
OworfQorCitmdW5jdGlvbiB3YWl0Rm9yKGR1cmF0aW9uKQoreworICAgIHJldHVybiBuZXcgUHJv
bWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkdXJhdGlvbikpOworfQorCitm
dW5jdGlvbiB3YWl0Rm9yVmlkZW9TaXplKHZpZGVvLCB3aWR0aCwgaGVpZ2h0LCBjb3VudCkKK3sK
KyAgICBpZiAodmlkZW8udmlkZW9XaWR0aCA9PT0gd2lkdGggJiYgdmlkZW8udmlkZW9IZWlnaHQg
PT09IGhlaWdodCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgidmlkZW8gaGFzIGV4
cGVjdGVkIHNpemUiKTsKKworICAgIGlmIChjb3VudCA9PT0gdW5kZWZpbmVkKQorICAgICAgICBj
b3VudCA9IDA7CisgICAgaWYgKCsrY291bnQgPiAyMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2Uu
cmVqZWN0KCJ3YWl0Rm9yVmlkZW9TaXplIHRpbWVkIG91dCwgZXhwZWN0ZWQgIiArIHdpZHRoICsg
IngiKyBoZWlnaHQgKyAiIGJ1dCBnb3QgIiArIHZpZGVvLnZpZGVvV2lkdGggKyAieCIgKyB2aWRl
by52aWRlb0hlaWdodCk7CisKKyAgICByZXR1cm4gd2FpdEZvcigxMDApLnRoZW4oKCkgPT4gewor
ICAgICAgICByZXR1cm4gd2FpdEZvclZpZGVvU2l6ZSh2aWRlbywgd2lkdGgsIGhlaWdodCwgY291
bnQpOworICAgIH0pOworfQorCithc3luYyBmdW5jdGlvbiBkb0h1bUFuYWx5c2lzKHN0cmVhbSwg
ZXhwZWN0ZWQpCit7CisgICAgdmFyIGNvbnRleHQgPSBuZXcgQXVkaW9Db250ZXh0KCk7CisgICAg
Zm9yICh2YXIgY3B0ciA9IDA7IGNwdHIgPCAyMDsgY3B0cisrKSB7CisgICAgICAgIHZhciByZXN1
bHRzID0gYXdhaXQgYW5hbHlzZUF1ZGlvKHN0cmVhbSwgMjAwLCBjb250ZXh0KTsKKyAgICAgICAg
aWYgKHJlc3VsdHMuaGVhcmRIdW0gPT09IGV4cGVjdGVkKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoNTApOworICAgIH0KKyAgICBhd2FpdCBjb250ZXh0
LmNsb3NlKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitmdW5jdGlvbiBpc1ZpZGVvQmxhY2so
Y2FudmFzLCB2aWRlbywgc3RhcnRYLCBzdGFydFksIGdyYWJiZWRXaWR0aCwgZ3JhYmJlZEhlaWdo
dCkKK3sKKyAgICBjYW52YXMud2lkdGggPSB2aWRlby52aWRlb1dpZHRoOworICAgIGNhbnZhcy5o
ZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodDsKKyAgICBpZiAoIWdyYWJiZWRIZWlnaHQpIHsKKyAg
ICAgICAgc3RhcnRYID0gMTA7CisgICAgICAgIHN0YXJ0WSA9IDEwOworICAgICAgICBncmFiYmVk
V2lkdGggPSBjYW52YXMud2lkdGggLSAyMDsKKyAgICAgICAgZ3JhYmJlZEhlaWdodCA9IGNhbnZh
cy5oZWlnaHQgLSAyMDsKKyAgICB9CisKKyAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3
SW1hZ2UodmlkZW8sIDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7CisKKyAgICBp
bWFnZURhdGEgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5nZXRJbWFnZURhdGEoc3RhcnRYLCBz
dGFydFksIGdyYWJiZWRXaWR0aCwgZ3JhYmJlZEhlaWdodCk7CisgICAgZGF0YSA9IGltYWdlRGF0
YS5kYXRhOworICAgIGZvciAodmFyIGNwdHIgPSAwOyBjcHRyIDwgZ3JhYmJlZFdpZHRoICogZ3Jh
YmJlZEhlaWdodDsgKytjcHRyKSB7CisgICAgICAgIC8vIEFwcHJveGltYXRpdmVseSBibGFjayBw
aXhlbHMuCisgICAgICAgIGlmIChkYXRhWzQgKiBjcHRyXSA+IDMwIHx8IGRhdGFbNCAqIGNwdHIg
KyAxXSA+IDMwIHx8IGRhdGFbNCAqIGNwdHIgKyAyXSA+IDMwKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYXN5bmMgZnVuY3Rpb24gY2hl
Y2tWaWRlb0JsYWNrKGV4cGVjdGVkLCBjYW52YXMsIHZpZGVvLCBlcnJvck1lc3NhZ2UsIGNvdW50
ZXIpCit7CisgICAgaWYgKGlzVmlkZW9CbGFjayhjYW52YXMsIHZpZGVvKSA9PT0gZXhwZWN0ZWQp
CisgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKworICAgIGlmIChjb3VudGVyID09
PSB1bmRlZmluZWQpCisgICAgICAgIGNvdW50ZXIgPSAwOworICAgIGlmIChjb3VudGVyID4gNDAw
KSB7CisgICAgICAgIGlmICghZXJyb3JNZXNzYWdlKQorICAgICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gImNoZWNrVmlkZW9CbGFjayB0aW1lZCBvdXQgZXhwZWN0aW5nICIgKyBleHBlY3RlZDsKKyAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yTWVzc2FnZSk7CisgICAgfQorCisgICAg
YXdhaXQgd2FpdEZvcig1MCk7CisgICAgcmV0dXJuIGNoZWNrVmlkZW9CbGFjayhleHBlY3RlZCwg
Y2FudmFzLCB2aWRlbywgZXJyb3JNZXNzYWdlLCArK2NvdW50ZXIpOworfQorCitmdW5jdGlvbiBz
ZXRDb2RlYyhzZHAsIGNvZGVjKQoreworICAgIHJldHVybiBzZHAuc3BsaXQoJ1xyXG4nKS5maWx0
ZXIobGluZSA9PiB7CisgICAgICAgIHJldHVybiBsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAt
MSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiAobGluZS5pbmRleE9mKCdh
PXJ0cG1hcCcpID09PSAtMSB8fCBsaW5lLmluZGV4T2YoY29kZWMpICE9PSAtMSk7CisgICAgfSku
am9pbignXHJcbicpOworfQorCithc3luYyBmdW5jdGlvbiBnZXRUeXBlZFN0YXRzKGNvbm5lY3Rp
b24sIHR5cGUpCit7CisgICAgY29uc3QgcmVwb3J0ID0gYXdhaXQgY29ubmVjdGlvbi5nZXRTdGF0
cygpOworICAgIHZhciBzdGF0czsKKyAgICByZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsK
KyAgICAgICAgaWYgKHN0YXRJdGVtLnR5cGUgPT09IHR5cGUpCisgICAgICAgICAgICBzdGF0cyA9
IHN0YXRJdGVtOworICAgIH0pOworICAgIHJldHVybiBzdGF0czsKK30KKworZnVuY3Rpb24gZ2V0
UmVjZWl2ZWRUcmFja1N0YXRzKGNvbm5lY3Rpb24pCit7CisgICAgcmV0dXJuIGNvbm5lY3Rpb24u
Z2V0U3RhdHMoKS50aGVuKChyZXBvcnQpID0+IHsKKyAgICAgICAgdmFyIHN0YXRzOworICAgICAg
ICByZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAgICAgICAgIGlmIChzdGF0SXRl
bS50eXBlID09PSAidHJhY2siKSB7CisgICAgICAgICAgICAgICAgc3RhdHMgPSBzdGF0SXRlbTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBzdGF0czsKKyAgICB9
KTsKK30KKworYXN5bmMgZnVuY3Rpb24gY29tcHV0ZUZyYW1lUmF0ZShzdHJlYW0sIHZpZGVvKQor
eworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGludGVybmFscy5vYnNlcnZl
TWVkaWFTdHJlYW1UcmFjayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CisgICAgICAgIGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDAwKSk7IAor
ICAgICAgICByZXR1cm4gaW50ZXJuYWxzLnRyYWNrVmlkZW9TYW1wbGVDb3VudDsKKyAgICB9CisK
KyAgICBsZXQgY29ubmVjdGlvbjsKKyAgICB2aWRlby5zcmNPYmplY3QgPSBhd2FpdCBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChm
aXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFj
ayhzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgc3RyZWFtKTsKKyAgICAgICAgfSwgKHNlY29u
ZENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24gPSBzZWNvbmRDb25uZWN0
aW9uOworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNrRXZlbnQuc3RyZWFtc1swXSk7Cisg
ICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWpl
Y3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIH0pOworCisgICAgYXdhaXQgdmlkZW8u
cGxheSgpOworCisgICAgY29uc3Qgc3RhdHMxID0gYXdhaXQgZ2V0UmVjZWl2ZWRUcmFja1N0YXRz
KGNvbm5lY3Rpb24pOworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91
dChyZXNvbHZlLCAxMDAwKSk7IAorICAgIGNvbnN0IHN0YXRzMiA9IGF3YWl0IGdldFJlY2VpdmVk
VHJhY2tTdGF0cyhjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gKHN0YXRzMi5mcmFtZXNSZWNlaXZl
ZCAtIHN0YXRzMS5mcmFtZXNSZWNlaXZlZCkgKiAxMDAwIC8gKHN0YXRzMi50aW1lc3RhbXAgLSBz
dGF0czEudGltZXN0YW1wKTsKK30KKworZnVuY3Rpb24gc2V0SDI2NEJhc2VsaW5lQ29kZWMoc2Rw
KQoreworICAgIGNvbnN0IGxpbmVzID0gc2RwLnNwbGl0KCdcclxuJyk7CisgICAgY29uc3QgaDI2
NExpbmVzID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gbGluZS5pbmRleE9mKCJhPWZtdHAiKSA9PT0g
MCAmJiBsaW5lLmluZGV4T2YoIjQyZTAxZiIpICE9PSAtMSk7CisgICAgY29uc3QgYmFzZWxpbmVO
dW1iZXIgPSBoMjY0TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcgJylbMF07CisgICAgcmV0
dXJuIGxpbmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJuIChsaW5lLmluZGV4T2Yo
J2E9Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1mYicpID09PSAtMSAmJiBs
aW5lLmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5lLmluZGV4T2YoYmFzZWxpbmVO
dW1iZXIpICE9PSAtMTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CisKK2Z1bmN0aW9uIHNldEgy
NjRIaWdoQ29kZWMoc2RwKQoreworICAgIGNvbnN0IGxpbmVzID0gc2RwLnNwbGl0KCdcclxuJyk7
CisgICAgY29uc3QgaDI2NExpbmVzID0gbGluZXMuZmlsdGVyKGxpbmUgPT4gbGluZS5pbmRleE9m
KCJhPWZtdHAiKSA9PT0gMCAmJiBsaW5lLmluZGV4T2YoIjY0MGMxZiIpICE9PSAtMSk7CisgICAg
Y29uc3QgYmFzZWxpbmVOdW1iZXIgPSBoMjY0TGluZXNbMF0uc3Vic3RyaW5nKDYpLnNwbGl0KCcg
JylbMF07CisgICAgcmV0dXJuIGxpbmVzLmZpbHRlcihsaW5lID0+IHsKKyAgICAgICAgcmV0dXJu
IChsaW5lLmluZGV4T2YoJ2E9Zm10cCcpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRjcC1m
YicpID09PSAtMSAmJiBsaW5lLmluZGV4T2YoJ2E9cnRwbWFwJykgPT09IC0xKSB8fCBsaW5lLmlu
ZGV4T2YoYmFzZWxpbmVOdW1iZXIpICE9PSAtMTsKKyAgICB9KS5qb2luKCdcclxuJyk7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5q
cyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZiMDc2ZGU4MzNmMWJmYzUzZmExNTQzZWFmOTBmOWY2MGUwM2YyZDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5q
cwpAQCAtMCwwICsxLDMwIEBACitjbGFzcyBNb2NrUlRDUnRwVHJhbnNmb3JtZXIgZXh0ZW5kcyBS
VENSdHBTY3JpcHRUcmFuc2Zvcm1lciB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHN1
cGVyKCk7CisgICAgICAgIHRoaXMucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHRoaXMucG9y
dC5wb3N0TWVzc2FnZShldmVudC5kYXRhKTsKKyAgICB9CisgICAgc3RhcnQocmVhZGFibGVTdHJl
YW0sIHdyaXRhYmxlU3RyZWFtKQorICAgIHsKKyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgic3Rh
cnRlZCIpOworICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRhYmxlU3RyZWFtLmdldFJlYWRlcigp
OworICAgICAgICB0aGlzLndyaXRlciA9IHdyaXRhYmxlU3RyZWFtLmdldFdyaXRlcigpOworICAg
ICAgICB0aGlzLnByb2Nlc3MoKTsKKyAgICB9CisKKyAgICBwcm9jZXNzKCkKKyAgICB7CisgICAg
ICAgIHRoaXMucmVhZGVyLnJlYWQoKS50aGVuKGNodW5rID0+IHsKKyAgICAgICAgICAgIGlmIChj
aHVuay5kb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChjaHVu
ay52YWx1ZSBpbnN0YW5jZW9mIFJUQ0VuY29kZWRWaWRlb0ZyYW1lKQorICAgICAgICAgICAgICAg
IHNlbGYucG9zdE1lc3NhZ2UoInZpZGVvIGNodW5rIik7CisgICAgICAgICAgICBlbHNlIGlmIChj
aHVuay52YWx1ZSBpbnN0YW5jZW9mIFJUQ0VuY29kZWRBdWRpb0ZyYW1lKQorICAgICAgICAgICAg
ICAgIHNlbGYucG9zdE1lc3NhZ2UoImF1ZGlvIGNodW5rIik7CisgICAgICAgICAgICB0aGlzLndy
aXRlci53cml0ZShjaHVuay52YWx1ZSk7CisgICAgICAgICAgICB0aGlzLnByb2Nlc3MoKTsKKyAg
ICAgICAgfSk7CisgICAgfQorfTsKKworcmVnaXN0ZXJSVENSdHBTY3JpcHRUcmFuc2Zvcm1lcigi
TW9ja1JUQ1J0cFRyYW5zZm9ybSIsIE1vY2tSVENSdHBUcmFuc2Zvcm1lcik7CitzZWxmLnBvc3RN
ZXNzYWdlKCJyZWdpc3RlcmVkIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAwZTg2
ZGRkZTI5MzVkMWYwZjVhYzAyZGQzYTg3YzZhMmY3OGRlZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnJ0Yy9zZnJhbWUtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKKworUEFTUyBDYW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3Jtcwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvc2ZyYW1lLXRyYW5zZm9y
bS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFuc2Zvcm0uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYTA0ODgwZDE0NWFjZmI4MWQ3ZTk5YmYxMTM4NGEwODUzNTEzM2M3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3NmcmFtZS10cmFu
c2Zvcm0uaHRtbApAQCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNjcmlwdD4KKworcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTsKKyAg
ICBjb25zdCBzZW5kZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7Cisg
ICAgY29uc3QgcmVjZWl2ZXJUcmFuc2Zvcm0gPSBuZXcgUlRDUnRwU0ZyYW1lVHJhbnNmb3JtKCk7
CisgICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRlcjsK
KyAgICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJykuc2VuZGVyOwor
ICAgIGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBdOworICAgIGNvbnN0IHJl
Y2VpdmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0g
PSBzZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJh
bnNmb3JtOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+
IHNlbmRlcjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtKTsKKyAgICBhc3NlcnRfdGhyb3dz
X2RvbSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNlaXZlcjIudHJhbnNmb3JtID0gcmVj
ZWl2ZXJUcmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zv
cm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworCisgICAg
c2VuZGVyMS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSBudWxs
OworfSwgIkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zIik7CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZjlkNTZlZTg1ZTYwZTQ3MThkZjZkMDFjMzEzMWMxMTQ1NDRlNWU3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNyBAQAorCisKK1BBU1MgdHJhbnNmb3JtIG1lc3NhZ2luZworUEFTUyBD
YW5ub3QgcmV1c2UgYXR0YWNoZWQgdHJhbnNmb3JtcworUEFTUyBhdWRpbyBleGNoYW5nZSB3aXRo
IHRyYW5zZm9ybQorUEFTUyB2aWRlbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43ZTM5M2Q5ZTU0YWVkODM5NzA1ZWMxMWViMzM4Mjc3ODA5MGUxZjMyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRt
bApAQCAtMCwwICsxLDEzMiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgICAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisgICAgICAgIDx2aWRlbyBpZD0idmlkZW8xIiBhdXRvcGxheT48L3ZpZGVvPgor
ICAgICAgICA8dmlkZW8gaWQ9InZpZGVvMiIgYXV0b3BsYXk+PC92aWRlbz4KKyAgICAgICAgPHNj
cmlwdCBzcmMgPSJyb3V0aW5lcy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cithc3lu
YyBmdW5jdGlvbiB3YWl0Rm9yTWVzc2FnZSh3b3JrZXIsIGRhdGEpCit7CisgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOwor
ICAgICAgICBpZiAoZGF0YSA9PT0gcmVjZWl2ZWQpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBuZXcg
V29ya2VyKCdzY3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2
ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOwor
CisgICAgY29uc3QgdHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIs
ICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gdHJhbnNmb3JtLnBvcnQub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZl
KGV2ZW50LmRhdGEpKTsKKyAgICB0cmFuc2Zvcm0ucG9ydC5wb3N0TWVzc2FnZSgidGVzdCIpOwor
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgcHJvbWlzZSwgInRlc3QiKTsKK30sICJ0cmFuc2Zvcm0g
bWVzc2FnaW5nIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIHdvcmtl
ciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zvcm0uanMnKTsKKyAgICBjb25zdCBkYXRhID0g
YXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9
PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3Rl
cmVkIik7CisKKyAgICBjb25zdCBwYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbigpOworICAgIGNv
bnN0IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCAn
TW9ja1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3
IFJUQ1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7Cisg
ICAgY29uc3Qgc2VuZGVyMSA9IHBjLmFkZFRyYW5zY2VpdmVyKCdhdWRpbycpLnNlbmRlcjsKKyAg
ICBjb25zdCBzZW5kZXIyID0gcGMuYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJykuc2VuZGVyOworICAg
IGNvbnN0IHJlY2VpdmVyMSA9IHBjLmdldFJlY2VpdmVycygpWzBdOworICAgIGNvbnN0IHJlY2Vp
dmVyMiA9IHBjLmdldFJlY2VpdmVycygpWzFdOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBz
ZW5kZXJUcmFuc2Zvcm07CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNm
b3JtOworICAgIGFzc2VydF90aHJvd3NfZG9tKCJJbnZhbGlkU3RhdGVFcnJvciIsICgpID0+IHNl
bmRlcjIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtKTsKKyAgICBhc3NlcnRfdGhyb3dzX2Rv
bSgiSW52YWxpZFN0YXRlRXJyb3IiLCAoKSA9PiByZWNlaXZlcjIudHJhbnNmb3JtID0gcmVjZWl2
ZXJUcmFuc2Zvcm0pOworCisgICAgc2VuZGVyMS50cmFuc2Zvcm0gPSBzZW5kZXJUcmFuc2Zvcm07
CisgICAgcmVjZWl2ZXIxLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworCisgICAgc2Vu
ZGVyMS50cmFuc2Zvcm0gPSBudWxsOworICAgIHJlY2VpdmVyMS50cmFuc2Zvcm0gPSBudWxsOwor
fSwgIkNhbm5vdCByZXVzZSBhdHRhY2hlZCB0cmFuc2Zvcm1zIik7CisKK3Byb21pc2VfdGVzdChh
c3luYyAodGVzdCkgPT4geworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoJ3NjcmlwdC10cmFuc2Zv
cm0uanMnKTsKKyAgICBjb25zdCBkYXRhID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB3
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGRhdGEsICJyZWdpc3RlcmVkIik7CisgICAgY29uc3QgbG9jYWxTdHJlYW0g
PSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86IHRydWV9
KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0IHNlbmRlclRyYW5zZm9y
bSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCAnTW9ja1JUQ1J0cFRyYW5zZm9y
bScpOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJUQ1J0cFNjcmlwdFRyYW5z
Zm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisKKyAgICBjb25zdCBzdGFydGVk
UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVu
dCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisKKyAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5lY3Rp
b25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBjMSA9IGZpcnN0Q29ubmVj
dGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhsb2Nh
bFN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBz
ZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOworICAgICAgICB9LCAoc2Vjb25kQ29u
bmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29ubmVjdGlvbjsKKyAgICAg
ICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAg
ICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVyOworICAgICAgICAgICAg
ICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3JtOworICAgICAgICAgICAg
ICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBvdXQi
KSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IHN0YXJ0ZWRQcm9t
aXNlLCAic3RhcnRlZCIpOworCisgICAgYXdhaXQgd2FpdEZvck1lc3NhZ2Uod29ya2VyLCAiYXVk
aW8gY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJlYW07CisgICAgYXdhaXQg
dmlkZW8xLnBsYXkoKTsKK30sICJhdWRpbyBleGNoYW5nZSB3aXRoIHRyYW5zZm9ybSIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCdz
Y3JpcHQtdHJhbnNmb3JtLmpzJyk7CisgICAgY29uc3QgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gd29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5k
YXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhkYXRhLCAicmVnaXN0ZXJlZCIpOworCisgICAgY29u
c3QgbG9jYWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YSh7dmlkZW86IHRydWV9KTsKKworICAgIGxldCBzZW5kZXIsIHJlY2VpdmVyOworICAgIGNvbnN0
IHNlbmRlclRyYW5zZm9ybSA9IG5ldyBSVENSdHBTY3JpcHRUcmFuc2Zvcm0od29ya2VyLCAnTW9j
a1JUQ1J0cFRyYW5zZm9ybScpOworICAgIGNvbnN0IHJlY2VpdmVyVHJhbnNmb3JtID0gbmV3IFJU
Q1J0cFNjcmlwdFRyYW5zZm9ybSh3b3JrZXIsICdNb2NrUlRDUnRwVHJhbnNmb3JtJyk7CisKKyAg
ICBjb25zdCBzdGFydGVkUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gd29ya2VyLm9u
bWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisKKyAgICBjb25zdCBz
dHJlYW0gPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
IGNyZWF0ZUNvbm5lY3Rpb25zKChmaXJzdENvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIHBj
MSA9IGZpcnN0Q29ubmVjdGlvbjsKKyAgICAgICAgICAgIHNlbmRlciA9IGZpcnN0Q29ubmVjdGlv
bi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7
CisgICAgICAgICAgICBzZW5kZXIudHJhbnNmb3JtID0gc2VuZGVyVHJhbnNmb3JtOworICAgICAg
ICB9LCAoc2Vjb25kQ29ubmVjdGlvbikgPT4geworICAgICAgICAgICAgcGMyID0gc2Vjb25kQ29u
bmVjdGlvbjsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZXIgPSB0cmFja0V2ZW50LnJlY2VpdmVy
OworICAgICAgICAgICAgICAgIHJlY2VpdmVyLnRyYW5zZm9ybSA9IHJlY2VpdmVyVHJhbnNmb3Jt
OworICAgICAgICAgICAgICAgIHJlc29sdmUodHJhY2tFdmVudC5zdHJlYW1zWzBdKTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgi
VGVzdCB0aW1lZCBvdXQiKSwgNTAwMCk7CisgICAgfSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IHN0YXJ0ZWRQcm9taXNlLCAic3RhcnRlZCIpOworCisgICAgYXdhaXQgd2FpdEZvck1lc3Nh
Z2Uod29ya2VyLCAidmlkZW8gY2h1bmsiKTsKKworICAgIHZpZGVvMS5zcmNPYmplY3QgPSBzdHJl
YW07CisgICAgYXdhaXQgdmlkZW8xLnBsYXkoKTsKK30sICJ2aWRlbyBleGNoYW5nZSB3aXRoIHRy
YW5zZm9ybSIpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTI4ODFhZTZmZTJk
MmYzOWQ5MmI4YTNiZjJjMGJjMWIxM2I2ZjMwYi4uNWIxNjQ5ZjNmMjRhZmJiZjE1ZmQ1MDRlNzQ3
MmRjYmU5YmRiMjc4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTE3LDcgKzkxNyw3IEBAIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL3ZpZGVv
LXN0YXRzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwgWyBUaW1lb3V0IF0KIHdl
YmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL2NvbmN1cnJlbnRWaWRlb1BsYXliYWNrLmh0bWwgWyBU
aW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8yMTg3ODcgd2VicnRjL2ljZS1jYW5kaWRhdGUtc2RwTUxp
bmVJbmRleC5odG1sIFsgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMjE4Nzg3IHdlYnJ0Yy93ZWJy
dGMtdHJhbnNmb3JtLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMTg3ODcgaHR0cC93
cHQvd2VicnRjL3dlYnJ0Yy10cmFuc2Zvcm0uaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3Jn
L2IvMjE5MDY2IHdlYnJ0Yy9hdWRpby1zZnJhbWUuaHRtbCBbIEZhaWx1cmUgQ3Jhc2ggXQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy9zY3JpcHQtdHJhbnNmb3JtLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNjhjNjIyYmZj
MTFhY2UxZWIxZjFmY2M4ZDgyZDIyZmM0ODJkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy93ZWJydGMvc2NyaXB0LXRyYW5zZm9ybS5qcwpAQCAtMCwwICsxLDcgQEAKK2NsYXNzIE1v
Y2tSVENSdHBUcmFuc2Zvcm1lciBleHRlbmRzIFJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyIHsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsgfQorICAgIHN0YXJ0KHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0
cmVhbSkgeyByZWFkYWJsZVN0cmVhbS5waXBlVG8od3JpdGFibGVTdHJlYW0pOyB9Cit9OworCity
ZWdpc3RlclJUQ1J0cFNjcmlwdFRyYW5zZm9ybWVyKCJNb2NrUlRDUnRwVHJhbnNmb3JtIiwgTW9j
a1JUQ1J0cFRyYW5zZm9ybWVyKTsKK3NlbGYucG9zdE1lc3NhZ2UoInN0YXJ0ZWQiKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4ZjUxYjNjODAwYzVkN2FjNDkzZDcwMzMwMGFjZDY4
Mjc4ZjlmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJydGMvd2VicnRjLXRyYW5zZm9ybS1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSw1ICswLDAgQEAKLQotCi1QQVNTIGF1ZGlvIGV4Y2hhbmdlIHdpdGggdHJhbnNm
b3JtCi1QQVNTIHZpZGVvIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtCi0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMtdHJhbnNmb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJy
dGMvd2VicnRjLXRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
OWM1YTZkZmE1NzdiYTNiYTkwZWVhZTUyMGM2MzI1MTU0ZTFhZjUwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy93ZWJydGMt
dHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi08IWRvY3R5cGUg
aHRtbD4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Ci0gICAgICAgIDx0aXRsZT5UZXN0aW5nIG1lZGlhIGV4Y2hhbmdlIHdpdGggdHJhbnNmb3JtPC90
aXRsZT4KLSAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Ci0gICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgotICAgIDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHZp
ZGVvIGlkPSJ2aWRlbzEiIGF1dG9wbGF5PjwvdmlkZW8+Ci0gICAgICAgIDx2aWRlbyBpZD0idmlk
ZW8yIiBhdXRvcGxheT48L3ZpZGVvPgotICAgICAgICA8c2NyaXB0IHNyYyA9InJvdXRpbmVzLmpz
Ij48L3NjcmlwdD4KLSAgICAgICAgPHNjcmlwdD4KLXByb21pc2VfdGVzdChhc3luYyAodGVzdCkg
PT4gewotICAgIGlmICghd2luZG93LmludGVybmFscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
bGV0IHNlbmRlciwgcmVjZWl2ZXI7Ci0gICAgbGV0IHNlbmRlclRyYW5zZm9ybSA9IGludGVybmFs
cy5jcmVhdGVNb2NrUlRDUnRwVHJhbnNmb3JtKCk7Ci0gICAgbGV0IHJlY2VpdmVyVHJhbnNmb3Jt
ID0gaW50ZXJuYWxzLmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLQotICAgIGNvbnN0IGxv
Y2FsU3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1
ZGlvOiB0cnVlfSk7Ci0gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4gewotICAgICAgICBjcmVhdGVDb25uZWN0aW9ucygoZmlyc3RDb25uZWN0
aW9uKSA9PiB7Ci0gICAgICAgICAgICBwYzEgPSBmaXJzdENvbm5lY3Rpb247Ci0gICAgICAgICAg
ICBzZW5kZXIgPSBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOwotICAgICAgICAgICAgc2VuZGVyLnRyYW5zZm9ybSA9
IHNlbmRlclRyYW5zZm9ybTsKLSAgICAgICAgfSwgKHNlY29uZENvbm5lY3Rpb24pID0+IHsKLSAg
ICAgICAgICAgIHBjMiA9IHNlY29uZENvbm5lY3Rpb247Ci0gICAgICAgICAgICBzZWNvbmRDb25u
ZWN0aW9uLm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4gewotICAgICAgICAgICAgICAgIHJlY2Vp
dmVyID0gdHJhY2tFdmVudC5yZWNlaXZlcjsKLSAgICAgICAgICAgICAgICByZWNlaXZlci50cmFu
c2Zvcm0gPSByZWNlaXZlclRyYW5zZm9ybTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHRyYWNr
RXZlbnQuc3RyZWFtc1swXSk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAg
c2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQgb3V0IiksIDUwMDApOwotICAgIH0p
OwotCi0gICAgdmlkZW8xLnNyY09iamVjdCA9IHN0cmVhbTsKLSAgICBhd2FpdCB2aWRlbzEucGxh
eSgpOwotCi0gICAgbGV0IGNvdW50ZXIgPSAwOwotICAgIHdoaWxlICghcmVjZWl2ZXJUcmFuc2Zv
cm0uaXNQcm9jZXNzaW5nICYmIGNvdW50ZXIrKyA8IDEwMCkKLSAgICAgICAgYXdhaXQgbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7Ci0KLSAgICBhc3NlcnRf
dHJ1ZShzZW5kZXJUcmFuc2Zvcm0uaXNQcm9jZXNzaW5nLCAic2VuZGVyIik7Ci19LCAiYXVkaW8g
ZXhjaGFuZ2Ugd2l0aCB0cmFuc2Zvcm0iKTsKLQotcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9
PiB7Ci0gICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBs
ZXQgc2VuZGVyLCByZWNlaXZlcjsKLSAgICBsZXQgc2VuZGVyVHJhbnNmb3JtID0gaW50ZXJuYWxz
LmNyZWF0ZU1vY2tSVENSdHBUcmFuc2Zvcm0oKTsKLSAgICBsZXQgcmVjZWl2ZXJUcmFuc2Zvcm0g
PSBpbnRlcm5hbHMuY3JlYXRlTW9ja1JUQ1J0cFRyYW5zZm9ybSgpOwotCi0gICAgY29uc3QgbG9j
YWxTdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlk
ZW86IHRydWV9KTsKLQotICAgIGNvbnN0IHN0cmVhbSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGZpcnN0Q29ubmVj
dGlvbikgPT4gewotICAgICAgICAgICAgcGMxID0gZmlyc3RDb25uZWN0aW9uOwotICAgICAgICAg
ICAgc2VuZGVyID0gZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKLSAgICAgICAgICAgIHNlbmRlci50cmFuc2Zvcm0g
PSBzZW5kZXJUcmFuc2Zvcm07Ci0gICAgICAgIH0sIChzZWNvbmRDb25uZWN0aW9uKSA9PiB7Ci0g
ICAgICAgICAgICBwYzIgPSBzZWNvbmRDb25uZWN0aW9uOwotICAgICAgICAgICAgc2Vjb25kQ29u
bmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICByZWNl
aXZlciA9IHRyYWNrRXZlbnQucmVjZWl2ZXI7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZXIudHJh
bnNmb3JtID0gcmVjZWl2ZXJUcmFuc2Zvcm07Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cmFj
a0V2ZW50LnN0cmVhbXNbMF0pOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICAg
IHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0IHRpbWVkIG91dCIpLCA1MDAwKTsKLSAgICB9
KTsKLQotICAgIHZpZGVvMi5zcmNPYmplY3QgPSBzdHJlYW07Ci0gICAgYXdhaXQgdmlkZW8yLnBs
YXkoKTsKLQotICAgbGV0IGNvdW50ZXIgPSAwOwotICAgd2hpbGUgKCFyZWNlaXZlclRyYW5zZm9y
bS5pc1Byb2Nlc3NpbmcgJiYgY291bnRlcisrIDwgMTAwKQotICAgICAgIGF3YWl0IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkpOwotCi0gICAgYXNzZXJ0X3Ry
dWUoc2VuZGVyVHJhbnNmb3JtLmlzUHJvY2Vzc2luZywgInNlbmRlciIpOwotfSwgInZpZGVvIGV4
Y2hhbmdlIHdpdGggdHJhbnNmb3JtIik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgIDwvYm9keT4K
LTwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>